<?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>208090</bug_id>
          
          <creation_ts>2020-02-21 23:37:49 -0800</creation_ts>
          <short_desc>[GPUP] Implement Modern EME API in the GPU Process</short_desc>
          <delta_ts>2020-08-06 11:49:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>215232</dependson>
          <blocked>208583</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1621861</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-21 23:37:49 -0800</bug_when>
    <thetext>[GPUP] Implement Modern EME API in the GPU Process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621862</commentid>
    <comment_count>1</comment_count>
      <attachid>391455</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-21 23:49:50 -0800</bug_when>
    <thetext>Created attachment 391455
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621878</commentid>
    <comment_count>2</comment_count>
      <attachid>391460</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-22 09:05:28 -0800</bug_when>
    <thetext>Created attachment 391460
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621885</commentid>
    <comment_count>3</comment_count>
      <attachid>391463</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-22 10:35:10 -0800</bug_when>
    <thetext>Created attachment 391463
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621886</commentid>
    <comment_count>4</comment_count>
      <attachid>391464</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-22 11:25:36 -0800</bug_when>
    <thetext>Created attachment 391464
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621898</commentid>
    <comment_count>5</comment_count>
      <attachid>391467</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-22 14:24:05 -0800</bug_when>
    <thetext>Created attachment 391467
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621946</commentid>
    <comment_count>6</comment_count>
      <attachid>391473</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-22 21:06:50 -0800</bug_when>
    <thetext>Created attachment 391473
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622051</commentid>
    <comment_count>7</comment_count>
      <attachid>391509</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-23 21:18:56 -0800</bug_when>
    <thetext>Created attachment 391509
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622052</commentid>
    <comment_count>8</comment_count>
      <attachid>391510</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-23 21:23:00 -0800</bug_when>
    <thetext>Created attachment 391510
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622053</commentid>
    <comment_count>9</comment_count>
      <attachid>391511</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-23 21:27:04 -0800</bug_when>
    <thetext>Created attachment 391511
Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622054</commentid>
    <comment_count>10</comment_count>
      <attachid>391512</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-23 21:42:21 -0800</bug_when>
    <thetext>Created attachment 391512
Part 2: WebKit + SharedBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622055</commentid>
    <comment_count>11</comment_count>
      <attachid>391513</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-23 21:44:47 -0800</bug_when>
    <thetext>Created attachment 391513
Part 3: RemoteCDM (Depends on Parts 1 &amp; 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622056</commentid>
    <comment_count>12</comment_count>
      <attachid>391514</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-23 21:50:10 -0800</bug_when>
    <thetext>Created attachment 391514
Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622057</commentid>
    <comment_count>13</comment_count>
      <attachid>391515</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-23 21:54:48 -0800</bug_when>
    <thetext>Created attachment 391515
Part 2: WebKit + SharedBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622125</commentid>
    <comment_count>14</comment_count>
      <attachid>391513</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-02-24 06:09:01 -0800</bug_when>
    <thetext>Comment on attachment 391513
Part 3: RemoteCDM (Depends on Parts 1 &amp; 2)

This adds a lot of additional sync IPC. Can you help me understand why these all need to be synchronous?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622134</commentid>
    <comment_count>15</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-24 07:04:38 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #14)
&gt; Comment on attachment 391513 [details]
&gt; Part 3: RemoteCDM (Depends on Parts 1 &amp; 2)
&gt; 
&gt; This adds a lot of additional sync IPC. Can you help me understand why these
&gt; all need to be synchronous?

Yeah, I know. :(

A ton of changes would have to be made to the algorithms inside CDM.cpp in order to make all the messaging asynchronous; see getSupportedConfiguration() in that file, e.g.  I&apos;ve already done some of that, by pushing up the list of &quot;supportedInitTypes&quot; rather issuing a sync XPC to ask whether a given type is supported. There are a few other changes I&apos;m planning to make to push more information up across from the GPUProcess so that queries are local and don&apos;t need XPCs at all, but it won&apos;t be possible for all the methods.

Another possibility I considered is to move the entire implementation of CDM into a background thread, the way we do for MSE parsing. We can&apos;t send sync messages from background threads, so that&apos;d be hard, and would require getting replies on the main thread and doing semaphore magic to move the results back to the work queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622136</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-24 07:14:09 -0800</bug_when>
    <thetext>...(continued)

I&apos;m not saying that work is impossible, and I do plan on converting sync messages to asyncs in future patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622137</commentid>
    <comment_count>17</comment_count>
      <attachid>391534</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-24 07:14:52 -0800</bug_when>
    <thetext>Created attachment 391534
Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622197</commentid>
    <comment_count>18</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-24 09:18:18 -0800</bug_when>
    <thetext>...or maybe I can move all of the CDM::getSupportedConfiguration into platform and then into the GPUProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622268</commentid>
    <comment_count>19</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-24 12:09:25 -0800</bug_when>
    <thetext>(In reply to Jer Noble from comment #18)
&gt; ...or maybe I can move all of the CDM::getSupportedConfiguration into
&gt; platform and then into the GPUProcess.

Looks like that technique will work; the only DOM part of that implementation is asking the Document for it&apos;s securityOrigin, and that can stay in CDM and be passed into the algorithm from outside. I&apos;ll post a new patch that removes most of the sync messages from RemoteCDMProxy.messages.in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622494</commentid>
    <comment_count>20</comment_count>
      <attachid>391622</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-24 22:12:43 -0800</bug_when>
    <thetext>Created attachment 391622
Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622495</commentid>
    <comment_count>21</comment_count>
      <attachid>391623</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-24 22:18:02 -0800</bug_when>
    <thetext>Created attachment 391623
Part 2: WebKit + SharedBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622497</commentid>
    <comment_count>22</comment_count>
      <attachid>391625</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-24 22:21:42 -0800</bug_when>
    <thetext>Created attachment 391625
Part 3: RemoteCDM (depends on Parts 1 &amp; 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622500</commentid>
    <comment_count>23</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-24 22:24:59 -0800</bug_when>
    <thetext>Okay, almost all the synchronous messages have been removed entirely or converted to Async ones. The remaining Sync messages are creating objects, and they need to be synchronous because the creation message returns with it the configuration properties which themselves allow WebContent-side queries to not require any XPC at all. If the creation methods weren&apos;t sync, those property queries would have to block until the configuration message was received.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622725</commentid>
    <comment_count>24</comment_count>
      <attachid>391623</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-25 13:33:02 -0800</bug_when>
    <thetext>Comment on attachment 391623
Part 2: WebKit + SharedBuffer

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

&gt; Source/WebKit/Platform/IPC/SharedBufferDataReference.h:36
&gt;      SharedBufferDataReference() = default;
&gt; +    SharedBufferDataReference(RefPtr&lt;WebCore::SharedBuffer&gt;&amp;&amp; buffer)

Can we remove these? The default constructor was only needed in a time when decoding needed to instantiate a default constructed object, which is not the case any more.
Can we make m_buffer a Ref?

&gt; Source/WebKit/Scripts/webkit/messages.py:230
&gt; +        &apos;WebKit::RemoteCDMIdentifier&apos;,

This change seems unrelated to the rest of this patch.

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:3211
&gt; +Optional&lt;RefPtr&lt;SharedBuffer&gt;&gt; ArgumentCoder&lt;RefPtr&lt;WebCore::SharedBuffer&gt;&gt;::decode(Decoder&amp; decoder)

Optional&lt;Ref&lt;SharedBuffer&gt;&gt; ArgumentCoder&lt;Ref&lt;...

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.h:835
&gt; +    static Optional&lt;RefPtr&lt;WebCore::SharedBuffer&gt;&gt; decode(Decoder&amp;);

Optional&lt;Ref&lt;...

&gt; Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:132
&gt; +    m_connection-&gt;send(Messages::ServiceWorkerFetchTask::DidReceiveData { { SharedBuffer::create(data, size) }, static_cast&lt;int64_t&gt;(size) }, m_fetchIdentifier);

This is an unnecessary copy of the data.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3503
&gt; +        dataReference = SharedBuffer::create(data.get());

This is a great improvement.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:4922
&gt; +    send(Messages::WebPageProxy::DataCallback({ SharedBuffer::create(pdfPageData.get()) }, callbackID));

Great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623087</commentid>
    <comment_count>25</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-26 11:47:44 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #24)
&gt; Comment on attachment 391623 [details]
&gt; Part 2: WebKit + SharedBuffer
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=391623&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/SharedBufferDataReference.h:36
&gt; &gt;      SharedBufferDataReference() = default;
&gt; &gt; +    SharedBufferDataReference(RefPtr&lt;WebCore::SharedBuffer&gt;&amp;&amp; buffer)
&gt; 
&gt; Can we remove these? The default constructor was only needed in a time when
&gt; decoding needed to instantiate a default constructed object, which is not
&gt; the case any more.
&gt; Can we make m_buffer a Ref?

Probably not. For sync replies, you still need to create a default object and pass that object in by reference to the reply handler. Doing so would mean not being able to use a SharedBufferDataReference in a sync reply.

&gt; &gt; Source/WebKit/Scripts/webkit/messages.py:230
&gt; &gt; +        &apos;WebKit::RemoteCDMIdentifier&apos;,
&gt; 
&gt; This change seems unrelated to the rest of this patch.

Yep! That should have gone into Part 3.

&gt; &gt; Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:132
&gt; &gt; +    m_connection-&gt;send(Messages::ServiceWorkerFetchTask::DidReceiveData { { SharedBuffer::create(data, size) }, static_cast&lt;int64_t&gt;(size) }, m_fetchIdentifier);
&gt; 
&gt; This is an unnecessary copy of the data.

There are two call sites which generate a &quot;DidReceiveData&quot; message. Should there be two separate messages, one that takes a DataReference and one that takes a SharedDataReference? Or can the FetchTaskClient be modified to require the caller gives a SharedBuffer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623095</commentid>
    <comment_count>26</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-26 11:59:17 -0800</bug_when>
    <thetext>(In reply to Jer Noble from comment #25)
&gt; (In reply to Alex Christensen from comment #24)
&gt; &gt; Comment on attachment 391623 [details]
&gt; &gt; &gt; Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:132
&gt; &gt; &gt; +    m_connection-&gt;send(Messages::ServiceWorkerFetchTask::DidReceiveData { { SharedBuffer::create(data, size) }, static_cast&lt;int64_t&gt;(size) }, m_fetchIdentifier);
&gt; &gt; 
&gt; &gt; This is an unnecessary copy of the data.
&gt; 
&gt; There are two call sites which generate a &quot;DidReceiveData&quot; message. Should
&gt; there be two separate messages, one that takes a DataReference and one that
&gt; takes a SharedDataReference? Or can the FetchTaskClient be modified to
&gt; require the caller gives a SharedBuffer?

It looks like there&apos;s a precambrian explosion of void*/size_t didReceiveData() across all of WebCore, and a random sampling shows that the majority starts off as a RefPtr&lt;SharedBuffer&gt;. So there&apos;s a huge opportunity for reducing copies, but also a ton of refactoring work. So I&apos;ll just add a DidReceiveRawData() message that takes an IPC::DataReference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623146</commentid>
    <comment_count>27</comment_count>
      <attachid>391622</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-26 13:35:45 -0800</bug_when>
    <thetext>Comment on attachment 391622
Part 1: WebCore

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

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.cpp:89
&gt; +        instance-&gt;initializeWithConfiguration(*m_configuration, useDistinctiveIdentifier ? AllowDistinctiveIdentifiers::Yes : AllowDistinctiveIdentifiers::No, persistentStateAllowed ? AllowPersistentState::Yes : AllowPersistentState::No, [this, protectedThis = makeRef(*this), useDistinctiveIdentifier, persistentStateAllowed, instance = WTFMove(instance), promise = WTFMove(promise)] (auto successValue) mutable {

Wouldn&apos;t a weakPtr be better than a refPtr when using the GPU process?

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:110
&gt; +    m_instance-&gt;setServerCertificate(WTFMove(certificate), [promise = WTFMove(promise)] (auto success) {

Doesn&apos;t this need one or the other?

&gt; Source/WebCore/platform/encryptedmedia/CDMPrivate.cpp:214
&gt; +        persistentStateRequirement =  CDMRequirement::NotAllowed;

Nit: two spaces.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:275
&gt; +    auto initialize = [&amp;] () {
&gt; +        if (configuration.distinctiveIdentifier == CDMRequirement::Required)

Doesn&apos;t this need a protectedThis or weakThis?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623947</commentid>
    <comment_count>28</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 07:16:32 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #27)
&gt; Comment on attachment 391622 [details]
&gt; Part 1: WebCore
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=391622&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.cpp:89
&gt; &gt; +        instance-&gt;initializeWithConfiguration(*m_configuration, useDistinctiveIdentifier ? AllowDistinctiveIdentifiers::Yes : AllowDistinctiveIdentifiers::No, persistentStateAllowed ? AllowPersistentState::Yes : AllowPersistentState::No, [this, protectedThis = makeRef(*this), useDistinctiveIdentifier, persistentStateAllowed, instance = WTFMove(instance), promise = WTFMove(promise)] (auto successValue) mutable {
&gt; 
&gt; Wouldn&apos;t a weakPtr be better than a refPtr when using the GPU process?

It doesn&apos;t /really/ need either, if I change this block to take all the arguments it needs an not use `this`.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:110
&gt; &gt; +    m_instance-&gt;setServerCertificate(WTFMove(certificate), [promise = WTFMove(promise)] (auto success) {
&gt; 
&gt; Doesn&apos;t this need one or the other?

Nope, it only references the promise inside the block, which was moved in.

&gt; &gt; Source/WebCore/platform/encryptedmedia/CDMPrivate.cpp:214
&gt; &gt; +        persistentStateRequirement =  CDMRequirement::NotAllowed;
&gt; 
&gt; Nit: two spaces.

Fixed.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:275
&gt; &gt; +    auto initialize = [&amp;] () {
&gt; &gt; +        if (configuration.distinctiveIdentifier == CDMRequirement::Required)
&gt; 
&gt; Doesn&apos;t this need a protectedThis or weakThis?

Nope. It&apos;s run synchronously inside this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623956</commentid>
    <comment_count>29</comment_count>
      <attachid>391979</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 07:46:02 -0800</bug_when>
    <thetext>Created attachment 391979
Patch for landing: Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623960</commentid>
    <comment_count>30</comment_count>
      <attachid>391980</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 08:08:05 -0800</bug_when>
    <thetext>Created attachment 391980
Patch for landing: Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623962</commentid>
    <comment_count>31</comment_count>
      <attachid>391982</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 08:19:33 -0800</bug_when>
    <thetext>Created attachment 391982
Patch for landing: Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623979</commentid>
    <comment_count>32</comment_count>
      <attachid>391985</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 09:49:45 -0800</bug_when>
    <thetext>Created attachment 391985
Patch for landing: Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623992</commentid>
    <comment_count>33</comment_count>
      <attachid>391989</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 10:34:12 -0800</bug_when>
    <thetext>Created attachment 391989
Part 2: WebKit + SharedBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624003</commentid>
    <comment_count>34</comment_count>
      <attachid>391994</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 10:46:08 -0800</bug_when>
    <thetext>Created attachment 391994
Patch for landing: Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624023</commentid>
    <comment_count>35</comment_count>
      <attachid>391989</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-28 11:12:37 -0800</bug_when>
    <thetext>Comment on attachment 391989
Part 2: WebKit + SharedBuffer

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

&gt; Source/WebKit/ChangeLog:13
&gt; +        by the SharedBuffer object at creation time, leading to zero-copy decoding, but is not done in this patch.

Wouldn&apos;t this still be one-copy because we need to copy it into shared memory when encoding?
decodeSharedBuffer is in desperate need of at least a FIXME comment saying that the SharedBuffer should just adopt SharedMemory::Handle as a new type of DataSegment, which would require moving SharedMemory to WebCore.  I think we should to that before this to prevent performance regressions, but if you promise to do that in the next week or two I&apos;d be ok with a FIXME comment.

&gt; Source/WebKit/Platform/IPC/SharedBufferDataReference.h:39
&gt; +        : m_buffer(WTFMove(buffer))
&gt; +    {
&gt; +    }

We&apos;re starting to put these on the line before.
: m_buffer(WTFMove(buffer)) { }

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:192
&gt; +    auto fileWrapper = adoptNS([pageClient().allocFileWrapperInstance() initRegularFileWithContents:dataReference.buffer()-&gt;createNSData().autorelease()]);

This used to be a Ref&lt;SharedBuffer&gt; but now it is a RefPtr&lt;SharedBuffer&gt; which would need a null check.

&gt; Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:198
&gt; +    if (UNLIKELY(m_interceptController.isIntercepting(m_coreLoader-&gt;identifier()))) {

I&apos;m not a huge fan of all this duplicate code.

&gt; Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:132
&gt; +    m_connection-&gt;send(Messages::ServiceWorkerFetchTask::DidReceiveSharedBuffer { { SharedBuffer::create(data, size) }, static_cast&lt;int64_t&gt;(size) }, m_fetchIdentifier);

This looks like an unnecessary copy from {data, size} into a SharedBuffer which will then copy it into shared memory to serialize.  This at least needs a FIXME comment saying to improve it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624026</commentid>
    <comment_count>36</comment_count>
      <attachid>391989</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 11:17:47 -0800</bug_when>
    <thetext>Comment on attachment 391989
Part 2: WebKit + SharedBuffer

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

&gt;&gt; Source/WebKit/ChangeLog:13
&gt;&gt; +        by the SharedBuffer object at creation time, leading to zero-copy decoding, but is not done in this patch.
&gt; 
&gt; Wouldn&apos;t this still be one-copy because we need to copy it into shared memory when encoding?
&gt; decodeSharedBuffer is in desperate need of at least a FIXME comment saying that the SharedBuffer should just adopt SharedMemory::Handle as a new type of DataSegment, which would require moving SharedMemory to WebCore.  I think we should to that before this to prevent performance regressions, but if you promise to do that in the next week or two I&apos;d be ok with a FIXME comment.

I don&apos;t this current patch (with the fix you mention below) will result in any extra copies, and with the change you mention here, will definitely reduce copies, with the potential (if both ends are SharedMemory-backed) of zero-copies.  So I&apos;m not sure that this needs a FIXME, though it does need a follow up.

&gt;&gt; Source/WebKit/Platform/IPC/SharedBufferDataReference.h:39
&gt;&gt; +    }
&gt; 
&gt; We&apos;re starting to put these on the line before.
&gt; : m_buffer(WTFMove(buffer)) { }

Ok.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:192
&gt;&gt; +    auto fileWrapper = adoptNS([pageClient().allocFileWrapperInstance() initRegularFileWithContents:dataReference.buffer()-&gt;createNSData().autorelease()]);
&gt; 
&gt; This used to be a Ref&lt;SharedBuffer&gt; but now it is a RefPtr&lt;SharedBuffer&gt; which would need a null check.

dataReference.isEmpty() above performs the null-check.

&gt;&gt; Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:198
&gt;&gt; +    if (UNLIKELY(m_interceptController.isIntercepting(m_coreLoader-&gt;identifier()))) {
&gt; 
&gt; I&apos;m not a huge fan of all this duplicate code.

Okay, I&apos;ll abstract it.

&gt;&gt; Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:132
&gt;&gt; +    m_connection-&gt;send(Messages::ServiceWorkerFetchTask::DidReceiveSharedBuffer { { SharedBuffer::create(data, size) }, static_cast&lt;int64_t&gt;(size) }, m_fetchIdentifier);
&gt; 
&gt; This looks like an unnecessary copy from {data, size} into a SharedBuffer which will then copy it into shared memory to serialize.  This at least needs a FIXME comment saying to improve it.

Oh right, this can revert to the DidReceiveData message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624083</commentid>
    <comment_count>37</comment_count>
      <attachid>392008</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 13:04:39 -0800</bug_when>
    <thetext>Created attachment 392008
Patch for landing: Part 2: WebKit + SharedBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624150</commentid>
    <comment_count>38</comment_count>
      <attachid>391994</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 15:20:11 -0800</bug_when>
    <thetext>Comment on attachment 391994
Patch for landing: Part 1: WebCore

Clearing flags on attachment: 391994

Committed r257660: &lt;https://trac.webkit.org/changeset/257660&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624179</commentid>
    <comment_count>39</comment_count>
      <attachid>392008</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 16:32:23 -0800</bug_when>
    <thetext>Comment on attachment 392008
Patch for landing: Part 2: WebKit + SharedBuffer

Clearing flags on attachment: 392008

Committed r257667: &lt;https://trac.webkit.org/changeset/257667&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624192</commentid>
    <comment_count>40</comment_count>
      <attachid>392035</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 17:13:14 -0800</bug_when>
    <thetext>Created attachment 392035
Part 3: RemoteCDM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624229</commentid>
    <comment_count>41</comment_count>
      <attachid>392048</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 21:53:12 -0800</bug_when>
    <thetext>Created attachment 392048
Part 3: RemoteCDM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624232</commentid>
    <comment_count>42</comment_count>
      <attachid>392050</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 22:56:21 -0800</bug_when>
    <thetext>Created attachment 392050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624298</commentid>
    <comment_count>43</comment_count>
      <attachid>392066</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-29 09:58:11 -0800</bug_when>
    <thetext>Created attachment 392066
Part 3: RemoteCDM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624534</commentid>
    <comment_count>44</comment_count>
      <attachid>392066</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-03-02 07:23:06 -0800</bug_when>
    <thetext>Comment on attachment 392066
Part 3: RemoteCDM

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        Allow the existing CDMFactory machinery to work normally by explicitly clearing out all the existing 
&gt; +        when the GPU process is enabled, and resetting those factories to default when the GPU process is disabled.

&quot;clearing out all the existing when the GPU process&quot; - all the existing what?

&gt; Source/WebKit/GPUProcess/media/RemoteCDMFactoryProxy.cpp:70
&gt; +    auto factory = factoryForKeySystem(keySystem);
&gt; +    if (!factory) {
&gt; +        completion({ }, { });
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    auto privateCDM = factory-&gt;createCDM(keySystem);
&gt; +    if (!privateCDM) {
&gt; +        completion({ }, { });
&gt; +        return;
&gt; +    }

It is probably worth logging these failures.

&gt; Source/WebKit/GPUProcess/media/RemoteCDMFactoryProxy.cpp:144
&gt; +RemoteCDMInstanceProxy* RemoteCDMFactoryProxy::getInstance(const RemoteCDMInstanceIdentifier&amp; id)

RemoteCDMInstanceIdentifier id

&gt; Source/WebKit/WebProcess/GPU/media/RemoteCDMFactory.cpp:68
&gt; +    bool supported = false;
&gt; +    gpuProcessConnection().connection().sendSync(Messages::RemoteCDMFactoryProxy::SupportsKeySystem(keySystem), Messages::RemoteCDMFactoryProxy::SupportsKeySystem::Reply(supported), { });
&gt; +    return supported;

Can the key systems a CDM supports change dynamically? If not, we should cache the results to avoid making a sync IPC more than once for a given string.

&gt; Source/WebKit/WebProcess/GPU/media/RemoteCDMInstanceSession.h:58
&gt; +

Nit: extra blank line

&gt; Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.cpp:63
&gt;  void WebMediaStrategy::registerCDMFactories(Vector&lt;WebCore::CDMFactory*&gt;&amp; factories)
&gt;  {
&gt; -    return WebCore::CDMFactory::platformRegisterFactories(factories);
&gt; +#if ENABLE(GPU_PROCESS)
&gt; +    if (m_useGPUProcess) {
&gt; +        WebProcess::singleton().ensureGPUProcessConnection().cdmFactory().registerFactory(factories);
&gt; +        return;
&gt; +    }
&gt; +#endif
&gt; +    WebCore::CDMFactory::platformRegisterFactories(factories);
&gt;  }

Didn&apos;t Sam recommend we not use a strategy for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624591</commentid>
    <comment_count>45</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-02 10:04:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/59955230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624597</commentid>
    <comment_count>46</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-02 10:12:11 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #44)
&gt; Comment on attachment 392066 [details]
&gt; Part 3: RemoteCDM
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392066&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; +        Allow the existing CDMFactory machinery to work normally by explicitly clearing out all the existing 
&gt; &gt; +        when the GPU process is enabled, and resetting those factories to default when the GPU process is disabled.
&gt; 
&gt; &quot;clearing out all the existing when the GPU process&quot; - all the existing what?

Ah, that&apos;s referring to a previous implementation where we would reset the factories when the &quot;use GPU Process for media&quot; setting changed. Now that we&apos;re using the PlatformStrategies, we don&apos;t need to do this.

&gt; &gt; Source/WebKit/GPUProcess/media/RemoteCDMFactoryProxy.cpp:70
&gt; &gt; +    auto factory = factoryForKeySystem(keySystem);
&gt; &gt; +    if (!factory) {
&gt; &gt; +        completion({ }, { });
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    auto privateCDM = factory-&gt;createCDM(keySystem);
&gt; &gt; +    if (!privateCDM) {
&gt; &gt; +        completion({ }, { });
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; 
&gt; It is probably worth logging these failures.

Oky.

&gt; &gt; Source/WebKit/GPUProcess/media/RemoteCDMFactoryProxy.cpp:144
&gt; &gt; +RemoteCDMInstanceProxy* RemoteCDMFactoryProxy::getInstance(const RemoteCDMInstanceIdentifier&amp; id)
&gt; 
&gt; RemoteCDMInstanceIdentifier id

Why?

&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteCDMFactory.cpp:68
&gt; &gt; +    bool supported = false;
&gt; &gt; +    gpuProcessConnection().connection().sendSync(Messages::RemoteCDMFactoryProxy::SupportsKeySystem(keySystem), Messages::RemoteCDMFactoryProxy::SupportsKeySystem::Reply(supported), { });
&gt; &gt; +    return supported;
&gt; 
&gt; Can the key systems a CDM supports change dynamically?

The list of keySystems supported (e.g., by FairPlay) is effectively a regular expression. 

&gt; If not, we should
&gt; cache the results to avoid making a sync IPC more than once for a given
&gt; string.

I think I&apos;d rather modify the DOM code so that we could make SupportsKeySystem asynchronous.

&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteCDMInstanceSession.h:58
&gt; &gt; +
&gt; 
&gt; Nit: extra blank line

Ok.

&gt; &gt; Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.cpp:63
&gt; &gt;  void WebMediaStrategy::registerCDMFactories(Vector&lt;WebCore::CDMFactory*&gt;&amp; factories)
&gt; &gt;  {
&gt; &gt; -    return WebCore::CDMFactory::platformRegisterFactories(factories);
&gt; &gt; +#if ENABLE(GPU_PROCESS)
&gt; &gt; +    if (m_useGPUProcess) {
&gt; &gt; +        WebProcess::singleton().ensureGPUProcessConnection().cdmFactory().registerFactory(factories);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; &gt; +    WebCore::CDMFactory::platformRegisterFactories(factories);
&gt; &gt;  }
&gt; 
&gt; Didn&apos;t Sam recommend we not use a strategy for this?

Ryosuke disagrees, and has a compelling justification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624638</commentid>
    <comment_count>47</comment_count>
      <attachid>392066</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-03-02 11:23:07 -0800</bug_when>
    <thetext>Comment on attachment 392066
Part 3: RemoteCDM

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

&gt;&gt;&gt; Source/WebKit/GPUProcess/media/RemoteCDMFactoryProxy.cpp:144
&gt;&gt;&gt; +RemoteCDMInstanceProxy* RemoteCDMFactoryProxy::getInstance(const RemoteCDMInstanceIdentifier&amp; id)
&gt;&gt; 
&gt;&gt; RemoteCDMInstanceIdentifier id
&gt; 
&gt; Why?

To match all of the other RemoteCDMInstanceProxy methods?

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.cpp:63
&gt;&gt;&gt;  }
&gt;&gt; 
&gt;&gt; Didn&apos;t Sam recommend we not use a strategy for this?
&gt; 
&gt; Ryosuke disagrees, and has a compelling justification.

We need a cage match!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625517</commentid>
    <comment_count>48</comment_count>
      <attachid>392414</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-04 08:01:01 -0800</bug_when>
    <thetext>Created attachment 392414
Patch for landing: Part 3: WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625547</commentid>
    <comment_count>49</comment_count>
      <attachid>392422</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-04 09:12:22 -0800</bug_when>
    <thetext>Created attachment 392422
Patch for landing: Part 3: RemoteCDM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625549</commentid>
    <comment_count>50</comment_count>
      <attachid>392423</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-04 09:22:20 -0800</bug_when>
    <thetext>Created attachment 392423
Patch for landing: Part 3: RemoteCDM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625554</commentid>
    <comment_count>51</comment_count>
      <attachid>392424</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-04 09:31:28 -0800</bug_when>
    <thetext>Created attachment 392424
Patch for landing: Part 3: RemoteCDM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625557</commentid>
    <comment_count>52</comment_count>
      <attachid>392427</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-04 09:37:01 -0800</bug_when>
    <thetext>Created attachment 392427
Patch for landing: Part 3: RemoteCDM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625563</commentid>
    <comment_count>53</comment_count>
      <attachid>392428</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-04 09:47:36 -0800</bug_when>
    <thetext>Created attachment 392428
Patch for landing: Part 3: RemoteCDM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625565</commentid>
    <comment_count>54</comment_count>
      <attachid>392429</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-04 09:50:18 -0800</bug_when>
    <thetext>Created attachment 392429
Patch for landing: Part 3: RemoteCDM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625667</commentid>
    <comment_count>55</comment_count>
      <attachid>392429</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-04 11:42:33 -0800</bug_when>
    <thetext>Comment on attachment 392429
Patch for landing: Part 3: RemoteCDM

Clearing flags on attachment: 392429

Committed r257867: &lt;https://trac.webkit.org/changeset/257867&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391455</attachid>
            <date>2020-02-21 23:49:50 -0800</date>
            <delta_ts>2020-02-22 09:05:26 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208090-20200221234949.patch</filename>
            <type>text/plain</type>
            <size>260762</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGEyNTU4MTA4MGUyYzBm
NjVmMDY5NzdkZjhiYTZiYmU5ZDg5NDIxNi4uYzYwYjhmNDRmYThjYzFkNGQ2ZDU1NjViZjQyMzY0
ZGVmMTBkYjA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Z2V0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE06OmdldFN1cHBvcnRlZENhcGFi
aWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6c3VwcG9y
dHNJbml0RGF0YVR5cGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRL
ZXkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVX
YXNVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNRmFjdG9yeTo6cmVzZXRGYWN0b3JpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUtleVN0YXR1cy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETU1lZGlhQ2FwYWJpbGl0eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNTWVkaWFDYXBhYmls
aXR5OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNTWVkaWFDYXBhYmlsaXR5
OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VU
eXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1SZXN0cmljdGlvbnM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBw
b3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmtleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcktl
eU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFNo
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBw
b3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzZXRTdXBw
b3J0ZWRSb2J1c3RuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRlZElu
aXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydGVk
Um9idXN0bmVzc2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRz
U2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a0NETUZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0
ZWRSb2J1c3RuZXNzIGNvbnN0KToKKwogMjAyMC0wMi0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIFFUS2l0IGZvciByZW5kZXJpbmcgV0sx
IHZpZGVvIGZ1bGxzY3JlZW4gY29udHJvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTljZDE1M2UwOTIxNWE4MWVl
NWQyY2E5NjgwYTRiOWRiM2VkN2JkNC4uNmUxMDhmNDkwNDRlMmM5Njc3YWNlNWZhNWNlYmExNjU2
ZmFjNjE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMjcgQEAKKzIwMjAtMDItMjEgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rl
cm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBS
ZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAgb2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94
eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBleGlzdGluZyBDRE1GYWN0b3J5IG1hY2hp
bmVyeSB0byB3b3JrIG5vcm1hbGx5IGJ5IGV4cGxpY2l0bHkgY2xlYXJpbmcgb3V0IGFsbCB0aGUg
ZXhpc3RpbmcgCisgICAgICAgIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlzIGVuYWJsZWQsIGFuZCBy
ZXNldHRpbmcgdGhvc2UgZmFjdG9yaWVzIHRvIGRlZmF1bHQgd2hlbiB0aGUgR1BVIHByb2Nlc3Mg
aXMgZGlzYWJsZWQuCisKKyAgICAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGlz
IG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgdXNpbmcgdGhlIHNhbWUgZW5jb2RlL2RlY29kZSBwYXRo
IGFzIGlzIHVzZWQgaW4KKyAgICAgICAgV2ViQ29yZUFyZ3VtZW50Q29kZXJzOiB0aGUgU2hhcmVk
QnVmZmVyIGlzIGNvcGllZCBpbnRvIHNoYXJlZCBtZW1vcnksIGFuZCBvbmx5IGEgaGFuZGxlIGlz
IHBhc3NlZCBhY3Jvc3MKKyAgICAgICAgdGhlIFhQQyBib3VuZGFyeS4gVGhpcyByZXF1aXJlcyBl
eGlzdGluZyB1c2VycyB0byBoYW5kbGUgcmVjZWl2aW5nIGEgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
SGFuZGxlIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBvZiB0aGUgWFBDIGJvdW5kYXJ5LCBi
dXQgdGhpcyBpcyB0cml2aWFsLCBhbmQgbWFueSBjYWxsIHNpdGVzIHJlcXVpcmUgYSBTaGFyZWRC
dWZmZXIgb24gdGhlCisgICAgICAgIHJlbW90ZSBzaWRlIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhp
cyBjb2RlIGNvdWxkIGJlIGltcHJvdmVkIGJ5IGFsbG93aW5nIHRoZSBTaGFyZWRNZW1vcnkgb2Jq
ZWN0IGJlIGFkb3B0ZWQKKyAgICAgICAgYnkgdGhlIFNoYXJlZEJ1ZmZlciBvYmplY3QgYXQgY3Jl
YXRpb24gdGltZSwgbGVhZGluZyB0byB6ZXJvLWNvcHkgZGVjb2RpbmcsIGJ1dCBpcyBub3QgZG9u
ZSBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1J
bnN0YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94
eTo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6
OmFkZEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojpy
ZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
Z2V0SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFk
ZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92
ZVNlc3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5Lm1lc3NhZ2VzLmluOiAKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNB
bGxvd2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0UGVy
c2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
UHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjppbnN0YW5jZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVz
dExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Ojpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0
ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDogQWRkZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjog
QWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25z
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBw
b3J0c0luaXREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVBy
b3h5OjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xl
YXJhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0ZUluc3RhbmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZTo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRh
Y2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlw
dFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE06OlJlbW90ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERh
dGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6cGVy
c2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0ZUluc3RhbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQgY29uc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFj
dG9yeTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnJl
bW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpkaWRSZWNl
aXZlU2Vzc2lvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlOjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0UGVyc2lzdGVudFN0YXRlQWxs
b3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpzZXRTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZVNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0SERDUFN0YXR1
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDog
QWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25T
Y2hlbWUuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0
YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZW5k
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vz
c2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmdJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxT
Y2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAy
LTE3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV2Vi
SW5zcGVjdG9yIHN1cHBvcnQgdG8gV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggNGJiYjJiY2U2MTg3
NGI3ZWUxNDhhNDE2ODU1MGE2YjE1NjQzOTJhMC4uYzRlMTQyNmEwYzNmZmI1YWE4MTBkNGM1ZDBh
NjhiZDA3ZTlmZWY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbj4gQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhCiAg
ICAgICAgICAgICBpZiAoaW5pdERhdGFUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICAgICAgaWYgKG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBv
cnRzSW5pdERhdGFUeXBlKGluaXREYXRhVHlwZSkpCisgICAgICAgICAgICBpZiAobV9wcml2YXRl
ICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRh
VHlwZSkpCiAgICAgICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKGluaXREYXRhVHlw
ZSk7CiAgICAgICAgIH0KIApAQCAtNDYwLDcgKzQ2MCw3IEBAIE9wdGlvbmFsPFZlY3RvcjxNZWRp
YUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4+IENETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVz
Rm9yCiAgICAgICAgIC8vIDMuMTEuIElmIGNvbnRlbnQgdHlwZSBpcyBub3Qgc3RyaWN0bHkgYSBh
dWRpby92aWRlbyB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uCiAgICAgICAg
IC8vIDMuMTIuIElmIHJvYnVzdG5lc3MgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcgYW5kIGNvbnRh
aW5zIGFuIHVucmVjb2duaXplZCB2YWx1ZSBvciBhIHZhbHVlIG5vdCBzdXBwb3J0ZWQgYnkKICAg
ICAgICAgLy8gICAgICAgaW1wbGVtZW50YXRpb24sIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJh
dGlvbi4gU3RyaW5nIGNvbXBhcmlzb24gaXMgY2FzZS1zZW5zaXRpdmUuCi0gICAgICAgIGlmICgh
cm9idXN0bmVzcy5pc0VtcHR5KCkgJiYgIW1fcHJpdmF0ZS0+c3VwcG9ydHNSb2J1c3RuZXNzKHJv
YnVzdG5lc3MpKQorICAgICAgICBpZiAoIXJvYnVzdG5lc3MuaXNFbXB0eSgpICYmICFtX3ByaXZh
dGUtPnN1cHBvcnRlZFJvYnVzdG5lc3NlcygpLmNvbnRhaW5zKHJvYnVzdG5lc3MpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gMy4xMy4gSWYgdGhlIHVzZXIgYWdlbnQgYW5k
IGltcGxlbWVudGF0aW9uIGRlZmluaXRlbHkgc3VwcG9ydCBwbGF5YmFjayBvZiBlbmNyeXB0ZWQg
bWVkaWEgZGF0YSBmb3IgdGhlCkBAIC02MTIsNyArNjEyLDcgQEAgYm9vbCBDRE06OnN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdAogCiBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUg
JiYgbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpOworICAgIHJl
dHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29u
dGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5p
dGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkYTE5YmJmZjJjN2NlODJi
ZWZhODAzNWFkNzU0MmUzZTlmMjJhNjlkLi4yOWZhYjQ5OTA2ODI1ODMyYTVhZGRkOTlhODBlOGYz
NGQ4ZDMwOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBN
ZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYKICAgICAgICAgLy8gNi41LiBMZXQgc2Vzc2lvbiBjbG9zZWQgYmUg
ZmFsc2UuCiAgICAgICAgIC8vIDYuNi4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNlIHJlcHJl
c2VudGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAgICAgICAvLyA2
LjcuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAg
bV9pbnN0YW5jZVNlc3Npb24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5
cGUsICpzYW5pdGl6ZWRSZXNwb25zZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwg
T3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtl
eXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9u
LT51cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBzYW5pdGl6ZWRSZXNw
b25zZS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBP
cHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5
cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAppbmRleCAyNTQyOWQ0NmIxYWU2OWI4YTA3ZWE1OTRiYTEwNzFlN2FiNGJjNjRh
Li5hZGIyOWVkNzFjOGVmN2FiMzc2MzhhMGIxMTk3OGI3MDI3MDgwYjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI1NjEsMTUgKzI1NjEsMjMgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IHN0YXRlKQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxk
Q29udGludWVBZnRlck5lZWRLZXkoKQoreworICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSBoYXNF
dmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpIHx8IChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpICYmICFkb2N1bWVu
dCgpLnF1aXJrcygpLmhhc0Jyb2tlbkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydFF1aXJrKCkpOwor
ICAgIHBsYXllcigpLT5zZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3VsZENvbnRp
bnVlKTsKK30KKyNlbmRpZgorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV93ZWJLaXRNZWRpYUtleXMgPyBtX3dlYktpdE1lZGlhS2V5cy0+Y2Fj
aGVkS2V5Rm9yS2V5SWQoa2V5SWQpIDogbnVsbHB0cjsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEp
CiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxl
Z2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICghaGFzRXZlbnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRr
ZXkiKQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCkBAIC0yNTgwLDE0ICsyNTg4LDEyIEBA
IGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSog
aW5pdERhdGEpCiAgICAgICAgICkgewogICAgICAgICBtX2Vycm9yID0gTWVkaWFFcnJvcjo6Y3Jl
YXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9FTkNSWVBURUQpOwogICAgICAgICBzY2hlZHVsZUV2
ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBldmVudCA9IFdlYktpdE1lZGlhS2V5TmVl
ZGVkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0RGF0
YSk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+
ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKLQotICAgIHJldHVybiB0cnVlOwogfQogCiBT
dHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkgY29uc3QKQEAgLTUxMjUsNiArNTEzMSwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhRW5naW5lV2FzVXBkYXRlZCgpCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkKICAgICBzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKTsKICNlbmRpZgorCisjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisg
ICAgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpCkBAIC01ODg3LDYg
KzU4OTcsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBl
dmVudCkKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0
IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogeworI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChldmVu
dFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCkKKyAgICAgICAgdXBkYXRl
U2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgorCiAgICAgaWYgKGV2ZW50VHlw
ZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2Vk
RXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
V1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpOwogCkBAIC01OTA4LDYgKzU5MjMsMTEgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgUmVmPEV2ZW50TGkKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlz
dGVuZXIsIGNvbnN0IExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpCisgICAgICAgIHVw
ZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKKwogICAgIGlmIChldmVu
dFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hh
bmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCBjODhiNTczYzUzODY4OTA0MThmYzMwMzA0ZThiOWRiMjg2NDg4ZGQ3Li5h
Y2JjNWQ3YmI5MTVlOTdjZWVmZjM0Y2Y2ZjVjZWU3OWJhMWMwYmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNjgyLDcgKzY4Miw3IEBAIHByaXZhdGU6CiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3Qg
ZmluYWw7Ci0gICAgYm9vbCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7
CisgICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CiAgICAg
U3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFs
OwogI2VuZGlmCiAKQEAgLTY5Niw2ICs2OTYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBDRE1DbGll
bnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3Nhcnko
KSBmaW5hbDsKICNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCB1cGRhdGVTaG91bGRDb250aW51ZUFm
dGVyTmVlZEtleSgpOworI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKICAgICB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJl
bGVzc0NoYW5nZWQoYm9vbCkgZmluYWw7CkBAIC0xMTY4LDYgKzExNzIsNyBAQCBwcml2YXRlOgog
ICAgIE1lZGlhUHJvdmlkZXIgbV9tZWRpYVByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCisgICAgYm9vbCBtX2hhc05lZWRrZXlMaXN0ZW5lciB7IGZhbHNlIH07
CiAgICAgUmVmUHRyPFdlYktpdE1lZGlhS2V5cz4gbV93ZWJLaXRNZWRpYUtleXM7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RW5jcnlwdGlvblNjaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCmluZGV4IDc0YjNhYTdkN2JkYjAwYTI2NzU2YTAyMzY1
NjZmMzY4ODEyYmNlM2IuLjFhN2E1NjI3ZGJjYTY0MWI0OWNlN2U1NmU2NzE2ZTMxOGE5ODhiZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVu
Y3J5cHRpb25TY2hlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKQEAgLTI3LDEzICsyNywyNyBAQAogCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIHsKK2VudW0g
Y2xhc3MgQ0RNRW5jcnlwdGlvblNjaGVtZSA6IHVpbnQ4X3QgewogICAgIGNlbmMsCiAgICAgY2Jj
cywKIH07CiAKIH0KIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWUsCisgICAg
ICAgIFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWU6OmNlbmMsCisgICAgICAgIFdlYkNvcmU6
OkNETUVuY3J5cHRpb25TY2hlbWU6OmNiY3MKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3Rv
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9y
eS5jcHAKaW5kZXggNGJiNTk5ZmE4MDczZDNiODU1ZDg0NjE3ODYxOWRiYzAyNjEwNThmMi4uNjYx
ZDViNGViNzUyZWE1NWFhMmQ4ZTRmOWVlZDYzODZlZGRhYzVmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKQEAgLTU3
LDYgKzU3LDExIEBAIHZvaWQgQ0RNRmFjdG9yeTo6dW5yZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9y
eSYgZmFjdG9yeSkKICAgICByZWdpc3RlcmVkRmFjdG9yaWVzKCkucmVtb3ZlQWxsKCZmYWN0b3J5
KTsKIH0KIAordm9pZCBDRE1GYWN0b3J5OjpyZXNldEZhY3RvcmllcygpCit7CisgICAgcGxhdGZv
cm1SZWdpc3RlckZhY3RvcmllcyhyZWdpc3RlcmVkRmFjdG9yaWVzKCkpOworfQorCiAjaWYgIVVT
RShHU1RSRUFNRVIpICYmICFVU0UoQVZGT1VOREFUSU9OKQogdm9pZCBDRE1GYWN0b3J5OjpwbGF0
Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKFZlY3RvcjxDRE1GYWN0b3J5Kj4mKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4
IDQ0ZWFhYjA3ZTc1N2FmZTU4YjUzNjFmNWFmMTJiMjQ3NzZhMDM1MmUuLmUxYWU2MDQyMTZhOTc1
OTJmMzNjYjgzNjJmYzJjMjFhMmIwODhiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQyLDcgKzQyLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IGNyZWF0ZUNETShj
b25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYpID0gMDsKIAotICAgIHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiByZWdp
c3RlcmVkRmFjdG9yaWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxDRE1G
YWN0b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCByZXNldEZhY3RvcmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyRmFjdG9yeShDRE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgdW5yZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCA4Zjlm
M2ViODc0NWMzNTIwMjgzMTRjNjA2ZDI4OWQ0ZTNmNzFhMDQ4Li43ZmUwOWYwYWYzZmQ3MzAzNjIz
NWMyMjc3YmFjZGViYTA2NDliMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGlj
OgogICAgICAgICBNb2NrLAogICAgICAgICBDbGVhcktleSwKICAgICAgICAgRmFpclBsYXlTdHJl
YW1pbmcsCisgICAgICAgIFJlbW90ZSwKICAgICB9OwogICAgIHZpcnR1YWwgSW1wbGVtZW50YXRp
b25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0ID0gMDsKIApAQCAtNjgsNyArNjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
KSA9IDA7CiAKLSAgICBlbnVtIGNsYXNzIEhEQ1BTdGF0dXMgeworICAgIGVudW0gY2xhc3MgSERD
UFN0YXR1cyA6IHVpbnQ4X3QgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWYWxpZCwKICAg
ICAgICAgT3V0cHV0UmVzdHJpY3RlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggODcyNWEz
MWQ4YmIzZTIyYmUyMWRmMDdlMzIwYjM2ZTc1MDM4NmUxYS4uZDQ2NGI3NGQxYzcyMDJhOWEzMzlk
ZmY2NWQwNmUwODIwODk2OWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTcyLDkgKzcy
LDkgQEAgcHVibGljOgogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vz
c2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yOwogICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBh
aXI8TWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3Nl
ZCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3Vi
bGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAK
LSAgICBlbnVtIGNsYXNzIFNlc3Npb25Mb2FkRmFpbHVyZSB7CisgICAgZW51bSBjbGFzcyBTZXNz
aW9uTG9hZEZhaWx1cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKICAgICAgICAgTm9TZXNz
aW9uRGF0YSwKICAgICAgICAgTWlzbWF0Y2hlZFNlc3Npb25UeXBlLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAppbmRleCBh
ZDk2OTYyMzYwNGNkMTQ3MDU1YTI3YjczMzZmNjc3YzBiM2FmMmM0Li5jYzVlNzE4NmY3NGVmOGU4
MTRjYjNhZjc1NWUxNjFhNjVjMjA4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaApAQCAtMzAsOSArMzAsMTEgQEAK
IAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNS2V5U3RhdHVzIHsKK2Vu
dW0gY2xhc3MgQ0RNS2V5U3RhdHVzIDogdWludDhfdCB7CiAgICAgVXNhYmxlLAogICAgIEV4cGly
ZWQsCiAgICAgUmVsZWFzZWQsCkBAIC00NCw0ICs0NiwyMCBAQCBlbnVtIGNsYXNzIENETUtleVN0
YXR1cyB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPiB7CisgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXMsCisg
ICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpVc2FibGUsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3Rh
dHVzOjpFeHBpcmVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6UmVsZWFzZWQsCisgICAg
V2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6OkNE
TUtleVN0YXR1czo6T3V0cHV0RG93bnNjYWxlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6
OlN0YXR1c1BlbmRpbmcsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9y
CisgICAgPjsKK307CisKK30KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDYxMmQ2NDVmYWE1MjQ4ZjcxZjFj
MTU2N2Y0NTA3ZTg5ZjNiMzFjZTUuLjg1MjU4N2NlZGEwNTEyMTQ0Nzk1MjJmYWMzOGU0YzBmYjk4
NzQ5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTQ4LDYgKzQ4
LDY3IEBAIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIHsKICAgICBDRE1SZXF1aXJl
bWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsK
ICAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGUgeyBDRE1SZXF1aXJlbWVudDo6T3B0
aW9uYWwgfTsKICAgICBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+IHNlc3Npb25UeXBlczsKKworICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CisgICAgICAgIGVuY29k
ZXIgPDwgaW5pdERhdGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBhdWRpb0NhcGFiaWxpdGll
czsKKyAgICAgICAgZW5jb2RlciA8PCB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgZW5jb2Rl
ciA8PCBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVu
dFN0YXRlOworICAgICAgICBlbmNvZGVyIDw8IHNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IGxhYmVsOworICAgICAgICBkZWNvZGVyID4+IGxhYmVsOworICAgICAg
ICBpZiAoIWxhYmVsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgZGVjb2Rl
ciA+PiBpbml0RGF0YVR5cGVzOworICAgICAgICBpZiAoIWluaXREYXRhVHlwZXMpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1N
ZWRpYUNhcGFiaWxpdHk+PiBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgZGVjb2RlciA+PiBh
dWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENE
TU1lZGlhQ2FwYWJpbGl0eT4+IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAgICBkZWNvZGVyID4+
IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDRE1SZXF1
aXJlbWVudD4gZGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBkZWNvZGVyID4+IGRpc3Rp
bmN0aXZlSWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXIpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAKKyAgICAgICAgT3B0aW9u
YWw8Q0RNUmVxdWlyZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBw
ZXJzaXN0ZW50U3RhdGU7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vz
c2lvblR5cGU+PiBzZXNzaW9uVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc2Vzc2lvblR5cGVz
OworICAgICAgICBpZiAoIXNlc3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCks
CisgICAgICAgICAgICBXVEZNb3ZlKCppbml0RGF0YVR5cGVzKSwKKyAgICAgICAgICAgIFdURk1v
dmUoKmF1ZGlvQ2FwYWJpbGl0aWVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnZpZGVvQ2FwYWJp
bGl0aWVzKSwKKyAgICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXIsCisgICAgICAgICAg
ICAqcGVyc2lzdGVudFN0YXRlLAorICAgICAgICAgICAgV1RGTW92ZSgqc2Vzc2lvblR5cGVzKSwK
KyAgICAgICAgfX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBh
YmlsaXR5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRp
YUNhcGFiaWxpdHkuaAppbmRleCA5MDFiNTRmZjA1MDhlZGE5YmJiODhjNWMxZGI4NjUzOGRjZTE0
MjgyLi5mODRhMGQxMmFiNGNkNTIwZTNmMGUwNGQ2NGViZWZjNjMxNjI1ODdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxp
dHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRp
YUNhcGFiaWxpdHkuaApAQCAtMzksNiArMzksMzkgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0
eSB7CiAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwogICAgIFN0cmluZyByb2J1c3RuZXNzOwogICAg
IE9wdGlvbmFsPENETUVuY3J5cHRpb25TY2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGNvbnRlbnRUeXBlOworICAgICAgICBl
bmNvZGVyIDw8IHJvYnVzdG5lc3M7CisgICAgICAgIGVuY29kZXIgPDwgZW5jcnlwdGlvblNjaGVt
ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0
aW9uYWw8Q0RNTWVkaWFDYXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAgICAgIGRlY29kZXIg
Pj4gY29udGVudFR5cGU7CisgICAgICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcm9idXN0bmVz
czsKKyAgICAgICAgZGVjb2RlciA+PiByb2J1c3RuZXNzOworICAgICAgICBpZiAoIXJvYnVzdG5l
c3MpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFs
PE9wdGlvbmFsPENETUVuY3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAg
ICBkZWNvZGVyID4+IGVuY3J5cHRpb25TY2hlbWU7CisgICAgICAgIGlmICghZW5jcnlwdGlvblNj
aGVtZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJu
IHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCisgICAgICAgICAgICBXVEZN
b3ZlKCpyb2J1c3RuZXNzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmVuY3J5cHRpb25TY2hlbWUp
LAorICAgICAgICB9fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdl
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2Fn
ZVR5cGUuaAppbmRleCBlNWY3OTZhOWUwZTA3NTFhYTAyNzgyYjliNjY2Y2EyMzFlZjdlNjA5Li45
NWJmMjhjMmFhOTRhM2RhNTA0NWI1ZWMwMGYzNThjZDI2ZDk1Y2EyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgK
QEAgLTMwLDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNz
IENETU1lc3NhZ2VUeXBlIHsKK2VudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgOiB1aW50OF90IHsK
ICAgICBMaWNlbnNlUmVxdWVzdCwKICAgICBMaWNlbnNlUmVuZXdhbCwKICAgICBMaWNlbnNlUmVs
ZWFzZSwKQEAgLTQxLDQgKzQzLDE4IEBAIGVudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgewogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsCisgICAg
ICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCwKKyAgICAgICAgV2Vi
Q29yZTo6Q0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLAorICAgICAgICBXZWJDb3JlOjpD
RE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlbGVhc2UsCisgICAgICAgIFdlYkNvcmU6OkNETU1lc3Nh
Z2VUeXBlOjpJbmRpdmlkdWFsaXphdGlvblJlcXVlc3QKKyAgICA+OworfTsKKworfQorCiAjZW5k
aWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCAyNWY3ODE2YTJmZTFkYTZm
OTBjMmZlZjc3NzU1MTQwNmFhMGY0YTAzLi43NDlmY2RmMmZjMzdhNWU5ZmU2MjVkNTNhM2UwMTFj
NzFjNGFlZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC00MSwxMSArNDEsMTEgQEAgY2xhc3MgQ0RNUHJpdmF0ZSB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAotICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlw
ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1T
ZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVk
Um9idXN0bmVzc2VzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ0RNUmVxdWlyZW1lbnQgZGlz
dGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBD
RE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5k
Q2xlYXJhYmxlKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXF1
aXJlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVx
dWlyZW1lbnQuaAppbmRleCA2OWFjMTJkMzE2YmY2NjU3YmIwYTI0ZGFmN2FlNGZhMGZkNGYxYzk4
Li41YjBiNzc4MGQyN2RmZWIxOTNkY2U2ZWNkYTcxNzg1MjhmN2NkNTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
LmgKQEAgLTMwLDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNs
YXNzIENETVJlcXVpcmVtZW50IHsKK2VudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90
IHsKICAgICBSZXF1aXJlZCwKICAgICBPcHRpb25hbCwKICAgICBOb3RBbGxvd2VkCkBAIC00MCw0
ICs0MiwxNyBAQCBlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IHsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpDRE1SZXF1aXJlbWVudD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50LAorICAgICAgICBXZWJDb3JlOjpD
RE1SZXF1aXJlbWVudDo6UmVxdWlyZWQsCisgICAgICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50
OjpPcHRpb25hbCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQK
KyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3Ry
aWN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVz
dHJpY3Rpb25zLmgKaW5kZXggYzUyZTI4MmExMmU5MWE0ODgxMGJkMThiODdlYjZhZDYzOGYyMTBh
OC4uOWNhMmFjNTllOGIxMzU0NjNhNTJkYjQ1ZTgwNzMxZjUwYzY5NGYzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rp
b25zLmgKQEAgLTM2LDYgKzM2LDM5IEBAIHN0cnVjdCBDRE1SZXN0cmljdGlvbnMgewogICAgIGJv
b2wgZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkIHsgZmFsc2UgfTsKICAgICBib29sIHBlcnNp
c3RlbnRTdGF0ZURlbmllZCB7IGZhbHNlIH07CiAgICAgSGFzaFNldDxDRE1TZXNzaW9uVHlwZSwg
V1RGOjpJbnRIYXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxD
RE1TZXNzaW9uVHlwZT4+IGRlbmllZFNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7
CisgICAgICAgIGVuY29kZXIgPDwgZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkOworICAgICAg
ICBlbmNvZGVyIDw8IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsKKyAgICAgICAgZW5jb2RlciA8PCBk
ZW5pZWRTZXNzaW9uVHlwZXM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+
CisgICAgc3RhdGljIE9wdGlvbmFsPENETVJlc3RyaWN0aW9ucz4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxib29sPiBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJEZW5pZWQ7CisgICAgICAgIGRlY29kZXIgPj4gZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVk
OworICAgICAgICBpZiAoIWRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVu
dFN0YXRlRGVuaWVkOworICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsK
KyAgICAgICAgaWYgKCFwZXJzaXN0ZW50U3RhdGVEZW5pZWQpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUs
IFdURjo6SW50SGFzaDxDRE1TZXNzaW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8
Q0RNU2Vzc2lvblR5cGU+Pj4gZGVuaWVkU2Vzc2lvblR5cGVzOworICAgICAgICBkZWNvZGVyID4+
IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICAgICAgaWYgKCFkZW5pZWRTZXNzaW9uVHlwZXMpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAg
ICAgICAgICAgKmRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCwKKyAgICAgICAgICAgICpwZXJz
aXN0ZW50U3RhdGVEZW5pZWQsCisgICAgICAgICAgICBXVEZNb3ZlKCpkZW5pZWRTZXNzaW9uVHlw
ZXMpLAorICAgICAgICB9fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNz
aW9uVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vz
c2lvblR5cGUuaAppbmRleCA2MDU3NGE1YTY5M2E5NmM0OWY0OWZiNzM0OTZlZDc1YjdlMWU2ZmJi
Li5lMDdjMzAwMjc5MzA1Zjc3NDNmMjJmY2Y1NDA2ZjJjZmE2ODFkZTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBl
LmgKQEAgLTMwLDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNs
YXNzIENETVNlc3Npb25UeXBlIHsKK2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90
IHsKICAgICBUZW1wb3JhcnksCiAgICAgUGVyc2lzdGVudFVzYWdlUmVjb3JkLAogICAgIFBlcnNp
c3RlbnRMaWNlbnNlCkBAIC00MCw0ICs0MiwxNyBAQCBlbnVtIGNsYXNzIENETVNlc3Npb25UeXBl
IHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZT4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBl
LAorICAgICAgICBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5LAorICAgICAgICBX
ZWJDb3JlOjpDRE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVjb3JkLAorICAgICAgICBX
ZWJDb3JlOjpDRE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2UKKyAgICA+OworfTsKKwor
fQorCiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcAppbmRleCA0NTExMWRjNzViNTUwODBjZWY0ZTVmYjM4YWUyNjMzYjM5ZWE3MjMz
Li44NjRkNmUzZGU4M2IwMmMzYjFjMGQzYWRiNTY1N2IzY2U3YjYxOTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkNETVJlc3RyaWN0aW9ucy5oIgogI2luY2x1
ZGUgIkNETVNlc3Npb25UeXBlLmgiCisjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxh
bGdvcml0aG0+CkBAIC0yOTAsMTAgKzI5MSwxMyBAQCBib29sIENETUZhY3RvcnlDbGVhcktleTo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiBDRE1Qcml2YXRlQ2xl
YXJLZXk6OkNETVByaXZhdGVDbGVhcktleSgpID0gZGVmYXVsdDsKIENETVByaXZhdGVDbGVhcktl
eTo6fkNETVByaXZhdGVDbGVhcktleSgpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRlQ2xl
YXJLZXk6OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSkgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRl
ZEluaXREYXRhVHlwZXMoKSBjb25zdAogewotICAgIC8vIGBrZXlpZHNgIGFuZCAnY2VuYycgYXJl
IHRoZSBvbmx5IHN1cHBvcnRlZCBpbml0IGRhdGEgdHlwZS4KLSAgICByZXR1cm4gKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImNlbmMiKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJ3ZWJtIikpOworICAgIHJldHVybiB7
CisgICAgICAgIEluaXREYXRhUmVnaXN0cnk6OmtleWlkc05hbWUoKSwKKyAgICAgICAgSW5pdERh
dGFSZWdpc3RyeTo6Y2VuY05hbWUoKSwKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6d2VibU5h
bWUoKSwKKyAgICB9OwogfQogCiBzdGF0aWMgYm9vbCBjb250YWluc1BlcnNpc3RlbnRMaWNlbnNl
VHlwZShjb25zdCBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+JiB0eXBlcykKQEAgLTMzNyw3ICszNDEs
NyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJl
c3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KENETVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNl
c3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KSBjb25zdAogewogICAgIC8vIE9ubHkgc3VwcG9ydCB0aGUgJ3RlbXBvcmFyeScgYW5kICdwZXJz
aXN0ZW50LWxpY2Vuc2UnIHNlc3Npb24gdHlwZXMuCiAgICAgaWYgKHNlc3Npb25UeXBlICE9IENE
TVNlc3Npb25UeXBlOjpUZW1wb3JhcnkgJiYgc2Vzc2lvblR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6
OlBlcnNpc3RlbnRMaWNlbnNlKQpAQCAtMzQ1LDEwICszNDksMTAgQEAgYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9u
VHlwZSYgc2UKICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24p
OwogfQogCi1ib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0
IFN0cmluZyYgcm9idXN0bmVzcykgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0CiB7CiAgICAgLy8gT25seSBl
bXB0eSBgcm9idXN0bmVzc2Agc3RyaW5nIGlzIHN1cHBvcnRlZC4KLSAgICByZXR1cm4gcm9idXN0
bmVzcy5pc0VtcHR5KCk7CisgICAgcmV0dXJuIHsgZW1wdHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVx
dWlyZW1lbnQgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWly
ZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0
aW9ucyYgcmVzdHJpY3Rpb25zKSBjb25zdApAQCAtNDk4LDcgKzUwMiw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpCiAgICAgICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNs
ZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYgTE9H
X0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcgbG9n
Z2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmgKaW5kZXggNjcwNGFlN2E5NTdmMzJmZTFmODQ5ODNlZDNiM2Y2NTAy
YTUzMTVhMi4uNGFiOWRlMGYwMmNlZWJiMjBhOTNjZGY2MWUzYjc3MGY1ZmRlODIzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC03NCwxMSArNzQsMTEgQEAgcHVibGljOgogICAgIENE
TVByaXZhdGVDbGVhcktleSgpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVDbGVhcktleSgpOwog
Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qg
ZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBj
b25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2Vz
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHND
b25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0
c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0
c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgQ0RNUmVxdWly
ZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAg
ICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xl
YXJhYmxlKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKQEAg
LTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXko
Q0RNSW5zdGFuY2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6IG1fcGFyZW50SW5zdGFuY2Uo
cGFyZW50KSB7IH0KICAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggY2E3MWU3ZTBiNTg2YzdiNTVi
MTEyNzMyYmFkNTliMDFkOGE0MTgxYi4uNWEzNjllY2E3NDZhZTc2NWQyYjNiODU2OGQ4ZGE5Mzg5
ZDhhMjNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcApAQCAtNjU1LDYgKzY1NSwxNCBAQCB2b2lkIE1lZGlhUGxheWVyOjphdHRlbXB0
VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIAogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQo
Ym9vbCBzaG91bGQpCit7CisgICAgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkID0gc2hv
dWxkOworICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91
bGQpOworfQorI2VuZGlmCisKIE1lZGlhVGltZSBNZWRpYVBsYXllcjo6ZHVyYXRpb24oKSBjb25z
dAogewogICAgIHJldHVybiBtX3ByaXZhdGUtPmR1cmF0aW9uTWVkaWFUaW1lKCk7CkBAIC0xMzEw
LDkgKzEzMTgsOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IE1lZGlhUGxheWVyOjpjYWNoZWRLZXlG
b3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogICAgIHJldHVybiBjbGllbnQoKS5t
ZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGtleUlkKTsKIH0KIAotYm9vbCBNZWRpYVBsYXll
cjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBNZWRpYVBsYXllcjo6a2V5
TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQogewotICAgIHJldHVybiBjbGllbnQoKS5tZWRp
YVBsYXllcktleU5lZWRlZChpbml0RGF0YSk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoaW5pdERhdGEpOwogfQogCiBTdHJpbmcgTWVkaWFQbGF5ZXI6Om1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKaW5kZXggN2U2Y2I4YTM5MGRmN2ZlMWE3YWFlMDE3MzlkYzk0OGY3NzY2
MjFlZS4uYWVmM2NlZTRhYWI5ZWEyMGM1NjllNjdhNDFlMTIwYjc2NDBlZmE2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0yMDAsNyAr
MjAwLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAg
ICAgdmlydHVhbCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5
SWQoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwg
Ym9vbCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIHsgfQog
ICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICNlbmRpZgogCkBAIC0zNjYsNiArMzY2
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RN
SW5zdGFuY2UmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBzZXRTaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkKGJvb2wpOworICAgIGJvb2wgc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZDsgfQorI2Vu
ZGlmCisKICAgICBib29sIHBhdXNlZCgpIGNvbnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0
OwogCkBAIC01MTksNyArNTI0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJZChj
b25zdCBTdHJpbmcmIGtleUlkKSBjb25zdDsKLSAgICBib29sIGtleU5lZWRlZChVaW50OEFycmF5
KiBpbml0RGF0YSk7CisgICAgdm9pZCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOwog
ICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAjZW5kaWYKIApA
QCAtNjY1LDYgKzY3MCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAg
ICBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBtX21lZGlhU3RyZWFtOwogI2VuZGlmCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgYm9vbCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxzZSB9OworI2Vu
ZGlmCiB9OwogCiBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCA5Zjdm
NmU2YjAyZDNiZWJlMDkwZWJjYzMyYTRiMGRjYTFjYzE3NWE4Li43YTgyMDQ3MGY5OTlhYzk5YTZh
OTlkOGYzNDI3NmM5ZjQ1NTkwYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjQzLDYgKzI0MywxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkQ29udGlu
dWVBZnRlcktleU5lZWRlZChib29sKSB7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dFRyYWNrUmVw
cmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDRmYzY3ODdkZDhkOTA3Y2FkNmEyNzdm
MzliMWVkMzJlZDY3OWE2ZDguLmI2YmFiZmNkZTVhMGQ0YjgxMThkMDNjYzkyZjFkNjE5ZDYxZDc3
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMjQ3
LDkgKzI0Nyw5IEBAIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tl
eVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCkgPSBkZWZhdWx0OwogQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjp+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCkgPSBkZWZh
dWx0OwogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21T
dHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVkSW5pdERhdGFUeXBl
cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZhbGlkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGlu
aXREYXRhVHlwZSk7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcih2YWxpZEluaXREYXRhVHlwZXMo
KSk7CiB9CiAKIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0NvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikg
Y29uc3QKQEAgLTMwNSw3ICszMDUsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRAogICAgIHJl
dHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1T
ZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKHNlc3Npb25UeXBlID09IENETVNlc3Np
b25UeXBlOjpUZW1wb3JhcnkpIHsKICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVu
dFN0YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKQEAgLTMxNiwxMyArMzE2LDEwIEBA
IGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvCiAgICAgcmV0dXJuIHN1cHBvcnRzQ29uZmlndXJhdGlv
bihjb25maWd1cmF0aW9uKTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0CitWZWN0
b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0ZWRSb2J1
c3RuZXNzZXMoKSBjb25zdAogewotICAgIGlmIChyb2J1c3RuZXNzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KICAgICAvLyBGSVhNRTogRGV0ZXJtaW5lIGFuIGVudW1lcmF0ZWQg
bGlzdCBvZiByb2J1c3RuZXNzIHZhbHVlcyBzdXBwb3J0ZWQgYnkgRlBTLgotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSB9OwogfQogCiBDRE1SZXF1aXJlbWVudCBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJl
bWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rp
b25zJikgY29uc3QKQEAgLTM2Niw3ICszNjMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIXN1
cHBvcnRzSW5pdERhdGFUeXBlKGluaXREYXRhVHlwZSkpCisgICAgaWYgKCF2YWxpZEluaXREYXRh
VHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoaW5pdERhdGFUeXBlID09IHNpbmZOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggNTM4Njk2OWY5NDk3NmYzODM2ODAxODc0MWJhZmQx
MjU1MWUyOGI4NS4uMzg3YjlmOTI1YWQ3YWZiYWUyZDJjNTYxMmY4NGI0MzRjMGYxMGY0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTU1LDExICs1NSwxMSBA
QCBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAgICAgdmlydHVh
bCB+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAKLSAgICBib29sIHN1cHBvcnRzSW5p
dERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8
QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhS
ZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJl
c3RyaWN0aW9ucyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlw
ZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNz
KGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9u
VHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1
aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IG92ZXJyaWRl
OwogICAgIENETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmln
aW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggYjExZjcxYTliNWUzOGJmNjk4YjEz
OTQ5ZGRkZTg2ZjNkZDk5NGNjMS4uN2YwZTJkNWFjMDBlNjA2MmQzNWJhYzQ1ZDZlMWU3MWQ0NDAz
ZTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3MzI2Nzc1ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0
NjQ3Y2I4ZDMxLi5mMDliMjg5YTMzZTdlYzA0MGYwNGQxZjZmOTlhZjhlZjkwZDk3NzA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtNTgwLDcgKzU4MCw3IEBAIHN0YXRpYyBib29sIGlz
RXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAg
IHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNw
b25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNl
c3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJf
cykpIHsKICAgICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIFtt
X2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtl
eVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5
UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRh
LmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFW
Q29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlT
dHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV1dOwogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUg
Y2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBh
IHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uIG1l
dGhvZCA9IHByb3RvY29sX2dldE1ldGhvZERlc2NyaXB0aW9uKEBwcm90b2NvbChBVkNvbnRlbnRL
ZXlTZXNzaW9uRGVsZWdhdGUpLCBAc2VsZWN0b3IoY29udGVudEtleVNlc3Npb246Y29udGVudEtl
eVJlcXVlc3REaWRTdWNjZWVkOiksIE5PLCBZRVMpOwpAQCAtMTE0MCw3ICsxMTQwLDggQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVu
dGlmaWVyQ2hhbmdlZChOU0RhdGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zZXNzaW9uSWQg
PSBzZXNzaW9uSWQ7Ci0gICAgbV9jbGllbnQtPnNlc3Npb25JZENoYW5nZWQobV9zZXNzaW9uSWQp
OworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNlc3Npb25JZENoYW5nZWQo
bV9zZXNzaW9uSWQpOwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6Z3JvdXBTZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoQVZDb250ZW50S2V5UmVw
b3J0R3JvdXAqIGdyb3VwLCBOU0RhdGEgKnNlc3Npb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KaW5kZXggOTUyNDQxMWFiMmM5N2E5YWRmYjYxNTcxYTg4NDg5YTE0Nzg4MDYwZi4u
ODM4ZWM4MTA0YjE3OTU0MTA5ZDIyMWJiYjYwNjk4YWQyMmY5OGNkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCkBAIC0xNjc3LDkgKzE2NzcsMTIgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIK
ICAgICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKFN0cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIp
LCAwKTsKIAogICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1v
dmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgaWYgKCFwbGF5ZXIo
KS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKKyAgICAgICAgcGxheWVyKCktPmtleU5lZWRl
ZChpbml0RGF0YS5wdHIoKSk7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICAgICAg
aWYgKCFwbGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCisjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICAgICAgaWYgKG1fY2RtSW5z
dGFuY2UpIHsKQEAgLTE3MTIsNyArMTcxNSw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXll
cigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBwbGF5ZXIoKS0+a2V5TmVl
ZGVkKGluaXREYXRhLnB0cigpKTsKKworICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgbV9rZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleUlELCBhdlJlcXVlc3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCBjZTVkOGY3ZDZiZGYzOGI1OTIy
MDkzMDJhNmU2ZDcxYjM2OTY2MzJkLi4wYTRkNjU3NTBhMTU0YzVlNWVlMTliNTgzMGM5ZmJhZTAw
MDFlM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAt
OTgsNiArOTgsMTEgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVz
KFZlY3RvcjxTdHJpbmc+JiYgdHlwZXMpCiAgICAgICAgIG1fc3VwcG9ydGVkRGF0YVR5cGVzLmFw
cGVuZCh0eXBlKTsKIH0KIAordm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkUm9idXN0
bmVzcyhWZWN0b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3NlcykKK3sKKyAgICBtX3N1cHBvcnRlZFJv
YnVzdG5lc3MgPSByb2J1c3RuZXNzZXMubWFwKFtdIChhdXRvJiByb2J1c3RuZXNzKSAtPiBBdG9t
U3RyaW5nIHsgcmV0dXJuIHJvYnVzdG5lc3M7IH0pOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RN
UHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewogICAg
IHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CkBAIC0xMDgs
MTEgKzExMywxOCBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZh
Y3RvcnkpCiB7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tD
RE06OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewogICAgIGlmIChtX2ZhY3Rvcnkp
Ci0gICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5z
KGluaXREYXRhVHlwZSk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9mYWN0
b3J5LT5zdXBwb3J0ZWREYXRhVHlwZXMoKTsKKyAgICByZXR1cm4geyB9OworfQorCitWZWN0b3I8
QXRvbVN0cmluZz4gTW9ja0NETTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKK3sKKyAg
ICBpZiAobV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1
c3RuZXNzKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0Nv
bmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKSBjb25zdApAQCAtMTM5LDcgKzE1MSw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNDb25m
aWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0
c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9uVHlwZSYg
c2Vzc2lvblR5cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVz
KCkuY29udGFpbnMoc2Vzc2lvblR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDgs
MTMgKzE2MCw2IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0
bmVzcykgY29uc3QKLXsKLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0
b3J5LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0bmVzcyk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCiBNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2
ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QKIHsKICAgICBpZiAobV9mYWN0
b3J5KQpAQCAtMTk5LDcgKzIwNCw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygp
IGNvbnN0CiAKIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghc3Vw
cG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YSk7CkBAIC0zMjUsNyArMzMw
LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6
OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFs
c2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VT
ZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RN
RmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBu
dWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzMzLDcgKzMzOCw3IEBAIHZvaWQgTW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
RCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3Ry
aW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNp
emUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0
cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAg
ICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3Mp
KSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdl
NTI1MDU5ZjEuLjZjYjkxNWM4NTAxNTU4ZjEwYmI4ZmM1YjJkYTUyODM1MDQwZjBlYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTUyLDggKzUyLDggQEAgcHVi
bGljOgogICAgIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vz
c2lvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7IH0KICAg
ICB2b2lkIHNldFN1cHBvcnRlZFNlc3Npb25UeXBlcyhWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlw
ZT4mJiB0eXBlcykgeyBtX3N1cHBvcnRlZFNlc3Npb25UeXBlcyA9IFdURk1vdmUodHlwZXMpOyB9
CiAKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsgfQotICAgIHZvaWQgc2V0U3VwcG9ydGVk
Um9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3MpIHsgbV9zdXBwb3J0ZWRSb2J1
c3RuZXNzID0gV1RGTW92ZShyb2J1c3RuZXNzKTsgfQorICAgIGNvbnN0IFZlY3RvcjxBdG9tU3Ry
aW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9i
dXN0bmVzczsgfQorICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5n
PiYmKTsKIAogICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNS
ZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVp
cmVtZW50OyB9CiAgICAgdm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQo
TWVkaWFLZXlzUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpIHsgbV9kaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQgPSByZXF1aXJlbWVudDsgfQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRl
OgogICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQg
eyBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gbV9zdXBwb3J0ZWREYXRhVHlwZXM7CiAgICAgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+
IG1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVk
Um9idXN0bmVzczsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNz
OwogICAgIFZlY3RvcjxNZWRpYUtleUVuY3J5cHRpb25TY2hlbWU+IG1fc3VwcG9ydGVkRW5jcnlw
dGlvblNjaGVtZXM7CiAgICAgYm9vbCBtX3JlZ2lzdGVyZWQgeyB0cnVlIH07CiAgICAgYm9vbCBt
X2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKQEAgLTEwOSwxMSArMTA5LDExIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1vY2tDRE1JbnN0YW5jZTsKIAotICAgIGJv
b2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOwor
ICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmlu
YWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1
cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiwg
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgYm9v
bCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNz
aW9uVHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFs
OwogICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJl
bWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNS
ZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBwZXJz
aXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRp
c3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3Qg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CkBAIC0xNTcsNyArMTU3
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBM
aWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBlNjg2YzYzYzE4
ZjM1ODZmZmNhNzRlMTczMWMwZmYyNzc0MWIwZDNiLi5jNWFmM2I1ZmJlMGNhYmI4YjJkZTMwZDA4
NmQzM2E0Zjc5NDc5MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CkBAIC0xNiw2ICsxNiwxMCBAQCAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQ
VVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5h
cHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgorJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmlu
CkBAIC0xMDgsNiArMTEyLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDFmY2Y3ZTQxMTA3ZmIzZjdiZTJiYzY5OTkzNjZh
MDVmOGU2NTA4MjguLmM3M2UyODczZDliZmNhNzE0NjZjOTQ3MzExM2I5MDAyNjBiNTE3NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAt
MTI5LDYgKzEyOSwyMSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3Nh
Z2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Q
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMGQxNzI1NTg3NWExNmVjNmQzZTZhZmQyNTA2
YjUxNTU3NjM1NDA0Li4yZDAwNzU4N2E0NTg2MTMwNmY0MmRjYzM1MDhkNjVjZmNiZTYyZWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDYsNiArMTQ2LDExIEBAIE1FU1NBR0Vf
UkVDRUlWRVJTID0gXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFu
YWdlciBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgXAogICAgIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAorICAgIFJlbW90ZUNETVByb3h5IFwKKyAg
ICBSZW1vdGVDRE1GYWN0b3J5UHJveHkgXAorICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkgXAor
ICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCiAgICAgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IGE2Y2VlNTRjOTdjOTIxNWE2ODczZjRkY2IxMmJkZTQ3YzFkYzQwZWMuLjli
ZDdlOTk4MDcwNjgzZDY2YWIzZGNhMTE2YThlYmY4MTJlYmI1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAg
LTU4LDkgKzU4LDE3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5j
bHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0KICNp
bmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5TWVz
c2FnZXMuaCIKKyNlbmRpZgorCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTE4Niw2ICsxOTQsMTcgQEAgTGliV2ViUlRDQ29kZWNzUHJveHkmIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxpYldlYlJUQ0NvZGVjc1Byb3h5KCkKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUNETUZhY3RvcnlQcm94eSYg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2RtRmFjdG9yeVByb3h5KCkKK3sKKyAgICBpZiAo
IW1fY2RtRmFjdG9yeVByb3h5KQorICAgICAgICBtX2NkbUZhY3RvcnlQcm94eSA9IG1ha2VVbmlx
dWU8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PigqdGhpcyk7CisKKyAgICByZXR1cm4gKm1fY2RtRmFj
dG9yeVByb3h5OworfQorI2VuZGlmCisKKwogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKQEAgLTIzNiw2ICsyNTUsMjcgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIEkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBj
ZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rp
b24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVD
RE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2Rt
RmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5k
aWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mIHJlcGx5RW5jb2RlcikKQEAgLTI1Niw2ICsyOTYsMjcgQEAgdm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorI2VuZGlmCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21X
ZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAg
ICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUlu
c3RhbmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5
UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3Rv
cnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogI2Vu
ZGlmCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI2Niw3ICszMjcsNyBAQCBjb25z
dCBTdHJpbmcmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhQ2FjaGVEaXJlY3Rvcnko
KSBjb25zdAogICAgIHJldHVybiBtX2dwdVByb2Nlc3MtPm1lZGlhQ2FjaGVEaXJlY3RvcnkobV9z
ZXNzaW9uSUQpOwogfQogCi0jaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiBjb25zdCBTdHJpbmcmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdAogewogICAgIHJldHVybiBtX2dwdVByb2Nlc3MtPm1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkobV9zZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMmI5YmQxZjg4N2Jh
ZGFmYTRlYTVjNGJhMzQxNjlkOGI5NzhmZDYyZC4uNTY4ODUyYTQzMjlkYWFlOTRiN2YzYTgyZGU0
MzNkNTAwZTNkZmM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgR1BVUHJvY2VzczsKIGNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5OwogY2xh
c3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOworY2xhc3MgUmVt
b3RlQ0RNRmFjdG9yeVByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7
CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyOwpAQCAtNzAsNiArNzEsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSYgY2RtRmFjdG9y
eVByb3h5KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTExMSw2ICsxMTYsOSBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxMaWJXZWJSVENDb2RlY3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsK
ICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWI0YWZk
NGI0MzY3NzdkMWM0ZDEzZjg3MGI0NGRkMmIzNjk4MTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKQEAg
LTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1Db25maWd1cmF0
aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHku
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3Jp
dGhtcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK1JlbW90ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY29ubmVjdGlvbikKK3sKK30KKworUmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojp+UmVt
b3RlQ0RNRmFjdG9yeVByb3h5KCkgPSBkZWZhdWx0OworCitzdGF0aWMgQ0RNRmFjdG9yeSogZmFj
dG9yeUZvcktleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBhdXRvJiBm
YWN0b3JpZXMgPSBDRE1GYWN0b3J5OjpyZWdpc3RlcmVkRmFjdG9yaWVzKCk7CisgICAgYXV0byBm
b3VuZEluZGV4ID0gZmFjdG9yaWVzLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIGZhY3RvcnkpIHsg
cmV0dXJuIGZhY3RvcnktPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSk7IH0pOworICAgIGlm
IChmb3VuZEluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gZmFjdG9yaWVzW2ZvdW5kSW5kZXhdOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQ
cm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKT4m
JiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gZmFjdG9yeSA9IGZhY3RvcnlGb3JLZXlTeXN0ZW0o
a2V5U3lzdGVtKTsKKyAgICBpZiAoIWZhY3RvcnkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0s
IHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHByaXZhdGVDRE0gPSBm
YWN0b3J5LT5jcmVhdGVDRE0oa2V5U3lzdGVtKTsKKyAgICBpZiAoIXByaXZhdGVDRE0pIHsKKyAg
ICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBhdXRvIHByb3h5ID0gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwg
V1RGTW92ZShwcml2YXRlQ0RNKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlQ0RNSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb24gPSBwcm94eS0+Y29uZmlndXJhdGlvbigpOworICAgIGFkZFByb3h5KGlkZW50aWZpZXIs
IFdURk1vdmUocHJveHkpKTsKKyAgICBjb21wbGV0aW9uKFdURk1vdmUoaWRlbnRpZmllciksIFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKGZhY3RvcnlG
b3JLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0
KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRl
c3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNl
aXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IG1faW5zdGFuY2Vz
LmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBl
PihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpbnN0YW5jZS0+ZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQor
ICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
K30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHBy
b3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlm
aWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5z
dGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAg
aW5zdGFuY2UtPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNv
ZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIp
Cit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6YWRkUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNETVByb3h5PiYmIHByb3h5KQoreworICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRh
aW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnNldChpZCwgV1RGTW92ZShwcm94eSkpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmll
ciBpZCkKK3sKKyAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94
aWVzLnJlbW92ZShpZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0
YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVDRE1JbnN0YW5jZVByb3h5PiYmIGluc3RhbmNlKQoreworICAgIEFTU0VSVCghbV9pbnN0YW5j
ZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX2luc3RhbmNlcy5zZXQoaWQsIFdURk1vdmUoaW5zdGFu
Y2UpKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNlKFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9pbnN0YW5jZXMu
Y29udGFpbnMoaWQpKTsKKyAgICBtX2luc3RhbmNlcy5yZW1vdmUoaWQpOworfQorCitSZW1vdGVD
RE1JbnN0YW5jZVByb3h5KiBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmdldEluc3RhbmNlKGNvbnN0
IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYgaWQpCit7CisgICAgcmV0dXJuIG1faW5zdGFu
Y2VzLmdldChpZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRTZXNzaW9u
KFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCgh
bV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3Zl
KHNlc3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Np
b24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQo
bV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWIxY2NjOTViYmQzZmUzYjlm
MzM1MmQ4NTAwMjc3YTRiZmQzOTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCkBAIC0wLDAgKzEsOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNl
UHJveHk7CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTsKK2NsYXNzIFJlbW90
ZUNETVByb3h5Oworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90
ZUNETUZhY3RvcnlQcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnlQ
cm94eSgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIp
IHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9
CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworCisgICAgdm9pZCBhZGRQcm94eShSZW1v
dGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYpOworICAg
IHZvaWQgcmVtb3ZlUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZElu
c3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETUluc3RhbmNlUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlSW5zdGFuY2UoUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBnZXRJbnN0
YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImKTsKKworICAgIHZvaWQgYWRk
U2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKworICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJl
dHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7IH0KKworcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikg
ZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZpZXIm
JiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQ0RNUHJveHk+PiBtX3Byb3hpZXM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5
Pj4gbV9pbnN0YW5jZXM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBt
X3Nlc3Npb25zOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA0N2M1ZTZlNjFjNDIwNzgzMWRhMGJkMTE4YTZhYWViNDBkMzMxMzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCitt
ZXNzYWdlcyAtPiBSZW1vdGVDRE1GYWN0b3J5UHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3Jl
YXRlQ0RNKFN0cmluZyBrZXlTeXN0ZW0pIC0+IChXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXIg
aWQsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikg
U3luY2hyb25vdXMKKyAgICBTdXBwb3J0c0tleVN5c3RlbShTdHJpbmcga2V5U3lzdGVtKSAtPiAo
Ym9vbCByZXN1bHQpIFN5bmNocm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJlZDkyNTQ1YjdmZDBkNGQzMmY1MTI0MjUxZjhiMDAxNWNjYTk1OGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVD
RE1JbnN0YW5jZVByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxS
ZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYp
Cit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLCBSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24mJj4oeworICAgICAgICBwcml2LT5rZXlTeXN0ZW0oKSwKKyAgICB9KTsK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+KG5ldyBS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUocHJpdiksIFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0
b3J5LCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUo
ZmFjdG9yeSkpCisgICAgLCBtX2luc3RhbmNlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZp
Z3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdl
YkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1f
aW5zdGFuY2UtPmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSA9PSBD
RE1JbnN0YW5jZTo6U3VjY2VlZGVkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
OjpzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sIGFsbG93ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1f
aW5zdGFuY2UtPnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGFsbG93ZWQpID09IENE
TUluc3RhbmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6
OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBhbGxvd2VkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX2luc3RhbmNl
LT5zZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGFsbG93ZWQpID09IENETUluc3RhbmNlOjpTdWNj
ZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRp
ZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGNlcnRpZmljYXRlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFjZXJ0
aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKGZhbHNlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGNvbXBsZXRpb24obV9pbnN0YW5jZS0+c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSkgPT0gQ0RNSW5z
dGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9pbnN0YW5j
ZS0+c2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpID09IENETUluc3RhbmNlOjpTdWNjZWVk
ZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHByaXZTZXNzaW9uID0gbV9pbnN0YW5j
ZS0+Y3JlYXRlU2Vzc2lvbigpOworICAgIGlmICghcHJpdlNlc3Npb24gfHwgIW1fZmFjdG9yeSkg
eworICAgICAgICBjb21wbGV0aW9uKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
YXV0byBpZGVudGlmaWVyID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKKyAgICBhdXRvIHNlc3Npb24gPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVh
c2VOb25OdWxsKCksIGlkZW50aWZpZXIpOworICAgIG1fZmFjdG9yeS0+YWRkU2Vzc2lvbihpZGVu
dGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24pKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldEhEQ1BTdGF0dXMoV2ViQ29yZTo6
Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXMgc3RhdHVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5zZXRIRENQ
U3RhdHVzKHN0YXR1cykgPT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZjZmMTExMWY3MTIwNzQ2N2NmM2NiYjc4
MDdlZWQ4OTFkNGFlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0
YW5jZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENETUluc3RhbmNlOworc3RydWN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb247Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBS
ZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSA6IHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNETUluc3RhbmNlUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQ
cm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmKTsKKyAgICB+UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOyB9
CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2UmIGluc3RhbmNlKCkgeyByZXR1cm4gbV9pbnN0YW5j
ZTsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7
CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94
eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFs
OworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJz
QWxsb3dlZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAg
dm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJik7Cisg
ICAgdm9pZCBzZXRIRENQU3RhdHVzKFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RN
RmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBt
X2luc3RhbmNlOworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+
IG1fY29uZmlndXJhdGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+
IG1fc2Vzc2lvbnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNz
YWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kZDIxOTc0NjdkMDk2NTNmNDBkMDdmZTc5NWMwNmY5ZDA1NDc2
NzA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7Cisg
ICAgQ3JlYXRlU2Vzc2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXIgaWQpIFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24p
IC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAgU2V0RGlzdGluY3RpdmVJZGVudGlm
aWVyc0FsbG93ZWQoYm9vbCBhbGxvd2VkKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cwor
ICAgIFNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBhbGxvd2VkKSAtPiAoYm9vbCBzdWNj
ZXNzKSBTeW5jaHJvbm91cworICAgIFNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25v
dXMKKyAgICBTZXRTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyBkaXJlY3RvcnkpIC0+IChib29sIHN1
Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAgU2V0SERDUFN0YXR1cyhXZWJDb3JlOjpDRE1JbnN0YW5j
ZTo6SERDUFN0YXR1cyBzdGF0dXMpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg1MjFk
Njg4ZTgwZTAxYWE4NDVkZDA5MGIyM2M4OGUxMThjZjcyZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCIKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4gUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0
b3J5LCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHNlc3Np
b25Qcm94eSA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4o
bmV3IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1v
dmUoc2Vzc2lvbiksIGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRy
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsK
KyAgICBzZXNzaW9uUHJveHktPm1fc2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7
CisgICAgcmV0dXJuIHNlc3Npb25Qcm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFj
dG9yeVByb3h5PiYmIGZhY3RvcnksIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYg
c2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQor
ICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3Nlc3Npb24oV1RGTW92
ZShzZXNzaW9uKSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6flJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
KCkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjb21w
bGV0aW9uKQoreworICAgIGlmICghaW5pdERhdGEuYnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxl
dGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlw
ZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZN
b3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNl
c3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0
aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
c3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30K
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZShTdHJp
bmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sK
KyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24odHJ1ZSwg
eyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9zZXNzaW9uLT51cGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwg
KnJlc3BvbnNlLmJ1ZmZlcigpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChi
b29sIHNlc3Npb25DbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvblRpbWUs
IE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKHNlc3Npb25DbG9zZWQsIFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4
cGlyYXRpb25UaW1lKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgdHlwZSwgU3RyaW5nIHNlc3Np
b25JZCwgU3RyaW5nIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7
CisgICAgbV9zZXNzaW9uLT5sb2FkU2Vzc2lvbih0eXBlLCBzZXNzaW9uSWQsIG9yaWdpbiwgW2Nv
bXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNz
aW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBl
eHBpcmF0aW9uVGltZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1l
c3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJsZSB7CisgICAg
ICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJhdGlvblRp
bWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZWVkZWQsIGZhaWx1cmUpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3Nl
U2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBtX3Nlc3Npb24tPmNsb3NlU2Vz
c2lvbihzZXNzaW9uSWQsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0
YWJsZSB7IGNvbXBsZXRpb24oKTsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sK
KyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBs
ZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgZXhw
aXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlPiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CisgICAgICAgIGlmIChleHBpcmVk
U2Vzc2lvbnNEYXRhKQorICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0g
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0Rh
dGEpKTsKKyAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKGtleVN0YXR1c2VzKSwgV1RGTW92ZShl
eHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNz
aW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQp
Cit7CisgICAgbV9zZXNzaW9uLT5zdG9yZVJlY29yZE9mS2V5VXNhZ2Uoc2Vzc2lvbklkKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMo
S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAg
ICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVz
ZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAg
ICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2VuZE1lc3NhZ2UodHlw
ZSwgV1RGTW92ZShtZXNzYWdlKSksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpLCBtX2lkZW50aWZp
ZXIpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNTg0NjQwODNkY2FjM2Q3YWQ1ZDU0YWViMWNmZDBjYjIzMGJkNTA1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5
UHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5KCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZh
Y3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShXZWFrUHRyPFJl
bW90ZUNETUZhY3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4m
JiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBUeXBlcworICAgIHVzaW5nIExpY2Vu
c2VUeXBlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZTsKKyAgICB1
c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3RvcjsKKyAgICB1c2luZyBNZXNzYWdlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpNZXNzYWdlOworICAgIHVzaW5nIFNlc3Npb25Mb2FkRmFpbHVyZSA9IFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOworICAgIHVzaW5nIExpY2Vuc2VD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlJiYsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sLCBib29sKT47CisgICAgdXNp
bmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBP
cHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8
TWVzc2FnZT4mJiwgYm9vbCk+OworICAgIHVzaW5nIExvYWRTZXNzaW9uQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgT3B0aW9uYWw8
ZG91YmxlPiYmLCBPcHRpb25hbDxNZXNzYWdlPiYmLCBib29sLCBTZXNzaW9uTG9hZEZhaWx1cmUp
PjsKKyAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZT4mJiwgYm9vbCk+OworICAgIHVzaW5nIFN0b3JlUmVjb3JkQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lk
IHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
KTsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgTGljZW5zZVR5cGUs
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJik7CisgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgU3RyaW5nIHNl
c3Npb25JZCwgU3RyaW5nIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKTsKKyAgICB2b2lk
IGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJh
Y2smJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJik7CisgICAgdm9pZCBz
dG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOworCisgICAgLy8g
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlT
dGF0dXNWZWN0b3ImJikgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1N
ZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsK
KyAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5OworICAgIFJlZjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIzM2Vl
OWMzMTVjZjI4OWYyN2ZhZjcxYTJjZGIzYmQ0OWZiMTE2YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgTm90UmVmQ291bnRlZCB7CisKKyAgICBSZXF1ZXN0
TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIEF0
b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgaW5p
dERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5n
IHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkg
QXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQsIFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIE9w
dGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisg
ICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0
eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luKSAtPiAoT3B0aW9uYWw8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBPcHRp
b25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZh
aWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9uKFN0cmluZyBzZXNzaW9uSWQpIC0+ICgpIEFz
eW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3RyaW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlKSAtPiAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXMsIE9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisg
ICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmluZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGFhYTM0Njc1MWE3OWQ2NzY4OGY1YjJlYzhlMjJhOGVhNzlhM2QyYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKworI2luY2x1ZGUgIlJlbW90ZUNETUlu
c3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHku
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1Qcml2YXRlLmg+CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90
ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RN
UHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBSZW1vdGVDRE1Db25maWd1cmF0aW9u
JiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLAorICAgICAgICBw
cml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXNzaW9ucygpCisgICAg
fSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Qcml2YXRlJ3MgcHJpdmF0ZSBjb25z
dHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PihuZXcg
UmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2KSwgV1RGTW92ZShj
b25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bmlxdWVfcHRyPENE
TVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+JiYgY29u
ZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9w
cml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25m
aWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94eSgpID0g
ZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJp
dmF0ZS0+c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBS
ZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0
cmljdGlvbnMmIHJlc3RyaWN0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5zdXBwb3J0c0NvbmZpZ3Vy
YXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykpOworfQor
Cit2b2lkIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c3VwcG9ydHNTZXNzaW9uVHlw
ZVdpdGhDb25maWd1cmF0aW9uKHR5cGUsIGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1v
dGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBkYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFkYXRhLmJ1ZmZlcigpKSB7CisgICAg
ICAgIGNvbXBsZXRpb24oZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBs
ZXRpb24obV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsICpkYXRhLmJ1ZmZlcigpKSk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJl
bWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25z
dCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChD
RE1SZXF1aXJlbWVudCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0
ZS0+ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbmZpZ3VyYXRpb24sIHJlc3Ry
aWN0aW9ucykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpwZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBj
b25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChDRE1SZXF1aXJlbWVudCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJp
dmF0ZS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rp
b25zKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNB
cmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5kaXN0aW5jdGl2
ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbmZpZ3VyYXRpb24p
KTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gcHJpdmF0ZUluc3Rh
bmNlID0gbV9wcml2YXRlLT5jcmVhdGVJbnN0YW5jZSgpOworICAgIGlmICghcHJpdmF0ZUluc3Rh
bmNlIHx8ICFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBpbnN0YW5jZSA9IFJlbW90ZUNETUluc3RhbmNl
UHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBwcml2YXRlSW5zdGFu
Y2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZpZ3VyYXRpb24oKTsKKyAgICBt
X2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1vdmUoaW5zdGFuY2UpKTsKKyAg
ICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2
b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAgbV9wcml2YXRl
LT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgcmVzcG9uc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYp
PiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPnNhbml0aXplUmVz
cG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnNh
bml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0
aW9uKG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKSk7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmEzODBmYzUxM2JhMTc4OTdjNWYzNDZlZjUxYTU3YWFiOTBiMThkZDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQ
cm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBDRE1Qcml2YXRlOworY2xhc3MgU2hhcmVkQnVmZmVyOworZW51
bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENETVNlc3Npb25U
eXBlIDogdWludDhfdDsKK3N0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworc3RydWN0
IENETVJlc3RyaWN0aW9uczsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTsKK3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb247
CitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbjsKKworY2xhc3MgUmVtb3RlQ0RNUHJveHkg
OiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5UHJveHk+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmKTsKKyAg
ICB+UmVtb3RlQ0RNUHJveHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAg
IFJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZp
Z3VyYXRpb24+JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBN
ZXNzYWdlcworICAgIHZvaWQgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3Qg
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJl
c3RyaWN0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNl
c3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OkNETVJlcXVpcmVtZW50KT4mJik7CisgICAgdm9pZCBwZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpDRE1SZXF1aXJlbWVudCk+JiYpOworICAgIHZvaWQgZGlzdGluY3RpdmVJZGVudGlm
aWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCBjcmVhdGVJbnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmKTsK
KyAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCk7CisgICAgdm9pZCBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgcmVzcG9uc2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYpPiYmKTsKKyAg
ICB2b2lkIHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4mJik+JiYpOworCisgICAgV2Vha1B0cjxS
ZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6Q0RNUHJpdmF0ZT4gbV9wcml2YXRlOworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25m
aWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2NGU1MzUzMWFlNzQ0ZDA0NTE3MTk0MTNiNDNiZmFjMTU2ODQw
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3Nh
Z2VzIC0+IFJlbW90ZUNETVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFN1cHBvcnRzQ29uZmln
dXJhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU3VwcG9ydHNDb25maWd1
cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zIHJl
c3RyaWN0aW9ucykgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzU2Vz
c2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNU2Vzc2lv
blR5cGUgdHlwZSwgc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbikgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzSW5p
dERhdGEoQXRvbVN0cmluZyB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0
YSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIERpc3RpbmN0aXZlSWRlbnRpZmll
cnNSZXF1aXJlbWVudChzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
cykgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCByZXN1bHQpIFN5bmNo
cm9ub3VzCisgICAgUGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoc3RydWN0IFdlYkNvcmU6OkNE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgc3RydWN0IFdlYkNvcmU6OkNE
TVJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RN
UmVxdWlyZW1lbnQgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIERpc3RpbmN0aXZlSWRlbnRpZmll
cnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoc3RydWN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJv
bm91cworICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBMb2FkQW5kSW5pdGlhbGl6ZSgpCisg
ICAgU2FuaXRpemVSZXNwb25zZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgcmVzcG9u
c2UpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgcmVzdWx0KSBTeW5jaHJvbm91
cworICAgIFNhbml0aXplU2Vzc2lvbklkKFN0cmluZyBzZXNzaW9uSWQpIC0+IChPcHRpb25hbDxT
dHJpbmc+IHJlc3VsdCkgU3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAK
aW5kZXggZDllM2JkMzcyNzJjNjI3MWMxYmM4OWFlMmI3ZjMyN2VjMmVhMmNiYS4uNTAzYzlkMWVl
ZGY3M2EwMTc2NjliODVlMmZmYTM3MTQ2OGZkMzFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAt
MjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1RyYWNrUHJveHkuaCIK
ICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgpAQCAtNDYsNiArNDgs
MTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyUHJpdmF0ZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDg5LDE3ICs0OTUsMTYg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXll
ckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9v
bCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5
KikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWlu
dDhBcnJheSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CiB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29u
c3QgU3RyaW5nJiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKQordm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgaW5pdERhdGEpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkKGluaXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGluaXREYXRhLT5kYXRhKCkpLCBpbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKSksIG1f
aWQpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyV2FpdGlu
Z0ZvcktleUNoYW5nZWQoKQpAQCAtNjg2LDYgKzY5MSwzNCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6OmtleUFkZGVkKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpbnN0YW5jZUlkKQoreworICAgIGlmIChhdXRv
KiBpbnN0YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5j
ZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0YW5jZUlkKSkKKyAgICAgICAgbV9wbGF5
ZXItPmNkbUluc3RhbmNlQXR0YWNoZWQoaW5zdGFuY2VQcm94eS0+aW5zdGFuY2UoKSk7Cit9CisK
K3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXImJiBpbnN0YW5jZUlkKQoreworICAgIGlmIChhdXRvKiBpbnN0
YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jZG1GYWN0
b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0YW5jZUlkKSkKKyAgICAgICAgbV9wbGF5ZXItPmNk
bUluc3RhbmNlRGV0YWNoZWQoaW5zdGFuY2VQcm94eS0+aW5zdGFuY2UoKSk7Cit9CisKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShSZW1v
dGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpbnN0YW5jZUlkKQoreworICAgIGlmIChhdXRvKiBp
bnN0YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jZG1G
YWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0YW5jZUlkKSkKKyAgICAgICAgbV9wbGF5ZXIt
PmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoaW5zdGFuY2VQcm94eS0+aW5zdGFuY2UoKSk7
Cit9CisjZW5kaWYKKworCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFNo
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91bGQpCit7CisgICAgbV9wbGF5ZXIt
PnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRpZgorCiB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkKIHsK
ICAgICBtX3BsYXllci0+YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmlu
ZGV4IGIyMjYzMGZkYWRiZjQ3M2Y3ZGJhOTdhMzNmYmYyYzUzZGJiMTA3ODkuLjRmNDNlZTg0YTZk
MjZkN2FjODI1YmQ1MmIyZDMzNmRlZDAzMzBlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtNDYsNiAr
NDYsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOwog
Y2xhc3MgVmlkZW9UcmFja1ByaXZhdGU7CkBAIC0xMTgsNiArMTIzLDE2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGtleUFkZGVkKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgdm9pZCBjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmKTsKKyAgICB2b2lkIGNkbUluc3RhbmNlRGV0YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyJiYpOworICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXImJik7CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyNlbmRpZgorCiAgICAgdm9pZCBiZWdp
blNpbXVsYXRlZEhEQ1BFcnJvcigpOwogICAgIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCk7
CiAKQEAgLTE2MCw3ICsxNzUsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtl
eUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgbWVkaWFQbGF5
ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoVWludDhBcnJheSopIGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCkBAIC0yNDUsNiArMjYw
LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TGF5b3V0UmVjdCBtX3ZpZGVvQ29udGVudEJv
eFJlY3Q7CiAgICAgZmxvYXQgbV92aWRlb0NvbnRlbnRTY2FsZSB7IDEuMCB9OwogCisjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisg
ICAgYm9vbCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxzZSB9OworI2VuZGlm
CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIG1fbG9nZ2Vy
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDhmODYxNWE0
ZjVmYzQyZGNkOTVlZjY1NDQ2MTRjZjE5YWEzYWQ3YzIuLjUwMWZmMDc3NmNhNTZiZTNkZmI5NWYy
OGU3NWFiY2Y0MGI1NTY3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC02OSw5ICs2OSwxNiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJl
ZkNvdW50ZWQgewogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICMgU2V0
Q0RNU2Vzc2lvbgogICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0YWNoZWQKLSAg
ICAjIENkbUluc3RhbmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFu
Y2UKKyNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBDZG1JbnN0YW5j
ZUF0dGFjaGVkKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQp
CisgICAgQ2RtSW5zdGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRp
ZmllciBpbnN0YW5jZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRpZgorCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgU2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKICNlbmRp
ZgogCiAgICAgQmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDY3MmJlYzQ4ZWE3OWM2ODJjMTI0NWU1MjZmMDQ4OGM2
Nzk5NjgwYjcuLjUzYTgwNzgxN2IyYTZiMWRkZjUxMzQ1ODZlZjJlNzEwMmY2ODI0MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTE0OSwxMyArMTQ5LDEz
IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vCiAgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2lzRG9uZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKTsK
LSAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZl
RGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKKyAgICBzZW5kVG9DbGllbnQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRh
TGVuZ3RoIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVG
b3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzM2NiZmYxMDg5Y2MxMDVkZDFhMDBi
ZWJmZGY2MWQzM2M3ZjY2YmQuLjUwODAwZjM1MDIyMzYyZjk2Y2EyMWI1ZTdlYmQwN2Q4ZDQyYTJk
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAtNDMsNyArNDMs
NyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAg
LTc4LDcgKzc4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9y
bURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNo
KCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCBhNzQ5YWFiODcw
MDU0Y2ViNjkwZTVmMTRmNDA3NTYzZmZjZDBmOWI4Li44OGY0ZjJmYTY0MjYzMzQ5YjdhZDIyZDA2
ZjQzYTI3ZjcyMzM1MWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9I
YW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVz
c2FnZS5oCkBAIC05NiwxMiArOTYsNiBAQCBzdHJ1Y3QgQ29kaW5nVHlwZSB7CiAgICAgdHlwZWRl
ZiBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+PiBUeXBlOwog
fTsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDb2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UmPiB7Ci0gICAgdHlwZWRlZiBEYXRhUmVmZXJlbmNlIFR5cGU7Ci19OwotCiB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBUcz4KIHN0cnVjdCBDb2RpbmdUeXBlPHN0ZDo6dHVwbGU8VHMuLi4+
PiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHR5cGVuYW1lIENvZGluZ1R5cGU8VHM+OjpUeXBl
Li4uPiBUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oCmluZGV4IGRhZDQ2NjA0NjMyZTkyNjlmMTkxZDE1YzgwZGQy
MTFlNTQ4NGU3YTMuLmJmYjMzOTU3Njk2ZjJlNzJhMjM0ODIzNDIyNTJiNzJiZDc5NDI4MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgKQEAgLTI1LDQwICsyNSw1MSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAK
IG5hbWVzcGFjZSBJUEMgewogCiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsKIHB1
YmxpYzoKICAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworICAgIFNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQorICAgIHsKKyAgICB9
CisgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgewor
ICAgIH0KICAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fZGF0YShidWZmZXIpIHsgfQotICAgIFNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0g
ICAgICAgIDogbV9kYXRhKHN0ZDo6bWFrZV9wYWlyKGRhdGEsIHNpemUpKSB7IH0KKyAgICAgICAg
OiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQorICAgIHsKKyAgICAg
ICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOworICAgIH0KKworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcjsgfQorCisgICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKyAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkg
OiB0cnVlOyB9CiAKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IHsKLSAgICAgICAgc3dpdGNoT24obV9kYXRhLAotICAgICAgICAgICAgW2VuY29kZXIgPSAmZW5j
b2Rlcl0gKGNvbnN0IFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNp
emUoKTsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5yZXNlcnZlKGJ1ZmZlclNpemUgKyBzaXpl
b2YodWludDY0X3QpKTsKLSAgICAgICAgICAgICAgICAqZW5jb2RlciA8PCBidWZmZXJTaXplOwot
ICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkK
LSAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpKSwgZWxl
bWVudC5zZWdtZW50LT5zaXplKCksIDEpOwotICAgICAgICAgICAgfSwgW2VuY29kZXIgPSAmZW5j
b2Rlcl0gKGNvbnN0IHN0ZDo6cGFpcjxjb25zdCB1aW50OF90Kiwgc2l6ZV90PiYgcGFpcikgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IHBhaXIuc2Vjb25k
OwotICAgICAgICAgICAgICAgIGVuY29kZXItPnJlc2VydmUoYnVmZmVyU2l6ZSArIHNpemVvZih1
aW50NjRfdCkpOwotICAgICAgICAgICAgICAgICplbmNvZGVyIDw8IGJ1ZmZlclNpemU7Ci0gICAg
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHBhaXIuZmlyc3QsIHBh
aXIuc2Vjb25kLCAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKKyAgICAgICAgZW5jb2Rl
ciA8PCBtX2J1ZmZlcjsKKyAgICB9CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBP
cHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gYnVmZmVyOworICAgICAgICBk
ZWNvZGVyID4+IGJ1ZmZlcjsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4geyBXVEZNb3ZlKCpidWZmZXIpIH07CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIFZhcmlhbnQ8c3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3Q+LCBSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gbV9kYXRhOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2YxY2Y5Yzc1OWUyNjI2ZDE1OTYx
NzQ1YWJkNDU3NTFiMjRjNjNmMy4uYzJhOWMxMTY3NTg2MjlkMzhjNzliMDE2YmMzYjNlYjEwZTI1
NjU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMjYs
NiArMjI2LDkgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToK
ICAgICAgICAgJ1dlYktpdDo6TGliV2ViUlRDUmVzb2x2ZXJJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3Rl
Q0RNSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRp
ZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
UlRDRW5jb2RlcklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggMWMwMGJkYTUzZjViNmI0MzRlYTcxOTc5ZjRlNjMyMTM4
MWRhNTcyYy4uNWMwMDllOWE2YjMwYjE1MjY1OTliYzY2NDZjMzA1YzIyZmYwODdhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMzMs
NyArMTMzLDggQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIGVuY29kZXIgPDwgaGFuZGxlOwog
fQogCi1zdGF0aWMgYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3RlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUu
Li4+IGNsYXNzIFI+CitzdGF0aWMgYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVj
b2RlciwgUjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgdWludDY0X3QgYnVmZmVyU2l6
ZSA9IDA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKQEAgLTMxNzQsNCAr
MzE3NSw3MyBAQCBPcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYQogCiAjZW5kaWYgLy8gRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK09wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246Ok1lc3NhZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJiBtZXNzYWdlKQoreworICAgIGVuY29kZXIgPDwg
bWVzc2FnZS5maXJzdDsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0g
bWVzc2FnZS5zZWNvbmQuY29weVJlZigpOworICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7Cit9
CisKK09wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlVHlwZSB0eXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gbWFrZU9wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4oeyB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSB9
KTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiBrZXlTdGF0dXNlcykKK3sKKyAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihrZXlTdGF0dXNlcy5zaXplKCkpOwor
ICAgIGZvciAoYXV0byYga2V5U3RhdHVzIDoga2V5U3RhdHVzZXMpIHsKKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5ID0ga2V5U3RhdHVzLmZpcnN0LmNvcHlSZWYoKTsKKyAgICAgICAg
ZW5jb2RlciA8PCBrZXkgPDwga2V5U3RhdHVzLnNlY29uZDsKKyAgICB9Cit9CisKK09wdGlvbmFs
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgdWludDY0X3QgZGF0YVNpemU7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhU2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0
dXNlczsKKyAgICBrZXlTdGF0dXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFTaXplKTsK
KworICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgKytpKSB7CisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShr
ZXkpIHx8ICFrZXkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzIHN0YXR1czsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBrZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBrZXku
cmVsZWFzZU5vbk51bGwoKSwgc3RhdHVzIH0pOworICAgIH0KKyAgICByZXR1cm4ga2V5U3RhdHVz
ZXM7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwogfSAvLyBuYW1lc3Bh
Y2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmlu
ZGV4IDdiZjcxYzE3YWJkZDNkOGIxMzE5MDIyMDA1OGM5ZjljMjE5ZjYwYjMuLmQxMDZiY2QzYTcw
NzY1ZTY0ZDk2YzU1MzI2MTZkYjdlMGNhYjU0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC01NCw2ICs1NCwxMSBAQAogI2luY2x1ZGUgPFdl
YktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRDb2RlcnNBZGRpdGlvbnMuaD4KICNlbmRpZgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3Rh
bmNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmln
aHQ7CkBAIC05OSw2ICsxMDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFz
cyBTdGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzOwpAQCAtODE5LDYgKzgyNSwyMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gewogCiAjZW5kaWYgLy8gRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBz
dGF0aWMgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2UmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3Rvcj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImKTsKKyAgICBzdGF0
aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+
IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBu
YW1lc3BhY2UgV1RGIHsKQEAgLTk1NSw0ICs5NzgsMjggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXVEZMb2dMZXZlbD4gewogICAgID47CiB9OwogCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZh
aWx1cmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1
cmU6Ok5vbmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZh
aWx1cmU6Ok5vU2Vzc2lvbkRhdGEsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpT
ZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZSwKKyAgICBXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6UXVvdGFFeGNlZWRlZCwKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIK
KyAgICA+OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RN
SW5zdGFuY2U6OkhEQ1BTdGF0dXM+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cywKKyAgICBXZWJDb3JlOjpDRE1J
bnN0YW5jZTo6SERDUFN0YXR1czo6VW5rbm93biwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
SERDUFN0YXR1czo6VmFsaWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6
Ok91dHB1dFJlc3RyaWN0ZWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6
Ok91dHB1dERvd25zY2FsZWQKKyAgICA+OworfTsKKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggNzQ4OTRiZDI3YmFmNTg5NTFlNmFmMjQxYzg3OTk4YmM1YzVl
YmFlOC4uNzQ4NTI0YzhkNWVjNjgyOTcyYjVlZDYzYTYyZTc1ZDljMzBlMGJmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0zMSw2ICszMSwxMCBAQCBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5j
cHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAorR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtMzksNiArNDMsNyBAQCBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9UcmFja1Byb3h5LmNwcAogCisKIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1h
bmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcAogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtNTM0LDYgKzUz
OSwxMCBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCitXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCitXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCA3ODk3ZTI4
ZTNjOGNhMjI3NDUxZmQ1NzQxZjdkZDE1NWNjN2RlMTVmLi4zNDNiYTFiMTAzNzMyNDI1YjYwMjc3
ZThmNTgxMGYxN2Q4MWFhYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiUGFn
ZUNsaWVudC5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0ICJTYWZlQnJv
d3NpbmdXYXJuaW5nLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAj
aW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgog
I2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgpAQCAtMTgzLDEzICsxODQsMTIgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldERyYWdDYXJldFJlY3QoY29uc3QgSW50UmVjdCYgZHJhZ0NhcmV0UmVj
dCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFj
aG1lbnQsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lz
dGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIGNvbnN0IFN0
cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKICAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICBhdXRv
IGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdyYXBwZXJJbnN0
YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCldKTsKKyAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNs
aWVudCgpLmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpkYXRhUmVmZXJlbmNlLmJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgp
XSk7CiAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnByZWZlcnJlZEZpbGVO
YW1lXTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlV3JhcHBlcihmaWxlV3JhcHBlci5nZXQoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBkYTdmMjAx
ZjRlMmI2M2Y2MWQxMzAxOTliMTI0YWNmMmQyMTE2YTg1Li4zMjFjMTQ5NmZlYjc0YzhjODMyMGUy
ZGI0NjNkYzQyYmY4YjUxYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTY4NDcsMTMgKzY4NDcsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxs
YmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFj
aygpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRv
IGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5j
ZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7CisgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVu
Y2Uuc2l6ZSgpKS5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpib29sQ2FsbGJhY2so
Ym9vbCByZXN1bHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTkwMzMsNyArOTAzMyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6
OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpmaW5pc2hlZExvYWRpbmdJY29uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmlzaGVkTG9hZGluZ0lj
b24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmIGRhdGEpCiB7CiAgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQpA
QCAtOTI2NCw3ICs5MjY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRB
dHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50Lmlk
ZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5j
b250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5j
ZSksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgTUVTU0FH
RV9DSEVDSyhtX3Byb2Nlc3MsIElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXA6OmlzVmFsaWRLZXko
aWRlbnRpZmllcikpOwogCkBAIC05MzcxLDcgKzkzNzEsNyBAQCBXZWJQYWdlUHJveHk6OlNob3Vs
ZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIFdlYlBhZ2VQcm94eTo6d2lsbFVwZGF0ZUF0dGFj
aG1lbgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZv
cm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9y
bVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDVmZjY3OTJkODNmYmMwMmIwZjU3NGNj
N2EyMmU4NTdiYTkxZmQ3YWUuLmY5ZTNjZDY1YmRjYmFjMWYxODNjNWY2NzE5NWIzYjA1Nzc3NDcy
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xOTIsNiArMTky
LDcgQEAgZW51bSBjbGFzcyBJbnNwZWN0b3JUYXJnZXRUeXBlIDogdWludDhfdDsKIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3Mg
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTQ5Niw3ICsxNDk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0
aW9uKCk7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6
TGlua0ljb24mLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5n
SWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAg
IHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQsIGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBzZXRGb2N1cyhib29sIGZv
Y3VzZWQpOwogICAgIHZvaWQgc2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
Jik7CkBAIC0xOTk4LDcgKzE5OTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUV2
ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKICAgICB2b2lkIHZvaWRD
YWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGlt
YWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0lEKTsK
ICAgICB2b2lkIGJvb2xDYWxsYmFjayhib29sIHJlc3VsdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKQEAgLTIxNzksMTIg
KzIxODAsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BBbGxVUkxTY2hlbWVUYXNrcyhXZWJQ
cm9jZXNzUHJveHkqID0gbnVsbHB0cik7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllckZyb21GaWxlUGF0aChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNo
bWVudHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4mJik7CiAgICAgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYg
ZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKTsKIAotICAgIHZvaWQg
cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3Qg
U3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7Cisg
ICAgdm9pZCBwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYm
LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJl
ZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQg
cGxhdGZvcm1DbG9uZUF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBmcm9tQXR0YWNo
bWVudCwgUmVmPEFQSTo6QXR0YWNobWVudD4mJiB0b0F0dGFjaG1lbnQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNzUyMDkz
Yjg2NDlmMzcyNTE2NjgyOGExOWIzOGZhYzkzNGUzYjY5MC4uMDNmYzBlODY0NzE2MDI3ZjQ2OTRi
NTExMjBhOTUwZGVjODA3NjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTMxLDcgKzUzMSw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgRGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogICAgIEdldExv
YWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNvcmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKTsKKyAgICBGaW5p
c2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlk
SGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCA2ZGRm
MGQ2Y2FmODg5ZjljYTBlMTliNTE2NjRjYzA5NGE5NzA3ZWIyLi4yZTc5MTBlMDUyNTRkMDQ1NzAy
YjNlY2M3N2UzNjQwN2M0M2Y1NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtNDcsNiAr
NDcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oPgogI2ltcG9y
dCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL05T
V2luZG93U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3lzdGVtL1NsZWVwRGlzYWJsZXIuaD4KICNpbXBv
cnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTmFrZWRSZWYuaD4K
QEAgLTk1LDExICs5Niw2IEBAIGVudW0gRnVsbFNjcmVlblN0YXRlIDogTlNJbnRlZ2VyIHsKICAg
ICBFeGl0aW5nRnVsbFNjcmVlbiwKIH07CiAKLUBpbnRlcmZhY2UgTlNXaW5kb3cgKFdlYk5TV2lu
ZG93RnVsbFNjcmVlbkRldGFpbHMpCi0tICh2b2lkKWV4aXRGdWxsU2NyZWVuTW9kZTooaWQpc2Vu
ZGVyOwotLSAodm9pZCllbnRlckZ1bGxTY3JlZW5Nb2RlOihpZClzZW5kZXI7Ci1AZW5kCi0KIEBp
bnRlcmZhY2UgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5TQW5pbWF0
aW9uRGVsZWdhdGU+CiAtICh2b2lkKV9yZXBsYWNlVmlldzooTlNWaWV3ICopdmlldyB3aXRoOihO
U1ZpZXcgKilvdGhlclZpZXc7CiAtIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkg
KilfbWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDZhNDUzZmUzZjc5MDRjNGUxMmM5ZGIxOWJiOTI1YWZiY2U2M2Y4N2MuLjQy
MDlkOTAyMzZlNGFlMThkM2UyOGZkZjg0NTY2YmZmZjI3MjJhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5NCw2ICsxNjk0LDcg
QEAKIAkJQ0QxOUQyRUEyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qx
OUQyRTgyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMjg2NUVF
MjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVDMjI1NTU2MjAwMDYw
NkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJQ0QyODY1RUYyMjU1
NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVEMjI1NTU2MjAwMDYwNkFD
NyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gKi87IH07CisJCUNENDY2MTgzMjQwMTBB
NjcwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0NjYxODEy
NDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCUNENDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgg
Ki87IH07CiAJCUNENDkxQjBEMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDQ5MUIwQjFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwRTFFNzMyRTREMDAw
MDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEMxRTczMkU0RDAwMDA5MDY2
IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTE3MTYsNiAr
MTcxNywyMCBAQAogCQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQTI5QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQlDREE5M0RCMDIyRjhCQ0Y0MDA0OTBBNjkg
LyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5
IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREE5M0RCMTIyRjhCQ0Y0MDA0
OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5M0RBRjIyRjhCQ0Y0
MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi87
IH07CisJCUNEQUMyMEI0MjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBC
MjIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovOyB9OworCQlD
REFDMjBDMzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCNjIz
RkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi87IH07CisJ
CUNEQUMyMEM0MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjcyM0ZDMkY3MzAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi87IH07CisJCUNEQUMyMEM1MjNGQzJGNzUw
MDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVt
b3RlQ0RNQ29uZmlndXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMg
LyogUmVtb3RlQ0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi87IH07CisJCUNE
QUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFD
MjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
ci5oICovOyB9OworCQlDREFDMjBDQTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREFDMjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgg
Ki87IH07CisJCUNEQUMyMENEMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMDIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovOyB9OworCQlDREFDMjBDRTIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMTIzRkMyRjc1
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi87IH07CisJCUNE
QUMyMENGMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMjIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBGNzIzRkM3MjZD
MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEYyMjNGQzM4
M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OworCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBFQzIzRkMz
ODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OworCQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdL
RnVsbHNjcmVlblN0YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNr
Vmlldy5oICovOyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIuaCAqLzsgfTsKIAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWdu
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEx
QUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKQEAgLTQ5MzYsNiAr
NDk1MSwxMCBAQAogCQlDRDE5RDJFOTIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hl
dXJpc3RpYy5jcHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVy
aXN0aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFQzIyNTU1NjIw
MDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
b2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODAy
NDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdD
QTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q0OTFCMDUxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDYxRTcw
RDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNENDkxQjBBMUU3MzJEMTIwMDAwOTA2NiAvKiBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5NzcsNiArNDk5Niw0
MyBAQAogCQlDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1
bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnVs
bHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBwYXRoID0gaW9zL2Z1bGxzY3Jl
ZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVu
L0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjA3ODIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMgLyogUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3Rv
cnlQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDdDMjNGQjFF
RjkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFD
MjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQjEyM0ZCNThFMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMzIz
RkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjcy
M0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjkyM0ZDMkY3MzAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5j
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJDMjNGQzJGNzQwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwQkUyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBC
RjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEMwMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRDIzRkMz
ODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVFMjNG
QzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVz
c2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVGMjNG
QzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYwMjNGQzM4Mzkw
MDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdl
c1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjIyM0ZDMzgz
QTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBG
MzIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFE
RUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2Ny
ZWVuU3RhY2tWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBw
YXRoID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQzI4MzFDMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3Jl
ZW5TdGFja1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1Zp
ZXcubW07IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBD
Rk5ldHdvcmsuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTUyNTYsNiArNTMxMiwyMCBAQAogCQkJ
CTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAq
LywKIAkJCQkwN0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLm1lc3NhZ2VzLmluICovLAogCQkJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkYyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETS5jcHAgKi8sCisJCQkJQ0RBQzIwQkEyM0ZDMkY3NDAwMjFE
RUUzIC8qIFJlbW90ZUNETS5oICovLAorCQkJCUNEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUz
IC8qIFJlbW90ZUNETUZhY3RvcnkuY3BwICovLAorCQkJCUNEQUMyMEMwMjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggKi8sCisJCQkJQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUz
IC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBCQjIzRkMyRjc0MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuY3BwICovLAorCQkJCUNEQUMyMEI3MjNGQzJGNzMwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovLAorCQkJCUNEQUMyMEMxMjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQlDREFDMjBC
NjIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi8sCisJ
CQkJQ0RBQzIwQkUyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHAgKi8sCisJCQkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oICovLAorCQkJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQkMyM0ZDMkY3NDAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLywKIAkJCQkwN0I5
M0ZGNTIzQUYwQ0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgg
Ki8sCiAJCQkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5jcHAgKi8sCiAJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5oICovLApAQCAtNTI3OCw2ICs1MzQ4LDE4IEBACiAJCQljaGlsZHJlbiA9
ICgKIAkJCQkwNzFCQzU3RTIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5
LmNwcCAqLywKIAkJCQkwNzFCQzU3RjIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFj
a1Byb3h5LmggKi8sCisJCQkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnlQcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90
ZUNETUZhY3RvcnlQcm94eS5oICovLAorCQkJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQjMyM0ZCNThG
MjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEIy
MjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi8sCisJCQkJQ0RB
QzIwQjEyM0ZCNThFMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMu
aW4gKi8sCisJCQkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmNwcCAqLywKKwkJCQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLywKKwkJCQlDREFDMjBBRDIzRkI1ODJCMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkJQ0RBQzIwODMyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKKwkJ
CQlDREFDMjA4MjIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLywKKwkJCQlD
REFDMjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8s
CiAJCQkJMDcyNUVGQUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcCAqLywKIAkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05NTky
LDYgKzk2NzQsMjEgQEAKIAkJCQkxQTA0M0I1QzEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJv
Y2Vzc1Byb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkxQThFRkE2RTEyNTJCODQxMDBGNzA2N0YgLyog
UGx1Z2luUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBOEVGQTZGMTI1MkI4NDEw
MEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjIyM0ZDMzgz
QTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CisJCQkJQ0RBQzIwRjMyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1l
c3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRUUyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEY1MjNGQzM4M0IwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJ
CQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NB
MzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJ
CQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVz
c2FnZXMuaCAqLywKKwkJCQlDRDQ2NjE4MDI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRUMyM0ZDMzgzODAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCAqLywKKwkJCQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYxMjNGQzM4M0EwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJ
CUNEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCisJCQkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RN
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMg
LyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CiAJCQkJMEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTA0OTEs
NiArMTA1ODgsMTYgQEAKIAkJCQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Ro
cm90dGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFNjg4NzAxRjZFMkJBQjAwNzAw
NkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgyMjJCMzUx
NUUwMDhEMEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEQUMyMEM3MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0YyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMy
MEM0MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzMyM0ZDMkY3NTAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIw
QjQyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QUVBMTY0QjNB
ODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAg
LTEyMTg2LDYgKzEyMjkzLDExIEBACiAJCQkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFBy
ZWZlcmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENTRDMzFCMjEyRjREQTYw
MDQ5QzE3NCAvKiBQcm9jZXNzTGF1bmNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QyODY1
RUYyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjgyM0ZD
NzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q0NjYxODMyNDAxMEE2NzAwNDdDQTM1IC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRkEyM0ZDNzI2QzAw
MjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVW
aWV3cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApp
bmRleCAzZjViNjE4MWUwNmUwYTg0Njg4YmRhOTE2ZjEwZDg3YTYxZDE0YmU3Li45MmZmNzdlYmM3
NzMzYTUxZmIxN2M3YTc2M2M3Njg3NmM2MmFlY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKaW5kZXggOGRmZjUwZjMwODhlZDQ1YzU5MGVjODFlMmMwOWExMzhiYTdhNTM1Zi4uYzYw
MjRjYWQ5YTk1NzQyYmY3ZDYyYjE5MjY5YTdjYjY2Y2YwNzIzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTMz
LDYgKzMzLDggQEAKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3MuaCIKICNpbmNsdWRlICJMaWJX
ZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAtNDQsNiArNDYsMTAgQEAKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uTWVzc2FnZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMDEsNiArMTA3LDEyIEBAIHZvaWQgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpECiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVDRE1G
YWN0b3J5PigpLT5kaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggOWRjMGViYjYwNjY0ODk3Zjgy
ZGI3ZTA1MTgwOGYwZTQ4OWRjNTI3OS4uMjQ5MWM3Yzg1NjIzMTk5MDFmZmJlMDNlMTg0Mzg4ZjY4
YzkzZDcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNDcsNiArNDcsMTAg
QEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKIGV4dGVybiBXVEZMb2dDaGFubmVsIExvZ01lZGlhOwpAQCAtMTEwLDE4ICsxMTQsMTcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY28KICAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkpIHsK
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgYXV0byBm
aWxlU3lzdGVtUGF0aCA9IHVybC5maWxlU3lzdGVtUGF0aCgpOwotICAgICAgICBib29sIGNyZWF0
ZWRFeHRlbnNpb24gPSBmYWxzZTsKIAorICAgICAgICBhdXRvIGNyZWF0ZUV4dGVuc2lvbiA9IFsm
XSB7CiAjaWYgSEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9OX1RPX1BST0NFU1NfQllf
QVVESVRfVE9LRU4pCi0gICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdlci5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKTsKLSAgICAgICAgQVNTRVJUKGF1ZGl0VG9rZW4p
OwotICAgICAgICBpZiAoYXVkaXRUb2tlbikKLSAgICAgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24g
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGZpbGVT
eXN0ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCksIGhhbmRsZSk7Ci0gICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGlmIChhdXRvIGF1ZGl0VG9rZW4gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5hdWRpdFRva2VuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oZmlsZVN5c3RlbVBhdGgsIGF1
ZGl0VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogI2VuZGlmCi0gICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCBoYW5kbGUpOworICAgICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShmaWxlU3lzdGVtUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9u
bHksIGhhbmRsZSk7CisgICAgICAgIH07CiAKLSAgICAgICAgaWYgKCFjcmVhdGVkRXh0ZW5zaW9u
KSB7CisgICAgICAgIGlmICghY3JlYXRlRXh0ZW5zaW9uKCkpIHsKICAgICAgICAgICAgIFdURkxv
Z0Fsd2F5cygiVW5hYmxlIHRvIGNyZWF0ZSBzYW5kYm94IGV4dGVuc2lvbiBoYW5kbGUgZm9yIEdQ
VVByb2Nlc3MgdXJsLlxuIik7CiAgICAgICAgICAgICBtX2NhY2hlZFN0YXRlLm5ldHdvcmtTdGF0
ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yOwogICAgICAgICAgICAg
bV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKQEAgLTg1MSwxOSArODU0LDIyIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgpCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2Rt
SW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNl
KSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OkNkbUluc3RhbmNlQXR0YWNoZWQoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGlu
c3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3Rh
bmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3Rh
bmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZURldGFjaGVkKGRvd25jYXN0PFJlbW90ZUNE
TUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKLXZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUlu
c3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0
V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6QXR0ZW1w
dFRvRGVjcnlwdFdpdGhJbnN0YW5jZShkb3duY2FzdDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFu
Y2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtODcxLDYgKzg3NywxMiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQogICAgIG1fcGxh
eWVyLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0
RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSYmIGluaXREYXRhKQoreworICAgIGF1dG8gaW5p
dERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERh
dGEuc2l6ZSgpKTsKKyAgICBtX3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQo
aW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSk7Cit9CisKIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpAQCAtODc4LDYgKzg5MCwxMyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9v
bCBzaG91bGQpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OlNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKSwgbV9p
ZCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDdmNzM5MDQxOTM3ZTExZjRhZDAyNWEx
ODMwZTVjZjNjODk1MDBkYTguLmEzNGI2MTM0YTk4ZmNjMWJmZDgxMzMxZGZmYzUzMDI4ZDI3MTRj
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMTE0LDYgKzExNCw3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdm9pZCB3YWl0aW5nRm9yS2V5
Q2hhbmdlZCgpOworICAgIHZvaWQgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3Qg
U3RyaW5nJiwgSVBDOjpEYXRhUmVmZXJlbmNlJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMzA1LDYgKzMwNiwxMCBAQCBwcml2YXRlOgogICAg
IGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2
b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkgZmluYWw7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24oKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uKFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4IGM0MDRkYzY3NDA3Mzdh
MzY4ZDRmYTY5NDJhOGU5NjA5Nzc4NDYwN2IuLjZhMTRiZDkxMTMyZjg3MmEyYWI5ZDQyMGE2ZGRi
MGU1M2E5NTM1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluCkBAIC03Myw2ICs3Myw3IEBAIG1lc3NhZ2VzIC0+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZSBOb3RSZWZDb3VudGVkIHsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgV2Fp
dGluZ0ZvcktleUNoYW5nZWQoKQorICAgIEluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKFN0
cmluZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBpbml0RGF0YSkKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWI1ZGFh
OGEyOWJjZDk4ZTYyNzA5MzE3NWM5ZjcwNjViOWE3MGExCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC0wLDAgKzEs
MTc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUlu
c3RhbmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9DRE1SZXN0cmljdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IFJlbW90ZUNETTo6Y3JlYXRlKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JZGVudGlmaWVyJiYg
aWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPihuZXcgUmVtb3RlQ0RNKFdURk1vdmUoZmFjdG9y
eSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNE
TTo6UmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVD
RE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9u
KQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2lkZW50aWZpZXIo
V1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9u
KSkKK3sKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAoreworICAgIGlm
ICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1cHBvcnRz
IHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRz
Q29uZmlndXJhdGlvbjo6UmVwbHkoc3VwcG9ydHMpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVy
biBzdXBwb3J0czsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldp
dGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgc3VwcG9y
dHMgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c0NvbmZp
Z3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyksIE1l
c3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0
aW9uczo6UmVwbHkoc3VwcG9ydHMpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0
czsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYgdHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdXBwb3J0cyB7IGZhbHNlIH07CisgICAg
bV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJh
dGlvbih0eXBlLCBjb25maWd1cmF0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb246OlJlcGx5KHN1cHBvcnRzKSwgbV9pZGVu
dGlmaWVyKTsKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgZGF0YSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFU
eXBlcy5jb250YWlucyh0eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBz
dXBwb3J0cyB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRz
SW5pdERhdGEodHlwZSwgZGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNT
ZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uOjpSZXBseShzdXBwb3J0cyksIG1faWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06
OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0
aW9ucykgY29uc3QKK3sKKyAgICBDRE1SZXF1aXJlbWVudCByZXF1aXJlbWVudCB7IENETVJlcXVp
cmVtZW50OjpOb3RBbGxvd2VkIH07CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVy
biByZXF1aXJlbWVudDsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSwgTWVz
c2FnZXM6OlJlbW90ZUNETVByb3h5OjpEaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQ6
OlJlcGx5KHJlcXVpcmVtZW50KSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVxdWlyZW1l
bnQ7Cit9CisKK0NETVJlcXVpcmVtZW50IFJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRlUmVxdWly
ZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0Cit7CisgICAgQ0RNUmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQgeyBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCB9OworICAgIGlm
ICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gcmVxdWlyZW1lbnQ7CisKKyAgICBtX2ZhY3Rv
cnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVDRE1Qcm94eTo6UGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uZmlndXJhdGlv
biwgcmVzdHJpY3Rpb25zKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpQZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudDo6UmVwbHkocmVxdWlyZW1lbnQpLCBtX2lkZW50aWZpZXIpOworICAgIHJl
dHVybiByZXF1aXJlbWVudDsKK30KKworYm9vbCBSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBmbGFnIHsgZmFsc2UgfTsKKyAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6RGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBl
ck9yaWdpbkFuZENsZWFyYWJsZShjb25maWd1cmF0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZUNETVBy
b3h5OjpEaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
OjpSZXBseShmbGFnKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gZmxhZzsKK30KKworUmVm
UHRyPENETUluc3RhbmNlPiBSZW1vdGVDRE06OmNyZWF0ZUluc3RhbmNlKCkKK3sKKyAgICBpZiAo
IW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIgaWQ7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb247CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkNyZWF0ZUluc3RhbmNl
KCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6Q3JlYXRlSW5zdGFuY2U6OlJlcGx5KGlkLCBj
b25maWd1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZShtYWtlV2Vh
a1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9u
KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6
OkxvYWRBbmRJbml0aWFsaXplKCksIG1faWRlbnRpZmllcik7Cit9CisKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBzYW5pdGl6ZWRSZXNw
b25zZTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2FuaXRpemVSZXNwb25zZShyZXNw
b25zZSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2FuaXRpemVSZXNwb25zZTo6UmVwbHko
c2FuaXRpemVkUmVzcG9uc2UpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBXVEZNb3ZlKHNh
bml0aXplZFJlc3BvbnNlLmJ1ZmZlcigpKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVD
RE06OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBjb25zdAorewor
ICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
T3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZWRTZXNzaW9uSWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
Q0RNUHJveHk6OlNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCksIE1lc3NhZ2VzOjpSZW1vdGVD
RE1Qcm94eTo6U2FuaXRpemVTZXNzaW9uSWQ6OlJlcGx5KHNhbml0aXplZFNlc3Npb25JZCksIG1f
aWRlbnRpZmllcik7CisgICAgcmV0dXJuIHNhbml0aXplZFNlc3Npb25JZDsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZmM2MzNGVkMmMyMDIzYWRkMjBhZWE4OWM3ZGU0YTdhYzJjNGJiZTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE0gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJp
dmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IGNy
ZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUlkZW50aWZpZXImJiwg
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE0oKSA9IGRl
ZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOwor
CisgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1
cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29y
ZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBX
ZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQo
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVpcmVt
ZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5B
bmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFu
Y2UoKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CisgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0
aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworCisgICAgVmVjdG9yPEF0
b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQorICAgIFZlY3RvcjxBdG9t
U3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24uc3VwcG9ydGVkUm9idXN0bmVzc2VzOyB9CisgICAgYm9vbCBzdXBwb3J0c1Nl
cnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5z
dXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1Nlc3Npb25zOyB9
CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVD
RE1JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIG1f
Y29uZmlndXJhdGlvbjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM2MmM0NjRmZGZkY2Q4YzM1NzU2YjBlMzhkYWQwZjg5MzkwNTg4NjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUNvbmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbiB7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlw
ZXM7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICBi
b29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9u
czsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkSW5p
dERhdGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7Cisg
ICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGVu
Y29kZXIgPDwgc3VwcG9ydHNTZXNzaW9uczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRv
bVN0cmluZz4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3Vw
cG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVz
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgZGVjb2Rl
ciA+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkUm9idXN0
bmVzc2VzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRp
b25hbDxib29sPiBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgZGVjb2RlciA+
PiBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXNzaW9uczsKKyAgICAgICAgZGVjb2RlciA+PiBz
dXBwb3J0c1Nlc3Npb25zOworICAgICAgICBpZiAoIXN1cHBvcnRzU2Vzc2lvbnMpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAg
ICAgV1RGTW92ZSgqc3VwcG9ydGVkSW5pdERhdGFUeXBlcyksCisgICAgICAgICAgICBXVEZNb3Zl
KCpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMpLAorICAgICAgICAgICAgKnN1cHBvcnRzU2VydmVyQ2Vy
dGlmaWNhdGVzLAorICAgICAgICAgICAgKnN1cHBvcnRzU2Vzc2lvbnMsCisgICAgICAgIH19Owor
ICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI0YWY4M2UzODI5ZWVhMzczZWNjNDZjMjY4MDU1ZTY5NjI4YTkzOWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUZhY3RvcnkuY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVBy
b2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9T
ZXR0aW5ncy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK1JlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkoV2ViUHJvY2VzcyYgcHJv
Y2VzcykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5
Ojp+UmVtb3RlQ0RNRmFjdG9yeSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5
Ojp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJDb3JlOjpTZXR0aW5ncyYgc2V0dGluZ3MpCit7
CisgICAgaWYgKHNldHRpbmdzLnVzZUdQVVByb2Nlc3NGb3JNZWRpYSgpKSB7CisgICAgICAgIGF1
dG8mIGZhY3RvcmllcyA9IENETUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICAg
ICAgZmFjdG9yaWVzLmNsZWFyKCk7CisgICAgICAgIGZhY3Rvcmllcy5hcHBlbmQodGhpcyk7Cisg
ICAgfSBlbHNlCisgICAgICAgIENETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKCk7Cit9CisKKwor
Y29uc3QgY2hhciogUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJl
dHVybiAiUmVtb3RlQ0RNRmFjdG9yeSI7Cit9CisKK0dQVVByb2Nlc3NDb25uZWN0aW9uJiBSZW1v
dGVDRE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1fcHJv
Y2Vzcy5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworfQorCitib29sIFJlbW90ZUNETUZh
Y3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAg
IGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6U3VwcG9y
dHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSwgTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
U3VwcG9ydHNLZXlTeXN0ZW06OlJlcGx5KHN1cHBvcnRlZCksIHsgfSk7CisgICAgcmV0dXJuIHN1
cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IFJlbW90ZUNETUZhY3Rv
cnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBSZW1vdGVDRE1J
ZGVudGlmaWVyIGlkOworICAgIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsK
KyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE0oa2V5U3lzdGVtKSwgTWVzc2FnZXM6
OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNOjpSZXBseShpZCwgY29uZmlndXJhdGlv
biksIHsgfSk7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIFJlbW90ZUNETTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBXVEZNb3ZlKGlkKSwgV1RG
TW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6YWRkU2Vz
c2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkLCBSZWY8UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNv
bnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOwor
fQorCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlu
cyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsKK30KKwordm9pZCBSZW1vdGVDRE1G
YWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBt
X3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vz
c2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjY2ViZTg0YzJiMTJhZDQyMzgzOGEzNjI3YTA2
NGVlYmQ0NzA5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFz
cyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOworY2xhc3MgUmVtb3RlQ0RNOworY2xhc3MgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOworY2xhc3MgV2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3Rl
Q0RNRmFjdG9yeSBmaW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6OkNETUZhY3RvcnkKKyAgICAs
IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudAorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFJlbW90ZUNETUZhY3Rvcnk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBSZW1vdGVDRE1GYWN0b3J5KFdlYlByb2Nlc3MmKTsKKyAgICB2aXJ0
dWFsIH5SZW1vdGVDRE1GYWN0b3J5KCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxl
bWVudE5hbWUoKTsKKyAgICBXZWJQcm9jZXNzJiBwcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9w
cm9jZXNzOyB9CisKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKTsKKworICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGlu
Z3MmKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwor
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
KTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4g
Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+PiBtX3Nlc3Np
b25zOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNETT4+IG1fY2RtczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Cit9OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWUzYTM4MTljMTcwN2I1NThiM2Zk
OWFhYTg4MTYzMTU4MzkyZmFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlQ0RNSWRlbnRpZmllclR5cGUg
eyB9OwordXNpbmcgUmVtb3RlQ0RNSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3Rl
Q0RNSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNzM5ZjAzZGM1OWVhZDcxZWQ3YTBmYzAzYjZjYzE5
N2RhYWQ1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWY8UmVtb3RlQ0RNSW5zdGFuY2U+IFJlbW90ZUNE
TUluc3RhbmNlOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90
ZUNETUluc3RhbmNlKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlOjpSZW1vdGVDRE1JbnN0YW5jZShX
ZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyJiYgaWQsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRp
b24pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmll
cihXVEZNb3ZlKGlkKSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKQoreworfQorCithdXRvIFJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbikgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uOjpSZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOwor
ICAgIHJldHVybiBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK2F1dG8gUmVt
b3RlQ0RNSW5zdGFuY2U6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxs
b3dlZCkgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJl
dHVybiBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0
b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93
ZWQoYWxsb3dlZCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXREaXN0aW5j
dGl2ZUlkZW50aWZpZXJzQWxsb3dlZDo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVudGlmaWVyKTsK
KyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQorCithdXRvIFJl
bW90ZUNETUluc3RhbmNlOjpzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dlZCkg
LT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBG
YWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChhbGxvd2VkKSwg
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFBlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQ6OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRl
ZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0
ZSkgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVy
biBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5
LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUu
Z2V0KCkpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U2VydmVyQ2VydGlm
aWNhdGU6OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2Nl
ZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkgLT4gU3VjY2Vzc1Zh
bHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAg
ICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpLCBNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeTo6UmVwbHkoc3VjY2VlZGVkKSwg
bV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVk
OworfQorCitSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0
YW5jZTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBp
ZDsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uKCks
IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBseShp
ZCksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUobWFr
ZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCkpOworICAgIG1fZmFjdG9yeS0+
YWRkU2Vzc2lvbihpZCwgc2Vzc2lvbi5jb3B5UmVmKCkpOworICAgIHJldHVybiBzZXNzaW9uOwor
fQorCithdXRvIFJlbW90ZUNETUluc3RhbmNlOjpzZXRIRENQU3RhdHVzKEhEQ1BTdGF0dXMgc3Rh
dHVzKSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0
dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3Rv
cnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRIRENQU3RhdHVzKHN0YXR1cyksIE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRIRENQU3RhdHVzOjpSZXBseShzdWNjZWVkZWQp
LCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWls
ZWQ7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVkODI2YmFhNDEy
ZDU2MGUwYzA2OThhMGUyZGM1ZTgwZTIwOGJlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0
b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
RE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5z
dGFuY2UgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNSW5zdGFuY2UgeworcHVibGljOgorICAg
IHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlKCkgPSBkZWZhdWx0OworICAgIHN0YXRpYyBSZWY8
UmVtb3RlQ0RNSW5zdGFuY2U+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRp
b24mJik7CisKKyAgICBjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW1v
dGVDRE1JbnN0YW5jZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYmLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik7CisKKyAg
ICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KKyAgICBTdWNjZXNzVmFsdWUgaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGluY3RpdmVJZGVudGlm
aWVyc0FsbG93ZWQoYm9vbCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIFN1Y2Nlc3NW
YWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LmtleVN5c3RlbTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0SERDUFN0YXR1cyhIRENQ
U3RhdHVzKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5
OworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisKK30KKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DRE1fSU5TVEFOQ0UoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZSwgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlKQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY1MzJkNzJlN2NlNGI4NTNmMmQzYjkzNDU1ZTE5MjgxYzQxOWZhNDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24geworICAgIFN0cmluZyBrZXlTeXN0ZW07CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGtleVN5c3RlbTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAg
IE9wdGlvbmFsPFN0cmluZz4ga2V5U3lzdGVtOworICAgICAgICBkZWNvZGVyID4+IGtleVN5c3Rl
bTsKKyAgICAgICAgaWYgKCFrZXlTeXN0ZW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqa2V5U3lzdGVt
KSwKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZmZGU2OTFj
M2U4OTViODg1OWU2MjA1YTcxZTExNWZhOWI0ZmUwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8
d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
clR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA1Y2NiZTIzOTZmOWIyZjg2YzljNmIyNmYzM2Ux
YmEyMzViMDE3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtMCwwICsxLDE0NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K1JlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpKSk7
Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyJiYgaWQpCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkK
KyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAg
ICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2Us
IEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlcXVlc3RMaWNlbnNlKHR5cGUsIGlu
aXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtZXNzYWdlLmJ1ZmZlcigpKSB7CisgICAgICAg
ICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxz
ZSwgRmFpbGVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxs
YmFjayhtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHNlc3Npb25JZCwgbmVlZHNJ
bmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9
LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBXVEZNb3ZlKHJl
c3BvbnNlKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNzaW9uV2Fz
Q2xvc2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFs
PGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdl
LCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHNlc3Npb25XYXND
bG9zZWQsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwg
V1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9
LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6bG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAg
aWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklkLCBvcmln
aW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE9wdGlvbmFsPEtleVN0YXR1c1Zl
Y3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9u
LCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNzaW9uTG9h
ZEZhaWx1cmUgbG9hZEZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhXVEZNb3Zl
KGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2Fn
ZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCwgbG9hZEZhaWx1cmUpOworICAgIH0s
IG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9z
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Q2xvc2VTZXNzaW9uKHNlc3Npb25JZCksIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soKTsK
KyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
IHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAo
IW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayh7IH0sIFdURjo6bnVsbG9wdCwgRmFpbGVk
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0
eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBj
aGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmIG1l
c3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8UmVmPFNo
YXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAobWVz
c2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCisgICAgICAgICAgICByZWFsTWVzc2Fn
ZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSksIHN1Y2Nl
ZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6U3RvcmVSZWNv
cmRPZktleVVzYWdlKHNlc3Npb25JZCksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBr
ZXlTdGF0dXNlcykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRh
dGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSB0eXBl
LCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQoreworICAgIGlmICht
X2NsaWVudCAmJiBtZXNzYWdlLmJ1ZmZlcigpKQorICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3Nh
Z2UodHlwZSwgbWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKwordm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c2Vzc2lv
bklkQ2hhbmdlZChzZXNzaW9uSWQpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ5ODc5ZjQ4MzdmYzMyMmYxZDExNWI2ODgxMDQ5OTVkZDA5
NmNkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gZmluYWwg
OiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCAgcHVibGljIFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXImJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVD
RE1GYWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJik7CisKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcwor
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpOworICAgIHZvaWQg
c2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJik7
CisKKworICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsg
fQorICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQor
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBjbG9zZVNlc3Np
b24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBmaW5hbDsKKwor
ICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YzIzOTJlN2VmODYyMDQ2MjFkMjg0MTQzOGI1ZWRmNGQz
ODE1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBA
CisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24gTm90UmVmQ291bnRlZCB7CisgICAgVXBkYXRlS2V5U3RhdHVzZXMo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMp
CisgICAgU2VuZE1lc3NhZ2UoZW51bTp1aW50OF90IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5
cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlKQorICAgIFNlc3Npb25J
ZENoYW5nZWQoU3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NmFjZDEyNjVhZjBjODQ2
Mzg4ZTIzZjljY2ExNmQ5MDIzMzhmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIu
aApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllckNhY2hlZFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y0ZjBk
ZTEwZDg4NmZmOWNkMTM0ZmZlYjcxODkyN2FjYmY4NzgwMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRT
dGF0ZS5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyRW51
bXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgorI2luY2x1ZGUg
PHd0Zi9NZWRpYVRpbWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVN
ZWRpYVBsYXllckNhY2hlZFN0YXRlIHsKKyAgICBNZWRpYVRpbWUgY3VycmVudFRpbWU7CisgICAg
TWVkaWFUaW1lIGR1cmF0aW9uOworICAgIE1lZGlhVGltZSBtaW5UaW1lU2Vla2FibGU7CisgICAg
TWVkaWFUaW1lIG1heFRpbWVTZWVrYWJsZTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5n
ZXMgYnVmZmVyZWRSYW5nZXM7CisgICAgYm9vbCBwYXVzZWQgeyB0cnVlIH07CisgICAgYm9vbCBs
b2FkaW5nUHJvZ3Jlc3NlZCB7IGZhbHNlIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBlbmNvZGVyIDw8IGN1cnJlbnRUaW1lOworICAgICAgICBlbmNvZGVyIDw8IGR1cmF0aW9uOwor
ICAgICAgICBlbmNvZGVyIDw8IG1pblRpbWVTZWVrYWJsZTsKKyAgICAgICAgZW5jb2RlciA8PCBt
YXhUaW1lU2Vla2FibGU7CisgICAgICAgIGVuY29kZXIgPDwgYnVmZmVyZWRSYW5nZXM7CisgICAg
ICAgIGVuY29kZXIgPDwgcGF1c2VkOworICAgICAgICBlbmNvZGVyIDw8IGxvYWRpbmdQcm9ncmVz
c2VkOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBP
cHRpb25hbDxSZW1vdGVNZWRpYVBsYXllckNhY2hlZFN0YXRlPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gY3VycmVudFRpbWU7Cisg
ICAgICAgIGRlY29kZXIgPj4gY3VycmVudFRpbWU7CisgICAgICAgIGlmICghY3VycmVudFRpbWUp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE1l
ZGlhVGltZT4gZHVyYXRpb247CisgICAgICAgIGRlY29kZXIgPj4gZHVyYXRpb247CisgICAgICAg
IGlmICghZHVyYXRpb24pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gbWluVGltZVNlZWthYmxlOworICAgICAgICBkZWNvZGVy
ID4+IG1pblRpbWVTZWVrYWJsZTsKKyAgICAgICAgaWYgKCFtaW5UaW1lU2Vla2FibGUpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE1lZGlhVGlt
ZT4gbWF4VGltZVNlZWthYmxlOworICAgICAgICBkZWNvZGVyID4+IG1heFRpbWVTZWVrYWJsZTsK
KyAgICAgICAgaWYgKCFtYXhUaW1lU2Vla2FibGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcz4g
YnVmZmVyZWRSYW5nZXM7CisgICAgICAgIGRlY29kZXIgPj4gYnVmZmVyZWRSYW5nZXM7CisgICAg
ICAgIGlmICghYnVmZmVyZWRSYW5nZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHBhdXNlZDsKKyAgICAgICAgZGVjb2RlciA+PiBw
YXVzZWQ7CisgICAgICAgIGlmICghcGF1c2VkKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBsb2FkaW5nUHJvZ3Jlc3NlZDsKKyAgICAg
ICAgZGVjb2RlciA+PiBsb2FkaW5nUHJvZ3Jlc3NlZDsKKyAgICAgICAgaWYgKCFsb2FkaW5nUHJv
Z3Jlc3NlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKworICAgICAgICBy
ZXR1cm4ge3sgV1RGTW92ZSgqY3VycmVudFRpbWUpLCBXVEZNb3ZlKCpkdXJhdGlvbiksIFdURk1v
dmUoKm1pblRpbWVTZWVrYWJsZSksIFdURk1vdmUoKm1heFRpbWVTZWVrYWJsZSksIFdURk1vdmUo
KmJ1ZmZlcmVkUmFuZ2VzKSwgV1RGTW92ZSgqcGF1c2VkKSwgV1RGTW92ZSgqbG9hZGluZ1Byb2dy
ZXNzZWQpIH19OworICAgIH0KKworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuY3BwCmluZGV4IGFlMDE2MWFhZDk0NzRkNmIwZjFmOTAwYjA1NDRmNTk4MGQzNjk4
ZmYuLmI5ZjRkMmE3ZTMyN2ViZTMyMGQ1N2U3NThiYWIwM2U1N2E2YWQ2NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBQTEFURk9S
TShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVtb3RlVmlkZW9TYW1wbGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAppbmRleCAwOWQ3OTg3MWY1YjZmMzg3ZDRmNWZiNjU1MWVmOWEwNDY3YzQ2M2I4Li40OGNh
OWRlOTlhYmMwYjA5NTIxMThlZGQ2YTE5YTJlYjkxODhiY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0x
ODksMTcgKzE4OSwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1fY29yZUxvYWRl
ci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEgb2Ygc2l6ZSAlbHUgZm9yICclcyciLCBkYXRhLnNpemUoKSwgbV9jb3JlTG9h
ZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNo
b3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsK
IAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmco
bV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0g
ICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZp
ZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2ludGVyY2VwdENv
bnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBlbmNvZGVkRGF0
YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAg
ICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1
ODNlMzc5Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2NmZiLi4yNjkwOGU4MjNkNzkyNDRl
NTc4NmRiMDRhNTk2OWVmMWZjNjU4MDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJl
ZmVyZW5jZTsKIH0KIApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9p
ZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0Jl
U2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCmluZGV4IDM0ZTg2YzExZTI0ODZjN2ExNjAzNmQ3YjQ2OGZiNzhkMjc1OGZkNjEuLmM1
MGY1NWFlOTI2M2MxMTY4MTQxYWE0NTcwYTJkZGVjNjE2NjQwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemUKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIp
OworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0s
IHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGlu
ZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA3Nzg4ZTZlNWFlYTU4Mjcz
MGYxNmRjYWM3MzIzNmVjMzQ2NzU5ZGNjLi40NmY4ZDQ1OWMwOWE2MTk5ZmVhMjgxNGM0OWIyYjM1
ODRhYTc2N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE5MTgsOSAr
MTkxOCw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24o
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBTaGFyCiAgICAgYXV0byBjYWxsYmFja0lEID0g
Q2FsbGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJZGVudGlmaWVyKTsKICAgICBpZiAoV2Vi
UGFnZSogd2ViUGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KSB7CiAgICAgICAgIGlmIChkYXRhKQot
ICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hl
ZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpIH0pKTsKKyAgICAgICAgICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFj
a0lELCB7ICpkYXRhIH0pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQs
IHsgbnVsbHB0ciwgMCB9KSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyB9KSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDg2ODNjMTA0ZGJmYTJjMDVmNWU4NGI1OTYwZmQ2ODJhZTI0NTFkYWYuLmUyZjZhMjQ5ZTA0
NGE2YWIzMGI5ZDY4OGU2YTRhNjkyMmQ4MGI4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjAsNiArMzIwLDkgQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIK
KyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzUwMSw3ICszNTA0LDcg
QEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGF0YVJl
ZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CisgICAgICAgIGRhdGFSZWZlcmVu
Y2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKICNlbmRpZgogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxi
YWNrSUQpKTsKIH0KQEAgLTM1ODIsNyArMzU4NSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
CiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7
IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRh
R2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBkYXRhUmVmZXJlbmNlID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9
CkBAIC0zNjg2LDYgKzM2ODksOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyPigpLT51cGRhdGVQcmVmZXJlbmNlcyhzZXR0aW5ncyk7CisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJl
bW90ZUNETUZhY3Rvcnk+KCktPnVwZGF0ZVByZWZlcmVuY2VzKHNldHRpbmdzKTsKKyNlbmRpZgog
I2VuZGlmCiB9CiAKQEAgLTQ5MjAsNyArNDkyNiw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2Vz
VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZv
CiB7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRy
YXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgcGRmUGFn
ZURhdGEpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKHsg
Q0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4o
Q0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSwgY2FsbGJhY2tJRCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKHsgU2hhcmVkQnVmZmVy
OjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0KCkpIH0sIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJl
dGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpCkBAIC02NTYzLDEyICs2NTY5
LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0CiAgICAgaGFuZGxlci0+dGFza0RpZFJlY2Vp
dmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdlYlBhZ2U6
OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwg
dWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkK
K3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRs
ZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50
aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwog
ICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0
YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpKTsKKyAgICBoYW5kbGVyLT50
YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2l6ZSgpLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oZGF0YS5kYXRhKCkpKTsKIH0KIAogdm9pZCBXZWJQYWdl
Ojp1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVp
bnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTY3
OTAsNyArNjc5Niw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5j
bG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9u
YWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYg
ZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1
dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmll
cikpIHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiMzMxMTNkYzhi
ZGYxMjNlMWZhNjQyMTJlNWRkZDdkNDM1Njc1M2Y1Li41N2E2OTRlMWQxNWVjYmU4ZjRiZTgzNzI5
YWYzYTZhMDg1ZDJiZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xNTQsNiArMTU0LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE5
MCw3ICsxMTkxLDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
T3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50
NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC0xNjY3LDcg
KzE2NjgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUGVyZm9ybVJl
ZGlyZWN0aW9uKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVj
ZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlm
aWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHVy
bFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0
X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAg
IHZvaWQgc2V0SXNTdXNwZW5kZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggNjgxMzc2Y2U3Y2ExMTIxNDRiYzkzZDkyNzc5ZGIzYThiZWY3ZmIwZi4u
YzM3MTI3NzEyMmEwZjQ3MGY0M2YwM2MxMGQ5ZWJiYjBmZjU1N2I0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTczLDYgKzE3MywxMCBAQAogI2luY2x1ZGUg
IkxpYldlYlJUQ0NvZGVjcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVB
U0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkg
OiAwKQogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0g
W3Nlc3Npb25JRD0lIiBQUkl1NjQgIl0gV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0Vf
TE9HX1NFU1NJT05fSUQsICMjX19WQV9BUkdTX18pCiAKQEAgLTIzOCw2ICsyNDIsMTAgQEAgV2Vi
UHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI+KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
YWRkU3VwcGxlbWVudDxSZW1vdGVDRE1GYWN0b3J5PigpOworI2VuZGlmCisKICAgICBHaWdhY2Fn
ZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391460</attachid>
            <date>2020-02-22 09:05:28 -0800</date>
            <delta_ts>2020-02-22 10:35:08 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208090-20200222090527.patch</filename>
            <type>text/plain</type>
            <size>259777</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE2ZGIxODY4MmIxZTRh
YzUyYzAyNWVmYmYwZWYxNTc0OGEzZWQ4NC4uNTZmODQ3MTM2NzJkN2Q1YTNkOGMwNDI4MGRiZWVj
YjZlZDU0ODk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Z2V0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE06OmdldFN1cHBvcnRlZENhcGFi
aWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6c3VwcG9y
dHNJbml0RGF0YVR5cGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRL
ZXkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVX
YXNVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNRmFjdG9yeTo6cmVzZXRGYWN0b3JpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUtleVN0YXR1cy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETU1lZGlhQ2FwYWJpbGl0eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNTWVkaWFDYXBhYmls
aXR5OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNTWVkaWFDYXBhYmlsaXR5
OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VU
eXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1SZXN0cmljdGlvbnM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBw
b3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmtleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcktl
eU5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFNo
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBw
b3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzZXRTdXBw
b3J0ZWRSb2J1c3RuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRlZElu
aXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydGVk
Um9idXN0bmVzc2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRz
U2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a0NETUZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0
ZWRSb2J1c3RuZXNzIGNvbnN0KToKKwogMjAyMC0wMi0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIFFUS2l0IGZvciByZW5kZXJpbmcgV0sx
IHZpZGVvIGZ1bGxzY3JlZW4gY29udHJvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTYxMDJiY2M4OGNhYjdiMDY4
YjRmNGUyYjU5OTJmMDc3ZGQ0YmUzMC4uODk0MDM3MTdiNDA5MTcyZWQ1MGU0MWYyZjNiMTJiYWRk
OTkwNDcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMjcgQEAKKzIwMjAtMDItMjEgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rl
cm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBS
ZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAgb2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94
eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBleGlzdGluZyBDRE1GYWN0b3J5IG1hY2hp
bmVyeSB0byB3b3JrIG5vcm1hbGx5IGJ5IGV4cGxpY2l0bHkgY2xlYXJpbmcgb3V0IGFsbCB0aGUg
ZXhpc3RpbmcgCisgICAgICAgIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlzIGVuYWJsZWQsIGFuZCBy
ZXNldHRpbmcgdGhvc2UgZmFjdG9yaWVzIHRvIGRlZmF1bHQgd2hlbiB0aGUgR1BVIHByb2Nlc3Mg
aXMgZGlzYWJsZWQuCisKKyAgICAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGlz
IG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgdXNpbmcgdGhlIHNhbWUgZW5jb2RlL2RlY29kZSBwYXRo
IGFzIGlzIHVzZWQgaW4KKyAgICAgICAgV2ViQ29yZUFyZ3VtZW50Q29kZXJzOiB0aGUgU2hhcmVk
QnVmZmVyIGlzIGNvcGllZCBpbnRvIHNoYXJlZCBtZW1vcnksIGFuZCBvbmx5IGEgaGFuZGxlIGlz
IHBhc3NlZCBhY3Jvc3MKKyAgICAgICAgdGhlIFhQQyBib3VuZGFyeS4gVGhpcyByZXF1aXJlcyBl
eGlzdGluZyB1c2VycyB0byBoYW5kbGUgcmVjZWl2aW5nIGEgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
SGFuZGxlIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBvZiB0aGUgWFBDIGJvdW5kYXJ5LCBi
dXQgdGhpcyBpcyB0cml2aWFsLCBhbmQgbWFueSBjYWxsIHNpdGVzIHJlcXVpcmUgYSBTaGFyZWRC
dWZmZXIgb24gdGhlCisgICAgICAgIHJlbW90ZSBzaWRlIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhp
cyBjb2RlIGNvdWxkIGJlIGltcHJvdmVkIGJ5IGFsbG93aW5nIHRoZSBTaGFyZWRNZW1vcnkgb2Jq
ZWN0IGJlIGFkb3B0ZWQKKyAgICAgICAgYnkgdGhlIFNoYXJlZEJ1ZmZlciBvYmplY3QgYXQgY3Jl
YXRpb24gdGltZSwgbGVhZGluZyB0byB6ZXJvLWNvcHkgZGVjb2RpbmcsIGJ1dCBpcyBub3QgZG9u
ZSBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1J
bnN0YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94
eTo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6
OmFkZEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojpy
ZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
Z2V0SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFk
ZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92
ZVNlc3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5Lm1lc3NhZ2VzLmluOiAKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNB
bGxvd2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0UGVy
c2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
UHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjppbnN0YW5jZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVz
dExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Ojpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0
ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDogQWRkZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjog
QWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25z
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBw
b3J0c0luaXREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVBy
b3h5OjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xl
YXJhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0ZUluc3RhbmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZTo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRh
Y2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlw
dFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE06OlJlbW90ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERh
dGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6cGVy
c2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0ZUluc3RhbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQgY29uc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFj
dG9yeTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnJl
bW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpkaWRSZWNl
aXZlU2Vzc2lvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlOjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0UGVyc2lzdGVudFN0YXRlQWxs
b3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpzZXRTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZVNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0SERDUFN0YXR1
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDog
QWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25T
Y2hlbWUuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0
YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZW5k
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vz
c2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmdJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxT
Y2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAy
LTIxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAg
IEFwcC1ib3VuZCBkb21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCA0
YmJiMmJjZTYxODc0YjdlZTE0OGE0MTY4NTUwYTZiMTU2NDM5MmEwLi5jNGUxNDI2YTBjM2ZmYjVh
YTgxMGQ0YzVkMGE2OGJkMDdlOWZlZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgT3B0aW9uYWw8TWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29u
c3QgTWVkaWEKICAgICAgICAgICAgIGlmIChpbml0RGF0YVR5cGUuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAobV9wcml2YXRlICYmIG1fcHJp
dmF0ZS0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkKKyAgICAgICAgICAgIGlm
IChtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFp
bnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBlbmQo
aW5pdERhdGFUeXBlKTsKICAgICAgICAgfQogCkBAIC00NjAsNyArNDYwLDcgQEAgT3B0aW9uYWw8
VmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNOjpnZXRTdXBwb3J0ZWRD
YXBhYmlsaXRpZXNGb3IKICAgICAgICAgLy8gMy4xMS4gSWYgY29udGVudCB0eXBlIGlzIG5vdCBz
dHJpY3RseSBhIGF1ZGlvL3ZpZGVvIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlv
bi4KICAgICAgICAgLy8gMy4xMi4gSWYgcm9idXN0bmVzcyBpcyBub3QgdGhlIGVtcHR5IHN0cmlu
ZyBhbmQgY29udGFpbnMgYW4gdW5yZWNvZ25pemVkIHZhbHVlIG9yIGEgdmFsdWUgbm90IHN1cHBv
cnRlZCBieQogICAgICAgICAvLyAgICAgICBpbXBsZW1lbnRhdGlvbiwgY29udGludWUgdG8gdGhl
IG5leHQgaXRlcmF0aW9uLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAg
ICAgICAgaWYgKCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRlLT5zdXBwb3J0c1Jv
YnVzdG5lc3Mocm9idXN0bmVzcykpCisgICAgICAgIGlmICghcm9idXN0bmVzcy5pc0VtcHR5KCkg
JiYgIW1fcHJpdmF0ZS0+c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkuY29udGFpbnMocm9idXN0bmVz
cykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNl
ciBhZ2VudCBhbmQgaW1wbGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9m
IGVuY3J5cHRlZCBtZWRpYSBkYXRhIGZvciB0aGUKQEAgLTYxMiw3ICs2MTIsNyBAQCBib29sIENE
TTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRh
VHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBlKGluaXREYXRhVHlw
ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRlZEluaXREYXRh
VHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGRhMTli
YmZmMmM3Y2U4MmJlZmE4MDM1YWQ3NTQyZTNlOWYyMmE2OWQuLjI5ZmFiNDk5MDY4MjU4MzJhNWFk
ZGQ5OWE4MGU4ZjM0ZDhkMzA4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTQwMSw3ICs0MDEs
NyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVz
cG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAvLyA2LjUuIExldCBzZXNzaW9u
IGNsb3NlZCBiZSBmYWxzZS4KICAgICAgICAgLy8gNi42LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5z
dGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAg
ICAgICAgIC8vIDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBz
OgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwg
bV9zZXNzaW9uVHlwZSwgKnNhbml0aXplZFJlc3BvbnNlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9u
V2FzQ2xvc2VkLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4m
JiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRp
b25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0
YW5jZVNlc3Npb24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIHNh
bml0aXplZFJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25X
YXNDbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYm
IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlv
bmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNl
c3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDllN2E5NjQ4NDQ0OTkwZTcxYjQzZDZmNzQ0Nzcx
M2QzMmZkMGIyMDMuLmYwYmVkZWM5NGNmYTg3MGY3ODkyZjIxOTA5NjkzNzMxMjcyNTBjMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMjU2MSwxNSArMjU2
MSwyMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgc3RhdGUpCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpCit7CisgICAgYm9vbCBzaG91bGRDb250
aW51ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVka2V5IikgfHwgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkg
JiYgIWRvY3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2VuRW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0
UXVpcmsoKSk7CisgICAgcGxheWVyKCktPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQo
c2hvdWxkQ29udGludWUpOworfQorI2VuZGlmCisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtl
eUlkKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYktpdE1lZGlhS2V5cyA/IG1fd2ViS2l0TWVk
aWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBudWxscHRyOwogfQogCi1ib29sIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRh
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5
KiBpbml0RGF0YSkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFoYXNFdmVudExpc3RlbmVycygi
d2Via2l0bmVlZGtleSIpCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKQEAgLTI1ODAsMTQg
KzI1ODgsMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChV
aW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgKSB7CiAgICAgICAgIG1fZXJyb3IgPSBNZWRp
YUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJSX0VOQ1JZUFRFRCk7CiAgICAgICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGV2ZW50ID0gV2ViS2l0
TWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZl
bnQsIGluaXREYXRhKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogICAgIG1fYXN5bmNF
dmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwotCi0gICAgcmV0dXJuIHRy
dWU7CiB9CiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAtNTEyOSw2ICs1MTM1LDEwIEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKCkKICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSgpOwogI2VuZGlm
CisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlm
CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCkK
QEAgLTU4OTEsNiArNTkwMSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZl
bnQoRXZlbnQmIGV2ZW50KQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CisjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisg
ICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50KQorICAg
ICAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlmCisKICAgICBp
ZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJp
bGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucyk7CiAKQEAgLTU5MTIsNiArNTky
NywxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExp
c3RlbmVyJiBsaXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogeworI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCkK
KyAgICAgICAgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgorCiAg
ICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFp
bGFiaWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjpyZW1vdmVFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGU3MTU2M2NmZjYxYTUxNDU1NjcyNGRmZDNjYTcwYjAx
MDlmZmY1NjAuLmNhMzc0OWJkZGI2ZTBiNmYxYzRmMTg2MzAxOWJkNjQ5Njc5NTFkNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC02ODIsNyArNjgyLDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtl
eUlkKSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJy
YXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBm
aW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QgZmluYWw7CiAjZW5kaWYKIApAQCAtNjk2LDYgKzY5NiwxMCBAQCBwcml2YXRlOgogICAg
IC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJ
Zk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHVwZGF0ZVNob3Vs
ZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tU
YXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29sKSBmaW5hbDsKQEAgLTExNjgsNiArMTE3Miw3IEBA
IHByaXZhdGU6CiAgICAgTWVkaWFQcm92aWRlciBtX21lZGlhUHJvdmlkZXI7CiAKICNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBib29sIG1faGFzTmVlZGtleUxpc3RlbmVy
IHsgZmFsc2UgfTsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFLZXlzPiBtX3dlYktpdE1lZGlhS2V5
czsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKaW5kZXggNzRiM2FhN2Q3YmRiMDBh
MjY3NTZhMDIzNjU2NmYzNjg4MTJiY2UzYi4uMWE3YTU2MjdkYmNhNjQxYjQ5Y2U3ZTU2ZTY3MTZl
MzE4YTk4OGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaApAQCAtMjcsMTMgKzI3LDI3IEBA
CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETUVuY3J5cHRpb25TY2hl
bWUgeworZW51bSBjbGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIDogdWludDhfdCB7CiAgICAgY2Vu
YywKICAgICBjYmNzLAogfTsKIAogfQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lPiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNj
aGVtZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2VuYywKKyAgICAg
ICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2JjcworICAgID47Cit9OworCit9CisK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1GYWN0b3J5LmNwcAppbmRleCA0YmI1OTlmYTgwNzNkM2I4NTVkODQ2MTc4NjE5ZGJjMDI2
MTA1OGYyLi42NjFkNWI0ZWI3NTJlYTU1YWEyZDhlNGY5ZWVkNjM4NmVkZGFjNWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5
LmNwcApAQCAtNTcsNiArNTcsMTEgQEAgdm9pZCBDRE1GYWN0b3J5Ojp1bnJlZ2lzdGVyRmFjdG9y
eShDRE1GYWN0b3J5JiBmYWN0b3J5KQogICAgIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKS5yZW1vdmVB
bGwoJmZhY3RvcnkpOwogfQogCit2b2lkIENETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKCkKK3sK
KyAgICBwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKHJlZ2lzdGVyZWRGYWN0b3JpZXMoKSk7Cit9
CisKICNpZiAhVVNFKEdTVFJFQU1FUikgJiYgIVVTRShBVkZPVU5EQVRJT04pCiB2b2lkIENETUZh
Y3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoVmVjdG9yPENETUZhY3RvcnkqPiYpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1G
YWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0
b3J5LmgKaW5kZXggNDRlYWFiMDdlNzU3YWZlNThiNTM2MWY1YWYxMmIyNDc3NmEwMzUyZS4uZTFh
ZTYwNDIxNmE5NzU5MmYzM2NiODM2MmZjMmMyMWEyYjA4OGI0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaApAQCAtNDIsNyAr
NDIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgc3RhdGljIFZlY3RvcjxDRE1GYWN0
b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
VmVjdG9yPENETUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHJlc2V0RmFjdG9yaWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgcmVnaXN0ZXJGYWN0b3J5KENETUZhY3RvcnkmKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyRmFjdG9yeShDRE1GYWN0b3J5Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5o
CmluZGV4IDhmOWYzZWI4NzQ1YzM1MjAyODMxNGM2MDZkMjg5ZDRlM2Y3MWEwNDguLjdmZTA5ZjBh
ZjNmZDczMDM2MjM1YzIyNzdiYWNkZWJhMDY0OWIxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaApAQCAtNTIsNiArNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIE1vY2ssCiAgICAgICAgIENsZWFyS2V5LAogICAgICAgICBG
YWlyUGxheVN0cmVhbWluZywKKyAgICAgICAgUmVtb3RlLAogICAgIH07CiAgICAgdmlydHVhbCBJ
bXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgPSAwOwogCkBAIC02
OCw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbigpID0gMDsKIAotICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyB7CisgICAgZW51
bSBjbGFzcyBIRENQU3RhdHVzIDogdWludDhfdCB7CiAgICAgICAgIFVua25vd24sCiAgICAgICAg
IFZhbGlkLAogICAgICAgICBPdXRwdXRSZXN0cmljdGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApp
bmRleCA4NzI1YTMxZDhiYjNlMjJiZTIxZGYwN2UzMjBiMzZlNzUwMzg2ZTFhLi5kNDY0Yjc0ZDFj
NzIwMmE5YTMzOWRmZjY1ZDA2ZTA4MjA4OTY5ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApA
QCAtNzIsOSArNzIsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7CiAgICAgdXNpbmcgTWVzc2Fn
ZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5n
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNz
aW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBt
ZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYpID0gMDsKIAotICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIHsKKyAgICBlbnVt
IGNsYXNzIFNlc3Npb25Mb2FkRmFpbHVyZSA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLAogICAg
ICAgICBOb1Nlc3Npb25EYXRhLAogICAgICAgICBNaXNtYXRjaGVkU2Vzc2lvblR5cGUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0
dXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1
cy5oCmluZGV4IGFkOTY5NjIzNjA0Y2QxNDcwNTVhMjdiNzMzNmY2NzdjMGIzYWYyYzQuLmNjNWU3
MTg2Zjc0ZWY4ZTgxNGNiM2FmNzU1ZTE2MWE2NWMyMDg4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1cy5oCkBAIC0zMCw5
ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBDRE1LZXlT
dGF0dXMgeworZW51bSBjbGFzcyBDRE1LZXlTdGF0dXMgOiB1aW50OF90IHsKICAgICBVc2FibGUs
CiAgICAgRXhwaXJlZCwKICAgICBSZWxlYXNlZCwKQEAgLTQ0LDQgKzQ2LDIwIEBAIGVudW0gY2xh
c3MgQ0RNS2V5U3RhdHVzIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1LZXlTdGF0
dXM+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6OkNETUtl
eVN0YXR1cywKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlVzYWJsZSwKKyAgICBXZWJDb3Jl
OjpDRE1LZXlTdGF0dXM6OkV4cGlyZWQsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpSZWxl
YXNlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6Ok91dHB1dFJlc3RyaWN0ZWQsCisgICAg
V2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpPdXRwdXREb3duc2NhbGVkLAorICAgIFdlYkNvcmU6OkNE
TUtleVN0YXR1czo6U3RhdHVzUGVuZGluZywKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6Oklu
dGVybmFsRXJyb3IKKyAgICA+OworfTsKKworfQogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKaW5kZXggNjEyZDY0NWZh
YTUyNDhmNzFmMWMxNTY3ZjQ1MDdlODlmM2IzMWNlNS4uODUyNTg3Y2VkYTA1MTIxNDQ3OTUyMmZh
YzM4ZTRjMGZiOTg3NDlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaApA
QCAtNDgsNiArNDgsNjcgQEAgc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gewogICAg
IENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllciB7IENETVJlcXVpcmVtZW50OjpP
cHRpb25hbCB9OwogICAgIENETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZSB7IENETVJlcXVp
cmVtZW50OjpPcHRpb25hbCB9OwogICAgIFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4gc2Vzc2lvblR5
cGVzOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBsYWJlbDsKKyAg
ICAgICAgZW5jb2RlciA8PCBpbml0RGF0YVR5cGVzOworICAgICAgICBlbmNvZGVyIDw8IGF1ZGlv
Q2FwYWJpbGl0aWVzOworICAgICAgICBlbmNvZGVyIDw8IHZpZGVvQ2FwYWJpbGl0aWVzOworICAg
ICAgICBlbmNvZGVyIDw8IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKKyAgICAgICAgZW5jb2RlciA8
PCBwZXJzaXN0ZW50U3RhdGU7CisgICAgICAgIGVuY29kZXIgPDwgc2Vzc2lvblR5cGVzOworICAg
IH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbGFiZWw7CisgICAgICAgIGRlY29kZXIgPj4gbGFi
ZWw7CisgICAgICAgIGlmICghbGFiZWwpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBpbml0RGF0YVR5cGVzOworICAg
ICAgICBkZWNvZGVyID4+IGluaXREYXRhVHlwZXM7CisgICAgICAgIGlmICghaW5pdERhdGFUeXBl
cykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8
VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IGF1ZGlvQ2FwYWJpbGl0aWVzOworICAgICAgICBk
ZWNvZGVyID4+IGF1ZGlvQ2FwYWJpbGl0aWVzOworICAgICAgICBpZiAoIWF1ZGlvQ2FwYWJpbGl0
aWVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gdmlkZW9DYXBhYmlsaXRpZXM7CisgICAgICAg
IGRlY29kZXIgPj4gdmlkZW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGlmICghdmlkZW9DYXBhYmls
aXRpZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlv
bmFsPENETVJlcXVpcmVtZW50PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGRlY29k
ZXIgPj4gZGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBpZiAoIWRpc3RpbmN0aXZlSWRl
bnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIAorICAg
ICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4gcGVyc2lzdGVudFN0YXRlOworICAgICAgICBk
ZWNvZGVyID4+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgaWYgKCFwZXJzaXN0ZW50U3RhdGUp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZl
Y3RvcjxDRE1TZXNzaW9uVHlwZT4+IHNlc3Npb25UeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBz
ZXNzaW9uVHlwZXM7CisgICAgICAgIGlmICghc2Vzc2lvblR5cGVzKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1v
dmUoKmxhYmVsKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmluaXREYXRhVHlwZXMpLAorICAgICAg
ICAgICAgV1RGTW92ZSgqYXVkaW9DYXBhYmlsaXRpZXMpLAorICAgICAgICAgICAgV1RGTW92ZSgq
dmlkZW9DYXBhYmlsaXRpZXMpLAorICAgICAgICAgICAgKmRpc3RpbmN0aXZlSWRlbnRpZmllciwK
KyAgICAgICAgICAgICpwZXJzaXN0ZW50U3RhdGUsCisgICAgICAgICAgICBXVEZNb3ZlKCpzZXNz
aW9uVHlwZXMpLAorICAgICAgICB9fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1NZWRpYUNhcGFiaWxpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETU1lZGlhQ2FwYWJpbGl0eS5oCmluZGV4IDkwMWI1NGZmMDUwOGVkYTliYmI4OGM1YzFk
Yjg2NTM4ZGNlMTQyODIuLmY4NGEwZDEyYWI0Y2Q1MjBlM2YwZTA0ZDY0ZWJlZmM2MzE2MjU4N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1l
ZGlhQ2FwYWJpbGl0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETU1lZGlhQ2FwYWJpbGl0eS5oCkBAIC0zOSw2ICszOSwzOSBAQCBzdHJ1Y3QgQ0RNTWVk
aWFDYXBhYmlsaXR5IHsKICAgICBTdHJpbmcgY29udGVudFR5cGU7CiAgICAgU3RyaW5nIHJvYnVz
dG5lc3M7CiAgICAgT3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNjaGVtZT4gZW5jcnlwdGlvblNjaGVt
ZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgY29udGVudFR5cGU7
CisgICAgICAgIGVuY29kZXIgPDwgcm9idXN0bmVzczsKKyAgICAgICAgZW5jb2RlciA8PCBlbmNy
eXB0aW9uU2NoZW1lOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAg
IHN0YXRpYyBPcHRpb25hbDxDRE1NZWRpYUNhcGFiaWxpdHk+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKKyAgICAg
ICAgZGVjb2RlciA+PiBjb250ZW50VHlwZTsKKyAgICAgICAgaWYgKCFjb250ZW50VHlwZSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5n
PiByb2J1c3RuZXNzOworICAgICAgICBkZWNvZGVyID4+IHJvYnVzdG5lc3M7CisgICAgICAgIGlm
ICghcm9idXN0bmVzcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8T3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNjaGVtZT4+IGVuY3J5cHRpb25TY2hl
bWU7CisgICAgICAgIGRlY29kZXIgPj4gZW5jcnlwdGlvblNjaGVtZTsKKyAgICAgICAgaWYgKCFl
bmNyeXB0aW9uU2NoZW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUoKmNvbnRlbnRUeXBlKSwKKyAgICAg
ICAgICAgIFdURk1vdmUoKnJvYnVzdG5lc3MpLAorICAgICAgICAgICAgV1RGTW92ZSgqZW5jcnlw
dGlvblNjaGVtZSksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETU1lc3NhZ2VUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1NZXNzYWdlVHlwZS5oCmluZGV4IGU1Zjc5NmE5ZTBlMDc1MWFhMDI3ODJiOWI2NjZjYTIz
MWVmN2U2MDkuLjk1YmYyOGMyYWE5NGEzZGE1MDQ1YjVlYzAwZjM1OGNkMjZkOTVjYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVz
c2FnZVR5cGUuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWVudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgeworZW51bSBjbGFzcyBDRE1NZXNzYWdlVHlwZSA6
IHVpbnQ4X3QgewogICAgIExpY2Vuc2VSZXF1ZXN0LAogICAgIExpY2Vuc2VSZW5ld2FsLAogICAg
IExpY2Vuc2VSZWxlYXNlLApAQCAtNDEsNCArNDMsMTggQEAgZW51bSBjbGFzcyBDRE1NZXNzYWdl
VHlwZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdl
VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0LAor
ICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsCisgICAgICAg
IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVsZWFzZSwKKyAgICAgICAgV2ViQ29y
ZTo6Q0RNTWVzc2FnZVR5cGU6OkluZGl2aWR1YWxpemF0aW9uUmVxdWVzdAorICAgID47Cit9Owor
Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IDI1Zjc4
MTZhMmZlMWRhNmY5MGMyZmVmNzc3NTUxNDA2YWEwZjRhMDMuLjc0OWZjZGYyZmMzN2E1ZTlmZTYy
NWQ1M2EzZTAxMWM3MWM0YWVkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTQxLDExICs0MSwxMSBAQCBjbGFzcyBD
RE1Qcml2YXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlKCkgPSBkZWZhdWx0
OwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJp
bmcmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVk
SW5pdERhdGFUeXBlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25m
aWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uKENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0
cmluZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5n
PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBDRE1SZXF1
aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIENETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQ
ZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVJlcXVpcmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1SZXF1aXJlbWVudC5oCmluZGV4IDY5YWMxMmQzMTZiZjY2NTdiYjBhMjRkYWY3YWU0
ZmEwZmQ0ZjFjOTguLjViMGI3NzgwZDI3ZGZlYjE5M2RjZTZlY2RhNzE3ODUyOGY3Y2Q1OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVp
cmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UmVxdWlyZW1lbnQuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgeworZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVu
dCA6IHVpbnQ4X3QgewogICAgIFJlcXVpcmVkLAogICAgIE9wdGlvbmFsLAogICAgIE5vdEFsbG93
ZWQKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgewogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQsCisgICAgICAg
IFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpSZXF1aXJlZCwKKyAgICAgICAgV2ViQ29yZTo6Q0RN
UmVxdWlyZW1lbnQ6Ok9wdGlvbmFsLAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudDo6
Tm90QWxsb3dlZAorICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVzdHJpY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1SZXN0cmljdGlvbnMuaAppbmRleCBjNTJlMjgyYTEyZTkxYTQ4ODEwYmQxOGI4N2Vi
NmFkNjM4ZjIxMGE4Li45Y2EyYWM1OWU4YjEzNTQ2M2E1MmRiNDVlODA3MzFmNTBjNjk0ZjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0
cmljdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaApAQCAtMzYsNiArMzYsMzkgQEAgc3RydWN0IENETVJlc3RyaWN0aW9u
cyB7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgcGVyc2lzdGVudFN0YXRlRGVuaWVkIHsgZmFsc2UgfTsKICAgICBIYXNoU2V0PENETVNl
c3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1I
YXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworCisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5p
ZWQ7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlRGVuaWVkOworICAgICAgICBl
bmNvZGVyIDw8IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNUmVzdHJpY3Rpb25zPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3RpbmN0
aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlkZW50
aWZpZXJEZW5pZWQ7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29s
PiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudFN0
YXRlRGVuaWVkOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZURlbmllZCkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8SGFzaFNldDxDRE1T
ZXNzaW9uVHlwZSwgV1RGOjpJbnRIYXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVt
SGFzaFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAgICAg
IGRlY29kZXIgPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworICAgICAgICBpZiAoIWRlbmllZFNlc3Np
b25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0
dXJuIHt7CisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkLAorICAgICAg
ICAgICAgKnBlcnNpc3RlbnRTdGF0ZURlbmllZCwKKyAgICAgICAgICAgIFdURk1vdmUoKmRlbmll
ZFNlc3Npb25UeXBlcyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVNlc3Npb25UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1TZXNzaW9uVHlwZS5oCmluZGV4IDYwNTc0YTVhNjkzYTk2YzQ5ZjQ5ZmI3MzQ5NmVk
NzViN2UxZTZmYmIuLmUwN2MzMDAyNzkzMDVmNzc0M2YyMmZjZjU0MDZmMmNmYTY4MWRlMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Np
b25UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
U2Vzc2lvblR5cGUuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgeworZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlw
ZSA6IHVpbnQ4X3QgewogICAgIFRlbXBvcmFyeSwKICAgICBQZXJzaXN0ZW50VXNhZ2VSZWNvcmQs
CiAgICAgUGVyc2lzdGVudExpY2Vuc2UKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3MgQ0RN
U2Vzc2lvblR5cGUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVNlc3Npb25UeXBl
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RN
U2Vzc2lvblR5cGUsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpUZW1wb3Jhcnks
CisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQs
CisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZQorICAg
ID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDQ1MTExZGM3NWI1NTA4MGNlZjRlNWZiMzhhZTI2
MzNiMzllYTcyMzMuLjg2NGQ2ZTNkZTgzYjAyYzNiMWMwZDNhZGI1NjU3YjNjZTdiNjE5ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ0RNUmVzdHJpY3Rpb25z
LmgiCiAjaW5jbHVkZSAiQ0RNU2Vzc2lvblR5cGUuaCIKKyNpbmNsdWRlICJJbml0RGF0YVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI5MCwxMCArMjkxLDEzIEBAIGJvb2wgQ0RNRmFjdG9y
eUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIENE
TVByaXZhdGVDbGVhcktleTo6Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogQ0RNUHJp
dmF0ZUNsZWFyS2V5Ojp+Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1ib29sIENE
TVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVDbGVhcktl
eTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7Ci0gICAgLy8gYGtleWlkc2AgYW5k
ICdjZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgotICAgIHJldHVy
biAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIpIHx8
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgIndlYm0iKSk7Cisg
ICAgcmV0dXJuIHsKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6a2V5aWRzTmFtZSgpLAorICAg
ICAgICBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpLAorICAgICAgICBJbml0RGF0YVJlZ2lz
dHJ5Ojp3ZWJtTmFtZSgpLAorICAgIH07CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zUGVyc2lz
dGVudExpY2Vuc2VUeXBlKGNvbnN0IFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4mIHR5cGVzKQpAQCAt
MzM3LDcgKzM0MSw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0NvbmZpZ3Vy
YXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlQ2xl
YXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNz
aW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgLy8gT25seSBzdXBwb3J0IHRoZSAndGVtcG9yYXJ5
JyBhbmQgJ3BlcnNpc3RlbnQtbGljZW5zZScgc2Vzc2lvbiB0eXBlcy4KICAgICBpZiAoc2Vzc2lv
blR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSAmJiBzZXNzaW9uVHlwZSAhPSBDRE1T
ZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2UpCkBAIC0zNDUsMTAgKzM0OSwxMCBAQCBib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KENETVNlc3Npb25UeXBlJiBzZQogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1JvYnVz
dG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKICAg
ICAvLyBPbmx5IGVtcHR5IGByb2J1c3RuZXNzYCBzdHJpbmcgaXMgc3VwcG9ydGVkLgotICAgIHJl
dHVybiByb2J1c3RuZXNzLmlzRW1wdHkoKTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSB9Owog
fQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlQ2xlYXJLZXk6OmRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
Q0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0CkBAIC00OTgsNyArNTAyLDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICNpZiBMT0dfRElTQUJMRUQKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9uIElEIGZv
ciBkZWJ1ZyBsb2dnaW5nLiBUaGUgdmVyYm9zZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFyZSBiZWNh
dXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCA2NzA0YWU3YTk1N2YzMmZlMWY4NDk4
M2VkM2IzZjY1MDJhNTMxNWEyLi40YWI5ZGUwZjAyY2VlYmIyMGE5M2NkZjYxZTNiNzcwZjVmZGU4
MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTc0LDExICs3NCwxMSBAQCBwdWJs
aWM6CiAgICAgQ0RNUHJpdmF0ZUNsZWFyS2V5KCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUNs
ZWFyS2V5KCk7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJp
bmcmKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERh
dGFUeXBlcygpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRS
b2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlv
bihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKLSAg
ICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlw
ZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKLSAgICBi
b29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9u
VHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAg
ICBDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0
IGZpbmFsOwogICAgIENETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJP
cmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleShDRE1JbnN0YW5jZUNsZWFyS2V5JiBwYXJlbnQpCiAgICAgICAgIDogbV9wYXJl
bnRJbnN0YW5jZShwYXJlbnQpIHsgfQogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA1N2RmY2Jm
NGJjN2M0ODg0NGQzODFjYjM1ZWNjNjQzYzFhYWI0YjkyLi5kYjBiMmY4YTdlMGYyNjk2YTFkOGRi
NmY0ZDRmNDdhYWVjOGViZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02NTcsNiArNjU3LDE0IEBAIHZvaWQgTWVkaWFQbGF5
ZXI6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQog
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQordm9pZCBNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRl
cktleU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQgPSBzaG91bGQ7CisgICAgbV9wcml2YXRlLT5zZXRTaG91bGRDb250aW51ZUFmdGVyS2V5
TmVlZGVkKHNob3VsZCk7Cit9CisjZW5kaWYKKwogTWVkaWFUaW1lIE1lZGlhUGxheWVyOjpkdXJh
dGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZHVyYXRpb25NZWRpYVRpbWUo
KTsKQEAgLTEzMTIsOSArMTMyMCw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gTWVkaWFQbGF5ZXI6
OmNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0CiAgICAgcmV0dXJu
IGNsaWVudCgpLm1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpOwogfQogCi1ib29s
IE1lZGlhUGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1lZGlh
UGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCiB7Ci0gICAgcmV0dXJuIGNs
aWVudCgpLm1lZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKKyAgICBjbGllbnQoKS5tZWRp
YVBsYXllcktleU5lZWRlZChpbml0RGF0YSk7CiB9CiAKIFN0cmluZyBNZWRpYVBsYXllcjo6bWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA3ZTZjYjhhMzkwZGY3ZmUxYTdhYWUwMTcz
OWRjOTQ4Zjc3NjYyMWVlLi5hZWYzY2VlNGFhYjllYTIwYzU2OWU2N2E0MWUxMjBiNzY0MGVmYTYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
QEAgLTIwMCw3ICsyMDAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKICAgICB2aXJ0dWFsIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNo
ZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFy
cmF5KikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogI2VuZGlmCiAKQEAg
LTM2Niw2ICszNjYsMTEgQEAgcHVibGljOgogICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJ
bnN0YW5jZShDRE1JbnN0YW5jZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3Vs
ZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisgICAgYm9vbCBzaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkOyB9CisjZW5kaWYKKwogICAgIGJvb2wgcGF1c2VkKCkgY29uc3Q7CiAgICAgYm9vbCBzZWVr
aW5nKCkgY29uc3Q7CiAKQEAgLTUxOSw3ICs1MjQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGNhY2hlZEtl
eUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0OwotICAgIGJvb2wga2V5TmVlZGVk
KFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKKyAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBp
bml0RGF0YSk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsK
ICNlbmRpZgogCkBAIC02NjUsNiArNjcwLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IG1fbWVkaWFTdHJlYW07CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBib29sIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCB7IGZh
bHNlIH07CisjZW5kaWYKIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
CmluZGV4IDlmN2Y2ZTZiMDJkM2JlYmUwOTBlYmNjMzJhNGIwZGNhMWNjMTc1YTguLjdhODIwNDcw
Zjk5OWFjOTlhNmE5OWQ4ZjM0Mjc2YzlmNDU1OTBhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0yNDMsNiAr
MjQzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZpcnR1YWwgdm9pZCBzZXRT
aG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wpIHsgfQorI2VuZGlmCisKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggNGZjNjc4N2RkOGQ5
MDdjYWQ2YTI3N2YzOWIxZWQzMmVkNjc5YTZkOC4uYjZiYWJmY2RlNWEwZDRiODExOGQwM2NjOTJm
MWQ2MTlkNjFkNzdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwCkBAIC0yNDcsOSArMjQ3LDkgQEAgYm9vbCBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKSA9IGRlZmF1bHQ7
CiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6On5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmcoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBw
b3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CitW
ZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdmFsaWRJbml0RGF0YVR5cGVzKCku
Y29udGFpbnMoaW5pdERhdGFUeXBlKTsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKHZhbGlkSW5p
dERhdGFUeXBlcygpKTsKIH0KIAogYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1
cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKSBjb25zdApAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0
IENECiAgICAgcmV0dXJuIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKIH0K
IAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Citib29sIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IENETVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKIHsKICAgICBpZiAoc2Vzc2lvblR5cGUg
PT0gQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSkgewogICAgICAgICBpZiAoY29uZmlndXJhdGlv
bi5wZXJzaXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKQpAQCAtMzE2LDEz
ICszMTYsMTAgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vz
c2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW8KICAgICByZXR1cm4gc3VwcG9ydHND
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykg
Y29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1
cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHJvYnVzdG5lc3MuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIC8vIEZJWE1FOiBEZXRlcm1pbmUgYW4g
ZW51bWVyYXRlZCBsaXN0IG9mIHJvYnVzdG5lc3MgdmFsdWVzIHN1cHBvcnRlZCBieSBGUFMuCi0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB7IGVtcHR5QXRvbSgpIH07CiB9CiAKIENETVJl
cXVpcmVtZW50IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBD
RE1SZXN0cmljdGlvbnMmKSBjb25zdApAQCAtMzY2LDcgKzM2Myw3IEBAIGJvb2wgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKIAogYm9vbCBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewot
ICAgIGlmICghc3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkKKyAgICBpZiAoIXZh
bGlkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gc2luZk5hbWUoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCA1Mzg2OTY5Zjk0OTc2ZjM4MzY4
MDE4NzQxYmFmZDEyNTUxZTI4Yjg1Li4zODdiOWY5MjVhZDdhZmJhZTJkMmM1NjEyZjg0YjQzNGMw
ZjEwZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNTUs
MTEgKzU1LDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsK
ICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKIAotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1
cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwg
Y29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0
c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0
c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVj
dG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1l
bnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9u
cyYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVu
aXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCBiMTFmNzFhOWI1
ZTM4YmY2OThiMTM5NDlkZGRlODZmM2RkOTk0Y2MxLi43ZjBlMmQ1YWMwMGU2MDYyZDM1YmFjNDVk
NmUxZTcxZDQ0MDNlODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTEyMCw3ICsxMjAs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KICAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENs
b3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IDczMjY3NzVmNDdkMzg1OGIwNWY3
ODc4YjczNTc0YTQ2NDdjYjhkMzEuLmYwOWIyODlhMzNlN2VjMDQwZjA0ZDFmNmY5OWFmOGVmOTBk
OTc3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC01ODAsNyArNTgwLDcgQEAgc3Rh
dGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFs
dWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRC
dWZmZXImIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICgh
bV9leHBpcmVkU2Vzc2lvbnMuaXNFbXB0eSgpICYmIGlzRXF1YWwocmVzcG9uc2VEYXRhLCAiYWNr
bm93bGVkZ2VkIl9zKSkgewogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwpAQCAtNzExLDcgKzcxMSw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UK
LSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nl
c3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygp
IGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpy
ZXNwb25zZURhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJl
cXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6
W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdp
dGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXV07CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6
IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNl
IHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KICAgICBzdHJ1Y3Qgb2JqY19tZXRob2RfZGVz
Y3JpcHRpb24gbWV0aG9kID0gcHJvdG9jb2xfZ2V0TWV0aG9kRGVzY3JpcHRpb24oQHByb3RvY29s
KEFWQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZSksIEBzZWxlY3Rvcihjb250ZW50S2V5U2Vzc2lv
bjpjb250ZW50S2V5UmVxdWVzdERpZFN1Y2NlZWQ6KSwgTk8sIFlFUyk7CkBAIC0xMTQwLDcgKzEx
NDAsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0YQogICAgICAgICByZXR1cm47CiAKICAgICBt
X3Nlc3Npb25JZCA9IHNlc3Npb25JZDsKLSAgICBtX2NsaWVudC0+c2Vzc2lvbklkQ2hhbmdlZCht
X3Nlc3Npb25JZCk7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c2Vzc2lv
bklkQ2hhbmdlZChtX3Nlc3Npb25JZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpncm91cFNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChBVkNv
bnRlbnRLZXlSZXBvcnRHcm91cCogZ3JvdXAsIE5TRGF0YSAqc2Vzc2lvbklkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBiMzdjNDQxMTMxNDk4ODc5NTQ2ZWM4YTU3YTBkZDhl
MTFmNzg0Njk3Li5kNzhjN2NhYTYwMjA4M2ZhM2I4M2IzM2M3NjBkZDRmNDExMmQ2M2IwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE2NzgsOSArMTY3OCwxMiBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJj
ZShBVkFzc2V0UgogICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2UoU3RyaW5nVmlldyhrZXlV
UkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXplb2YodW5z
aWduZWQgY2hhciksIDApOwogCiAgICAgICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5Ojpj
cmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAgICBp
ZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBwbGF5ZXIo
KS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKTsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgICAgICBp
ZiAobV9jZG1JbnN0YW5jZSkgewpAQCAtMTcxMyw3ICsxNzE2LDkgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Uo
QVZBc3NldFIKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCisgICAgICAgIHBsYXll
cigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworCisgICAgICAgIGlmICghcGxheWVyKCkt
PnNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgICAgICBtX2tleVVSSVRvUmVxdWVzdE1hcC5zZXQoa2V5SUQsIGF2UmVxdWVzdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IGNlNWQ4Zjdk
NmJkZjM4YjU5MjIwOTMwMmE2ZTZkNzFiMzY5NjYzMmQuLjBhNGQ2NTc1MGExNTRjNWU1ZWUxOWI1
ODMwYzlmYmFlMDAwMWUzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuY3BwCkBAIC05OCw2ICs5OCwxMSBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0
ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykKICAgICAgICAgbV9zdXBwb3J0ZWRE
YXRhVHlwZXMuYXBwZW5kKHR5cGUpOwogfQogCit2b2lkIE1vY2tDRE1GYWN0b3J5OjpzZXRTdXBw
b3J0ZWRSb2J1c3RuZXNzKFZlY3RvcjxTdHJpbmc+JiYgcm9idXN0bmVzc2VzKQoreworICAgIG1f
c3VwcG9ydGVkUm9idXN0bmVzcyA9IHJvYnVzdG5lc3Nlcy5tYXAoW10gKGF1dG8mIHJvYnVzdG5l
c3MpIC0+IEF0b21TdHJpbmcgeyByZXR1cm4gcm9idXN0bmVzczsgfSk7Cit9CisKIHN0ZDo6dW5p
cXVlX3B0cjxDRE1Qcml2YXRlPiBNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmlu
ZyYpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMp
KTsKQEAgLTEwOCwxMSArMTEzLDE4IEBAIE1vY2tDRE06Ok1vY2tDRE0oV2Vha1B0cjxNb2NrQ0RN
RmFjdG9yeT4gZmFjdG9yeSkKIHsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRh
VHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CitWZWN0b3I8QXRvbVN0
cmluZz4gTW9ja0NETTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7CiAgICAgaWYg
KG1fZmFjdG9yeSkKLSAgICAgICAgcmV0dXJuIG1fZmFjdG9yeS0+c3VwcG9ydGVkRGF0YVR5cGVz
KCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpOworICAgIHJldHVybiB7IH07Cit9
CisKK1ZlY3RvcjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBj
b25zdAoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnN1
cHBvcnRlZFJvYnVzdG5lc3MoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBib29sIE1vY2tDRE06
OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0xMzksNyArMTUxLDcgQEAgYm9vbCBNb2NrQ0RNOjpz
dXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nl
c3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5
cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0Citib29sIE1vY2tD
RE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVNl
c3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QKIHsKICAgICBpZiAoIW1fZmFjdG9yeSB8fCAhbV9mYWN0b3J5LT5zdXBwb3J0ZWRT
ZXNzaW9uVHlwZXMoKS5jb250YWlucyhzZXNzaW9uVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE0OCwxMyArMTYwLDYgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblQKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3Ry
aW5nJiByb2J1c3RuZXNzKSBjb25zdAotewotICAgIGlmIChtX2ZhY3RvcnkpCi0gICAgICAgIHJl
dHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZFJvYnVzdG5lc3MoKS5jb250YWlucyhyb2J1c3RuZXNz
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIE1lZGlhS2V5c1JlcXVpcmVtZW50IE1vY2tDRE06
OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdAogewogICAg
IGlmIChtX2ZhY3RvcnkpCkBAIC0xOTksNyArMjA0LDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0
c1Nlc3Npb25zKCkgY29uc3QKIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkg
Y29uc3QKIHsKLSAgICBpZiAoIXN1cHBvcnRzSW5pdERhdGFUeXBlKGluaXREYXRhVHlwZSkpCisg
ICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVU5VU0VEX1BBUkFNKGluaXREYXRhKTsKQEAg
LTMyNSw3ICszMzAsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwogICAgIGNhbGxiYWNrKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwgc2Vz
c2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQs
IExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZh
Y3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMzMsNyArMzM4LDcg
QEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwg
cmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNl
VmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0
KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlk
LWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggMzk5MDliOTMwM2E5NGM5MzY4ZWFh
MGY2MjVmNGI2N2U1MjUwNTlmMS4uNmNiOTE1Yzg1MDE1NThmMTBiYjhmYzViMmRhNTI4MzUwNDBm
MGViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtNTIsOCAr
NTIsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+JiBz
dXBwb3J0ZWRTZXNzaW9uVHlwZXMoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZFNlc3Npb25U
eXBlczsgfQogICAgIHZvaWQgc2V0U3VwcG9ydGVkU2Vzc2lvblR5cGVzKFZlY3RvcjxNZWRpYUtl
eVNlc3Npb25UeXBlPiYmIHR5cGVzKSB7IG1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzID0gV1RGTW92
ZSh0eXBlcyk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdXBwb3J0ZWRSb2J1c3Ru
ZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOyB9Ci0gICAgdm9pZCBz
ZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKFZlY3RvcjxTdHJpbmc+JiYgcm9idXN0bmVzcykgeyBtX3N1
cHBvcnRlZFJvYnVzdG5lc3MgPSBXVEZNb3ZlKHJvYnVzdG5lc3MpOyB9CisgICAgY29uc3QgVmVj
dG9yPEF0b21TdHJpbmc+JiBzdXBwb3J0ZWRSb2J1c3RuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9z
dXBwb3J0ZWRSb2J1c3RuZXNzOyB9CisgICAgdm9pZCBzZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKFZl
Y3RvcjxTdHJpbmc+JiYpOwogCiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQ7IH0KICAgICB2b2lkIHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNS
ZXF1aXJlbWVudChNZWRpYUtleXNSZXF1aXJlbWVudCByZXF1aXJlbWVudCkgeyBtX2Rpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCA9IHJlcXVpcmVtZW50OyB9CkBAIC05MCw3ICs5MCw3
IEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgbV9wZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudCB7IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbCB9OwogICAgIFZlY3Rv
cjxBdG9tU3RyaW5nPiBtX3N1cHBvcnRlZERhdGFUeXBlczsKICAgICBWZWN0b3I8TWVkaWFLZXlT
ZXNzaW9uVHlwZT4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7Ci0gICAgVmVjdG9yPFN0cmluZz4g
bV9zdXBwb3J0ZWRSb2J1c3RuZXNzOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBtX3N1cHBvcnRl
ZFJvYnVzdG5lc3M7CiAgICAgVmVjdG9yPE1lZGlhS2V5RW5jcnlwdGlvblNjaGVtZT4gbV9zdXBw
b3J0ZWRFbmNyeXB0aW9uU2NoZW1lczsKICAgICBib29sIG1fcmVnaXN0ZXJlZCB7IHRydWUgfTsK
ICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1ZSB9OwpAQCAtMTA5LDExICsxMDks
MTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTW9ja0NETUluc3RhbmNl
OwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29u
c3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMo
KSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVz
c2VzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3Qg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBw
b3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwot
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vz
c2lvblR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5h
bDsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBN
ZWRpYUtleVNlc3Npb25UeXBlJiwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QgZmluYWw7CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0
IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhS2V5c1JlcXVp
cmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFy
YWJsZShjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKQEAg
LTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRC
dWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNl
bnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNl
c3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0
IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4
IGU2ODZjNjNjMThmMzU4NmZmY2E3NGUxNzMxYzBmZjI3NzQxYjBkM2IuLmM1YWYzYjVmYmUwY2Fi
YjhiMmRlMzBkMDg2ZDMzYTRmNzk0NzkxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE2LDYgKzE2LDEwIEBAICQoSkFWQVNDUklQVENP
UkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiskKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2Vz
LmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIu
bWVzc2FnZXMuaW4KQEAgLTEwOCw2ICsxMTIsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMWZjZjdlNDExMDdmYjNmN2Jl
MmJjNjk5OTM2NmEwNWY4ZTY1MDgyOC4uYzczZTI4NzNkOWJmY2E3MTQ2NmM5NDczMTEzYjkwMDI2
MGI1MTc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CkBAIC0xMjksNiArMTI5LDIxIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDEwZDE3MjU1ODc1YTE2ZWM2
ZDNlNmFmZDI1MDZiNTE1NTc2MzU0MDQuLjJkMDA3NTg3YTQ1ODYxMzA2ZjQyZGNjMzUwOGQ2NWNm
Y2JlNjJlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE0Niw2ICsxNDYsMTEg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ciBcCiAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCisgICAgUmVtb3RlQ0RN
UHJveHkgXAorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSBcCisgICAgUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eSBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIFwKKyAgICBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eSBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKICAg
ICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTM5NGUwOTQzMWUwMjc2OGZhMTA3NDdjZWNmMmI5M2U5
ZGY5MTYyNS4uMzkwOWJjODY5NTdlNjBiNDJiMjM0ZjllMzNmYTAzZmJiYzE0ZDljMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcApAQCAtNTgsMTAgKzU4LDE4IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCi0KICNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJv
eHlNZXNzYWdlcy5oIgorI2VuZGlmCisKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtMTg5LDYgKzE5NywxNyBAQCBMaWJXZWJSVENDb2RlY3NQcm94
eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUHJveHkoKQogfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjZG1GYWN0b3J5UHJveHkoKQoreworICAg
IGlmICghbV9jZG1GYWN0b3J5UHJveHkpCisgICAgICAgIG1fY2RtRmFjdG9yeVByb3h5ID0gbWFr
ZVVuaXF1ZTxSZW1vdGVDRE1GYWN0b3J5UHJveHk+KCp0aGlzKTsKKworICAgIHJldHVybiAqbV9j
ZG1GYWN0b3J5UHJveHk7Cit9CisjZW5kaWYKKworCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgewpAQCAtMjM5LDYgKzI1OCwyNyBAQCB2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVj
ZWl2ZUNETU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94
eSgpLmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYgcmVwbHlFbmNvZGVyKQpAQCAtMjU5LDYgKzI5OSwyNyBAQCB2b2lkIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3RpbwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisjZW5kaWYKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
RnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewor
ICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZh
Y3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2Rt
RmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAjZW5kaWYKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjY5LDcgKzMzMCw3IEBA
IGNvbnN0IFN0cmluZyYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFDYWNoZURpcmVj
dG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZ3B1UHJvY2Vzcy0+bWVkaWFDYWNoZURpcmVjdG9y
eShtX3Nlc3Npb25JRCk7CiB9CiAKLSNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKIGNvbnN0IFN0cmluZyYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZ3B1UHJvY2Vzcy0+bWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShtX3Nlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAwZWMyMzhj
ZDA2MjUzODM0NzU5YmZlOTZiYmFlMGFkZWJiMzUxYTdlLi4zNDM2MjQ5NTc5YzdlNGMxODM3MmNh
NDRiZTA3ZDI5Nzc0Nzk2ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7
CiBjbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CitjbGFz
cyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTsKIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI7CkBAIC03Niw2ICs3NywxMCBAQCBwdWJsaWM6CiAKICAgICBXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIHNlc3Npb25NYW5hZ2VyKCk7CiAKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSYgY2Rt
RmFjdG9yeVByb3h5KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTExNyw3ICsxMjIs
MTMgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDQ29kZWNzUHJveHk+IG1fbGliV2ViUlRDQ29kZWNz
UHJveHk7CiAjZW5kaWYKKzw8PDw8PDwgSEVBRAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fc2Vzc2lvbk1hbmFnZXI7Cis9PT09PT09
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKKyNlbmRpZgorPj4+Pj4+PiBbR1BV
UF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YjRhZmQ0YjQz
Njc3N2QxYzRkMTNmODcwYjQ0ZGQyYjM2OTgxMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApAQCAtMCww
ICsxLDE2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24u
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1z
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpSZW1vdGVDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcyhjb25uZWN0aW9uKQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6On5SZW1vdGVD
RE1GYWN0b3J5UHJveHkoKSA9IGRlZmF1bHQ7CisKK3N0YXRpYyBDRE1GYWN0b3J5KiBmYWN0b3J5
Rm9yS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIGF1dG8mIGZhY3Rv
cmllcyA9IENETUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBhdXRvIGZvdW5k
SW5kZXggPSBmYWN0b3JpZXMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgZmFjdG9yeSkgeyByZXR1
cm4gZmFjdG9yeS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKTsgfSk7CisgICAgaWYgKGZv
dW5kSW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBmYWN0b3JpZXNbZm91bmRJbmRleF07Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpPiYmIGNv
bXBsZXRpb24pCit7CisgICAgYXV0byBmYWN0b3J5ID0gZmFjdG9yeUZvcktleVN5c3RlbShrZXlT
eXN0ZW0pOworICAgIGlmICghZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcHJpdmF0ZUNETSA9IGZhY3Rv
cnktPmNyZWF0ZUNETShrZXlTeXN0ZW0pOworICAgIGlmICghcHJpdmF0ZUNETSkgeworICAgICAg
ICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gcHJveHkgPSBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBXVEZN
b3ZlKHByaXZhdGVDRE0pKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
biA9IHByb3h5LT5jb25maWd1cmF0aW9uKCk7CisgICAgYWRkUHJveHkoaWRlbnRpZmllciwgV1RG
TW92ZShwcm94eSkpOworICAgIGNvbXBsZXRpb24oV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpzdXBw
b3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24oZmFjdG9yeUZvcktl
eVN5c3RlbShrZXlTeXN0ZW0pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRp
ZFJlY2VpdmVDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFr
ZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGlu
YXRpb25JRCgpKSkpCisgICAgICAgIHByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVD
RE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0
KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJv
eHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAg
ICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQor
Cit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkg
PSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJU
eXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5j
ZSA9IG1faW5zdGFuY2VzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpbnN0
YW5jZS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIp
OworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlm
aWVyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjphZGRQcm94eShSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNUHJveHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMo
aWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlkLCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQcm94eShSZW1vdGVDRE1JZGVudGlmaWVyIGlk
KQoreworICAgIEFTU0VSVChtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMu
cmVtb3ZlKGlkKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZEluc3RhbmNl
KFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TUluc3RhbmNlUHJveHk+JiYgaW5zdGFuY2UpCit7CisgICAgQVNTRVJUKCFtX2luc3RhbmNlcy5j
b250YWlucyhpZCkpOworICAgIG1faW5zdGFuY2VzLnNldChpZCwgV1RGTW92ZShpbnN0YW5jZSkp
OworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlSW5zdGFuY2UoUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250
YWlucyhpZCkpOworICAgIG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUlu
c3RhbmNlUHJveHkqIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMu
Z2V0KGlkKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nl
c3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vz
c2lvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbihS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3Nl
c3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnlQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YjFjY2M5NWJiZDNmZTNiOWYzMzUy
ZDg1MDAyNzdhNGJmZDM5MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKQEAgLTAsMCArMSw5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OworY2xhc3MgUmVtb3RlQ0RN
UHJveHk7CitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbjsKKworY2xhc3MgUmVtb3RlQ0RN
RmFjdG9yeVByb3h5IGZpbmFsIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeVByb3h5
KCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KKyAg
ICB2b2lkIGRpZFJlY2VpdmVDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY0NE
TUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisKKyAgICB2b2lkIGFkZFByb3h5KFJlbW90ZUNE
TUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4mJik7CisgICAgdm9p
ZCByZW1vdmVQcm94eShSZW1vdGVDRE1JZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkSW5zdGFu
Y2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVJbnN0YW5jZShSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIpOworICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNl
KGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNz
aW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9u
KFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJu
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWwgeyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5h
bDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVt
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1Qcm94eT4+IG1fcHJveGllczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+PiBt
X2luc3RhbmNlczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vz
c2lvbnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDQ3YzVlNmU2MWM0MjA3ODMxZGEwYmQxMThhNmFhZWI0MGQzMzEzNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3Nh
Z2VzIC0+IFJlbW90ZUNETUZhY3RvcnlQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVD
RE0oU3RyaW5nIGtleVN5c3RlbSkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllciBpZCwg
c3RydWN0IFdlYktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5j
aHJvbm91cworICAgIFN1cHBvcnRzS2V5U3lzdGVtKFN0cmluZyBrZXlTeXN0ZW0pIC0+IChib29s
IHJlc3VsdCkgU3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmVkOTI1NDViN2ZkMGQ0ZDMyZjUxMjQyNTFmOGIwMDE1Y2NhOTU4ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUlu
c3RhbmNlUHJveHk+IFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90
ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdikKK3sK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24sIFJlbW90ZUNETUluc3RhbmNlQ29u
ZmlndXJhdGlvbiYmPih7CisgICAgICAgIHByaXYtPmtleVN5c3RlbSgpLAorICAgIH0pOworICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4obmV3IFJlbW90
ZUNETUluc3RhbmNlUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2KSwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpSZW1vdGVD
RE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3Rvcnks
IFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0
b3J5KSkKKyAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKKyAgICAsIG1fY29uZmlndXJh
dGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29y
ZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9pbnN0
YW5jZS0+aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pID09IENETUlu
c3RhbmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNl
dERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9pbnN0
YW5jZS0+c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYWxsb3dlZCkgPT0gQ0RNSW5z
dGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0
UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sIGFsbG93ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPnNl
dFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYWxsb3dlZCkgPT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRl
ZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgY2VydGlmaWNhdGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWNlcnRpZmlj
YXRlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShjZXJ0aWZpY2F0ZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpKSA9PSBDRE1JbnN0YW5j
ZTo6U3VjY2VlZGVkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5z
ZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSkgPT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIm
KT4mJiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5j
cmVhdGVTZXNzaW9uKCk7CisgICAgaWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9mYWN0b3J5KSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRv
IGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOworICAgIGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpj
cmVhdGUobWFrZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwgcHJpdlNlc3Npb24ucmVsZWFzZU5v
bk51bGwoKSwgaWRlbnRpZmllcik7CisgICAgbV9mYWN0b3J5LT5hZGRTZXNzaW9uKGlkZW50aWZp
ZXIsIFdURk1vdmUoc2Vzc2lvbikpOworICAgIGNvbXBsZXRpb24oaWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0SERDUFN0YXR1cyhXZWJDb3JlOjpDRE1J
bnN0YW5jZTo6SERDUFN0YXR1cyBzdGF0dXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPnNldEhEQ1BTdGF0
dXMoc3RhdHVzKSA9PSBDRE1JbnN0YW5jZTo6U3VjY2VlZGVkKTsKK30KKworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RmNmYxMTExZjcxMjA3NDY3Y2YzY2JiNzgwN2Vl
ZDg5MWQ0YWVhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNSW5zdGFuY2U7CitzdHJ1Y3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciAgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5
PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYpOworICAgIH5SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5KCk7CisKKyAgICBjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZSYgaW5zdGFuY2UoKSB7IHJldHVybiBtX2luc3RhbmNlOyB9
CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAg
ICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYm
LCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24+JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisK
KyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxv
d2VkKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0
UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCBjcmVhdGVTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYpPiYmKTsKKyAgICB2
b2lkIHNldEhEQ1BTdGF0dXMoV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IG1faW5z
dGFuY2U7CisgICAgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4gbV9j
b25maWd1cmF0aW9uOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9z
ZXNzaW9uczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRkMjE5NzQ2N2QwOTY1M2Y0MGQwN2ZlNzk1YzA2ZjlkMDU0NzY3MDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwor
bWVzc2FnZXMgLT4gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBD
cmVhdGVTZXNzaW9uKCkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllciBpZCkgU3luY2hyb25vdXMKKyAgICBJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oc3Ry
dWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgLT4g
KGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKKyAgICBTZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJz
QWxsb3dlZChib29sIGFsbG93ZWQpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAg
U2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sIGFsbG93ZWQpIC0+IChib29sIHN1Y2Nlc3Mp
IFN5bmNocm9ub3VzCisgICAgU2V0U2VydmVyQ2VydGlmaWNhdGUoSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGNlcnRpZmljYXRlKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cwor
ICAgIFNldFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nIGRpcmVjdG9yeSkgLT4gKGJvb2wgc3VjY2Vz
cykgU3luY2hyb25vdXMKKyAgICBTZXRIRENQU3RhdHVzKFdlYkNvcmU6OkNETUluc3RhbmNlOjpI
RENQU3RhdHVzIHN0YXR1cykgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODUyMWQ2ODhl
ODBlMDFhYTg0NWRkMDkwYjIzYzg4ZTExOGNmNzJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNw
cApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3Rvcnks
IFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblBy
b3h5ID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShz
ZXNzaW9uKSwgaWRlbnRpZmllcikpOworICAgIGF1dG8gY2xpZW50ID0gbWFrZVdlYWtQdHI8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PihzZXNzaW9uUHJveHkuZ2V0KCkpOworICAg
IHNlc3Npb25Qcm94eS0+bV9zZXNzaW9uLT5zZXRDbGllbnQoV1RGTW92ZShjbGllbnQpKTsKKyAg
ICByZXR1cm4gc2Vzc2lvblByb3h5OworfQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5
UHJveHk+JiYgZmFjdG9yeSwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNz
aW9uLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAg
OiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNl
c3Npb24pKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKQor
eworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNvbXBsZXRp
b24pCit7CisgICAgaWYgKCFpbml0RGF0YS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9u
KHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBp
bml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUo
Y29tcGxldGlvbildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb24o
V1RGTW92ZShtZXNzYWdlKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNj
ZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKFN0cmluZyBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAg
IGlmICghcmVzcG9uc2UuYnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbih0cnVlLCB7IH0s
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX3Nlc3Npb24tPnVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCAqcmVz
cG9uc2UuYnVmZmVyKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKGJvb2wg
c2Vzc2lvbkNsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0
aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBs
ZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJh
dGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNz
aW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklk
LCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAg
ICBtX3Nlc3Npb24tPmxvYWRTZXNzaW9uKHR5cGUsIHNlc3Npb25JZCwgb3JpZ2luLCBbY29tcGxl
dGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3Rvcj4mJiBrZXlTdGF0dXNlcywgT3B0aW9uYWw8ZG91YmxlPiYmIGV4cGly
YXRpb25UaW1lLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2Fn
ZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBmYWlsdXJlKSBtdXRhYmxlIHsKKyAgICAgICAg
Y29tcGxldGlvbihXVEZNb3ZlKGtleVN0YXR1c2VzKSwgV1RGTW92ZShleHBpcmF0aW9uVGltZSks
IFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
ZWRlZCwgZmFpbHVyZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNz
aW9uQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIG1fc2Vzc2lvbi0+Y2xvc2VTZXNzaW9u
KHNlc3Npb25JZCwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoKSBtdXRhYmxl
IHsgY29tcGxldGlvbigpOyB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VU
eXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAg
IG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlv
biA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1Zl
Y3RvciYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBleHBpcmVk
U2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgICAgICBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+IGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKKyAgICAgICAgaWYgKGV4cGlyZWRTZXNz
aW9uc0RhdGEpCisgICAgICAgICAgICBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UgPSBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoV1RGTW92ZSgqZXhwaXJlZFNlc3Npb25zRGF0YSkp
OworICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGly
ZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSksIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246
OlN1Y2NlZWRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sK
KyAgICBtX3Nlc3Npb24tPnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShzZXNzaW9uSWQpOworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlT
dGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcykKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAg
ICBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0dXNlcyhX
VEZNb3ZlKGtleVN0YXR1c2VzKSksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAg
ICBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBlLCBX
VEZNb3ZlKG1lc3NhZ2UpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCkKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAgICBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTZXNzaW9uSWRDaGFuZ2VkKHNlc3Npb25JZCksIG1faWRlbnRpZmllcik7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY1ODQ2NDA4M2RjYWMzZDdhZDVkNTRhZWIxY2ZkMGNiMjMwYmQ1MDUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IGZpbmFsIDogcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25DbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94
eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9y
eVByb3h5OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmLCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIFR5cGVzCisgICAgdXNpbmcgTGljZW5zZVR5
cGUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlOworICAgIHVzaW5n
IEtleVN0YXR1c1ZlY3RvciA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yOworICAgIHVzaW5nIE1lc3NhZ2UgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
Ok1lc3NhZ2U7CisgICAgdXNpbmcgU2Vzc2lvbkxvYWRGYWlsdXJlID0gV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU7CisgICAgdXNpbmcgTGljZW5zZUNhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UmJiwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wsIGJvb2wpPjsKKyAgICB1c2luZyBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIE9wdGlv
bmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgT3B0aW9uYWw8ZG91YmxlPiYmLCBPcHRpb25hbDxNZXNz
YWdlPiYmLCBib29sKT47CisgICAgdXNpbmcgTG9hZFNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmLCBPcHRpb25hbDxkb3Vi
bGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wsIFNlc3Npb25Mb2FkRmFpbHVyZSk+Owor
ICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PjsKKyAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiYmLCBib29sKT47CisgICAgdXNpbmcgU3RvcmVSZWNvcmRDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgcmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpOwor
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmKTsKKyAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBTdHJpbmcgc2Vzc2lv
bklkLCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgY2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYm
KTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKTsKKyAgICB2b2lkIHN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKKyAgICAvLyBDRE1J
bnN0YW5jZVNlc3Npb25DbGllbnQKKyAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1
c1ZlY3RvciYmKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3Nh
Z2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAg
IHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIFdlYWtQ
dHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CisgICAgUmVmPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjMzZWU5YzMx
NWNmMjg5ZjI3ZmFmNzFhMmNkYjNiZDQ5ZmIxMTZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSBOb3RSZWZDb3VudGVkIHsKKworICAgIFJlcXVlc3RMaWNl
bnNlKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0
cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpbml0RGF0
YSkgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBTdHJpbmcgc2Vz
c2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wgc3VjY2VlZGVkKSBBc3lu
YworICAgIFVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgcmVzcG9uc2UpIC0+IChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5cywgT3B0aW9u
YWw8ZG91YmxlPiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBM
b2FkU2Vzc2lvbihXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUs
IFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4pIC0+IChPcHRpb25hbDxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIE9wdGlvbmFs
PGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQsIGVudW06dWludDhfdCBX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBsb2FkRmFpbHVy
ZSkgQXN5bmMKKyAgICBDbG9zZVNlc3Npb24oU3RyaW5nIHNlc3Npb25JZCkgLT4gKCkgQXN5bmMK
KyAgICBSZW1vdmVTZXNzaW9uRGF0YShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUpIC0+IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBT
dG9yZVJlY29yZE9mS2V5VXNhZ2UoU3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44YWFhMzQ2NzUxYTc5ZDY3Njg4ZjViMmVjOGUyMmE4ZWE3OWEzZDJjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NETVByaXZhdGUuaD4KKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNETVByb3h5PiBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RN
RmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2
YXRlPiYmIHByaXYpCit7CisgICAgaWYgKCFwcml2KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24sIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJj4o
eworICAgICAgICBwcml2LT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCksCisgICAgICAgIHByaXYt
PnN1cHBvcnRlZFJvYnVzdG5lc3NlcygpLAorICAgICAgICBwcml2LT5zdXBwb3J0c1NlcnZlckNl
cnRpZmljYXRlcygpLAorICAgICAgICBwcml2LT5zdXBwb3J0c1Nlc3Npb25zKCkKKyAgICB9KTsK
KyAgICAvLyBVc2UgbmV3KCkgdG8gYWNjZXNzIENETVByaXZhdGUncyBwcml2YXRlIGNvbnN0cnVj
dG9yLgorICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+KG5ldyBSZW1v
dGVDRE1Qcm94eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eShXZWFrUHRy
PFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJp
dmF0ZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4mJiBjb25maWd1
cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3ByaXZh
dGUoV1RGTW92ZShwcml2KSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pKQoreworfQorCitSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZh
dWx0OworCit2b2lkIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRl
LT5zdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90
ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IENETVJlc3RyaWN0
aW9ucyYgcmVzdHJpY3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPnN1cHBvcnRzQ29uZmlndXJhdGlv
bldpdGhSZXN0cmljdGlvbnMoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1TZXNzaW9uVHlwZSYgdHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5zdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24odHlwZSwgY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNE
TVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxldGlv
bihtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEodHlwZSwgKmRhdGEuYnVmZmVyKCkpKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1Qcm94eTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IENE
TVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENETVJl
cXVpcmVtZW50KT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5k
aXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rp
b25zKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVt
ZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0
IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENE
TVJlcXVpcmVtZW50KT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRl
LT5wZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMp
KTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVu
aXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uZmlndXJhdGlvbikpOwor
fQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpjcmVhdGVJbnN0YW5jZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7CisgICAgYXV0byBwcml2YXRlSW5zdGFuY2Ug
PSBtX3ByaXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7CisgICAgaWYgKCFwcml2YXRlSW5zdGFuY2Ug
fHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluc3RhbmNlID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIHByaXZhdGVJbnN0YW5jZS5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24gPSBpbnN0YW5jZS0+Y29uZmlndXJhdGlvbigpOworICAgIG1fZmFj
dG9yeS0+YWRkSW5zdGFuY2UoaWRlbnRpZmllciwgV1RGTW92ZShpbnN0YW5jZSkpOworICAgIGNv
bXBsZXRpb24oaWRlbnRpZmllciwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBtX3ByaXZhdGUtPmxv
YWRBbmRJbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiByZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJik+JiYg
Y29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNwb25z
ZSgqcmVzcG9uc2UuYnVmZmVyKCkpKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6c2FuaXRp
emVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24o
bV9wcml2YXRlLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpKTsKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTM4MGZjNTEzYmExNzg5N2M1ZjM0NmVmNTFhNTdhYWI5MGIxOGRkMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIENETVByaXZhdGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNs
YXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsKK2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUg
OiB1aW50OF90Oworc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ0RN
UmVzdHJpY3Rpb25zOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5Oworc3RydWN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK3N0
cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQ
cm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYpOworICAgIH5S
ZW1vdGVDRE1Qcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7CisgICAgUmVt
b3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYsIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJh
dGlvbj4mJik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIE1lc3Nh
Z2VzCisgICAgdm9pZCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
ICAgIHZvaWQgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJp
Y3Rpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lv
blR5cGUmLCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQpPiYmKTsKKyAgICB2b2lkIHBlcnNpc3RlbnRTdGF0ZVJl
cXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OkNETVJlcXVpcmVtZW50KT4mJik7CisgICAgdm9pZCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
QXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIGNyZWF0ZUluc3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAg
IHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKTsKKyAgICB2b2lkIHNhbml0aXplUmVzcG9uc2UoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJik+JiYpOworICAgIHZv
aWQgc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiYmKT4mJik7CisKKyAgICBXZWFrUHRyPFJlbW90
ZUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpDRE1Qcml2YXRlPiBtX3ByaXZhdGU7CisgICAgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24+IG1fY29uZmlndXJhdGlvbjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMu
aW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTY0ZTUzNTMxYWU3NDRkMDQ1MTcxOTQxM2I0M2JmYWMxNTY4NDBiZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMg
LT4gUmVtb3RlQ0RNUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgU3VwcG9ydHNDb25maWd1cmF0
aW9uKHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b24pIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0c0NvbmZpZ3VyYXRp
b25XaXRoUmVzdHJpY3Rpb25zKHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMgcmVzdHJp
Y3Rpb25zKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU3VwcG9ydHNTZXNzaW9u
VHlwZVdpdGhDb25maWd1cmF0aW9uKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlw
ZSB0eXBlLCBzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU3VwcG9ydHNJbml0RGF0
YShBdG9tU3RyaW5nIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKSAt
PiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgRGlzdGluY3RpdmVJZGVudGlmaWVyc1Jl
cXVpcmVtZW50KHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKSAt
PiAoZW51bTp1aW50OF90IFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHJlc3VsdCkgU3luY2hyb25v
dXMKKyAgICBQZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Q0RNUmVz
dHJpY3Rpb25zIHJlc3RyaWN0aW9ucykgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1SZXF1
aXJlbWVudCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgRGlzdGluY3RpdmVJZGVudGlmaWVyc0Fy
ZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3Vz
CisgICAgQ3JlYXRlSW5zdGFuY2UoKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uKSBTeW5jaHJvbm91cworICAgIExvYWRBbmRJbml0aWFsaXplKCkKKyAgICBT
YW5pdGl6ZVJlc3BvbnNlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZXNwb25zZSkg
LT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZXN1bHQpIFN5bmNocm9ub3VzCisg
ICAgU2FuaXRpemVTZXNzaW9uSWQoU3RyaW5nIHNlc3Npb25JZCkgLT4gKE9wdGlvbmFsPFN0cmlu
Zz4gcmVzdWx0KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRl
eCA1ZWZlNjYyNWQ2ZjJmOTBhZGVkNzdkOGM1NTk3ZGYzYzc4OGYzMWRiLi40ODE0NTg0NzUyYTEz
YjBjZTg1MDM0ODk1ZGY5MTQxMDBjNWFhNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVNZXNzYWdlcy5oIgpAQCAtNDcsNiArNDgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpAQCAtNDkwLDE3ICs0OTUsMTYgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFMK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpt
ZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgaW5pdERhdGEpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBt
X3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OkluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgSVBDOjpE
YXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluaXREYXRhLT5kYXRhKCkp
LCBpbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKSksIG1faWQpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6Om1lZGlhUGxheWVyV2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtNjgyLDYg
KzY4NiwzNCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmtleUFkZGVkKCkKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIm
JiBpbnN0YW5jZUlkKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZVByb3h5ID0gbV9tYW5hZ2Vy
LmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5j
ZShpbnN0YW5jZUlkKSkKKyAgICAgICAgbV9wbGF5ZXItPmNkbUluc3RhbmNlQXR0YWNoZWQoaW5z
dGFuY2VQcm94eS0+aW5zdGFuY2UoKSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpbnN0
YW5jZUlkKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0
YW5jZUlkKSkKKyAgICAgICAgbV9wbGF5ZXItPmNkbUluc3RhbmNlRGV0YWNoZWQoaW5zdGFuY2VQ
cm94eS0+aW5zdGFuY2UoKSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YXR0
ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBp
bnN0YW5jZUlkKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShp
bnN0YW5jZUlkKSkKKyAgICAgICAgbV9wbGF5ZXItPmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFu
Y2UoaW5zdGFuY2VQcm94eS0+aW5zdGFuY2UoKSk7Cit9CisjZW5kaWYKKworCisjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQo
Ym9vbCBzaG91bGQpCit7CisgICAgbV9wbGF5ZXItPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OmJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkKIHsKICAgICBtX3BsYXllci0+YmVnaW5TaW11bGF0
ZWRIRENQRXJyb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE2YmIyZGRmYTIxNDc0NzBlODYwMGFi
NzEzOTZhNTljZGY1NDQ5ZmEuLjIwODk2Yjk1NTU0ODEwYjVjY2ZkYzI1Y2FkNTZhNGQwYWE4Njk3
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtNDYsNiArNDYsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewog
Y2xhc3MgTWFjaFNlbmRSaWdodDsKIH0KQEAgLTEyNiw2ICsxMzEsMTYgQEAgcHVibGljOgogICAg
IHZvaWQga2V5QWRkZWQoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICB2b2lkIGNkbUluc3RhbmNlQXR0YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
JiYpOworICAgIHZvaWQgY2RtSW5zdGFuY2VEZXRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXImJik7CisgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciYmKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBzZXRTaG91
bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wpOworI2VuZGlmCisKICAgICB2b2lkIGJlZ2lu
U2ltdWxhdGVkSERDUEVycm9yKCk7CiAgICAgdm9pZCBlbmRTaW11bGF0ZWRIRENQRXJyb3IoKTsK
IApAQCAtMTY4LDcgKzE4Myw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5
Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBtZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllcktleU5l
ZWRlZChVaW50OEFycmF5KikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKQEAgLTI1Miw2ICsyNjcs
MTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpMYXlvdXRSZWN0IG1fdmlkZW9Db250ZW50Qm94
UmVjdDsKICAgICBmbG9hdCBtX3ZpZGVvQ29udGVudFNjYWxlIHsgMS4wIH07CiAKKyNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAg
ICBib29sIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCB7IGZhbHNlIH07CisjZW5kaWYK
KwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbV9sb2dnZXI7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggY2E2NjMxNGRm
YmU2ZDMxYmUwOTk1MmM1ZjI4MmYxMDYxOGZlYmViYS4uMjlkMjg2OWMxNjQyZDhmYzI2NmU4OTFj
YjYxOGU0ODI0YjBiMjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTczLDkgKzczLDE2IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVm
Q291bnRlZCB7CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgIyBTZXRD
RE1TZXNzaW9uCiAgICAgS2V5QWRkZWQoKQotICAgICMgQ2RtSW5zdGFuY2VBdHRhY2hlZAotICAg
ICMgQ2RtSW5zdGFuY2VEZXRhY2hlZAotICAgICMgQXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIENkbUluc3RhbmNl
QXR0YWNoZWQoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkK
KyAgICBDZG1JbnN0YW5jZURldGFjaGVkKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyIGluc3RhbmNlSWQpCisgICAgQXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5jZUlkKQorI2VuZGlmCisKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICBTZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQogI2VuZGlm
CiAKICAgICBCZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5jcHAKaW5kZXggNjcyYmVjNDhlYTc5YzY4MmMxMjQ1ZTUyNmYwNDg4YzY3
OTk2ODBiNy4uNTNhODA3ODE3YjJhNmIxZGRmNTEzNDU4NmVmMmU3MTAyZjY4MjQxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtMTQ5LDEzICsxNDksMTMg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib28KICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1faXNEb25lKQogICAg
ICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkpOwot
ICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVE
YXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoIH0pOworICAgIHNlbmRUb0NsaWVudChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhIHsgZGF0YSwgZW5jb2RlZERhdGFM
ZW5ndGggfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZUZv
cm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGZvcm1EYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggZDMzY2JmZjEwODljYzEwNWRkMWEwMGJl
YmZkZjYxZDMzYzdmNjZiZC4uNTA4MDBmMzUwMjIzNjJmOTZjYTIxYjVlN2ViZDA3ZDhkNDJhMmRh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC00Myw3ICs0Myw3
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29u
bmVjdGlvbjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpAQCAt
NzgsNyArNzgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3Jt
RGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2go
KTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IGE3NDlhYWI4NzAw
NTRjZWI2OTBlNWYxNGY0MDc1NjNmZmNkMGY5YjguLjg4ZjRmMmZhNjQyNjMzNDliN2FkMjJkMDZm
NDNhMjdmNzIzMzUxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmgKQEAgLTk2LDEyICs5Niw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVm
IHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9
OwogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZTsKLXRlbXBsYXRlPD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSY+IHsKLSAgICB0eXBlZGVmIERhdGFSZWZlcmVuY2UgVHlwZTsKLX07Ci0KIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIFRzPgogc3RydWN0IENvZGluZ1R5cGU8c3RkOjp0dXBsZTxUcy4uLj4+
IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dHlwZW5hbWUgQ29kaW5nVHlwZTxUcz46OlR5cGUu
Li4+IFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5kZXggZGFkNDY2MDQ2MzJlOTI2OWYxOTFkMTVjODBkZDIx
MWU1NDg0ZTdhMy4uYmZiMzM5NTc2OTZmMmU3MmEyMzQ4MjM0MjI1MmI3MmJkNzk0MjgwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaApAQCAtMjUsNDAgKzI1LDUxIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAog
bmFtZXNwYWNlIElQQyB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgewogcHVi
bGljOgogICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgeworICAgIH0K
KyAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKKyAgICB7Cisg
ICAgfQogICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9kYXRhKGJ1ZmZlcikgeyB9Ci0gICAgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKLSAg
ICAgICAgOiBtX2RhdGEoc3RkOjptYWtlX3BhaXIoZGF0YSwgc2l6ZSkpIHsgfQorICAgICAgICA6
IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCisgICAgeworICAgICAg
ICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7CisgICAgfQorCisgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisKKyAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQorICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6
IHRydWU7IH0KIAogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ewotICAgICAgICBzd2l0Y2hPbihtX2RhdGEsCi0gICAgICAgICAgICBbZW5jb2RlciA9ICZlbmNv
ZGVyXSAoY29uc3QgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6
ZSgpOwotICAgICAgICAgICAgICAgIGVuY29kZXItPnJlc2VydmUoYnVmZmVyU2l6ZSArIHNpemVv
Zih1aW50NjRfdCkpOwotICAgICAgICAgICAgICAgICplbmNvZGVyIDw8IGJ1ZmZlclNpemU7Ci0g
ICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQot
ICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZWxlbWVudC5zZWdtZW50LT5kYXRhKCkpLCBlbGVt
ZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7Ci0gICAgICAgICAgICB9LCBbZW5jb2RlciA9ICZlbmNv
ZGVyXSAoY29uc3Qgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Q+JiBwYWlyKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgICAgICB1aW50NjRfdCBidWZmZXJTaXplID0gcGFpci5zZWNvbmQ7
Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+cmVzZXJ2ZShidWZmZXJTaXplICsgc2l6ZW9mKHVp
bnQ2NF90KSk7Ci0gICAgICAgICAgICAgICAgKmVuY29kZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICAg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVGaXhlZExlbmd0aERhdGEocGFpci5maXJzdCwgcGFp
ci5zZWNvbmQsIDEpOwotICAgICAgICAgICAgfQotICAgICAgICApOworICAgICAgICBlbmNvZGVy
IDw8IG1fYnVmZmVyOworICAgIH0KKworICAgIHN0YXRpYyBPcHRpb25hbDxTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9w
dGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBidWZmZXI7CisgICAgICAgIGRl
Y29kZXIgPj4gYnVmZmVyOworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUoKmJ1ZmZlcikgfTsKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgVmFyaWFudDxzdGQ6OnBhaXI8Y29uc3QgdWludDhfdCosIHNp
emVfdD4sIFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBtX2RhdGE7CisgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAyNjA0OTBmYjdiNTZhODhjZmYwZDli
ODljMWE3MTY4YWVkMGQxODVjLi43MTY0YzM3MzQzMTAxZmVmMGMzZDVmMGRiNjdjNTJjZDYxOGI1
ZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIyNyw2
ICsyMjcsOSBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgog
ICAgICAgICAnV2ViS2l0OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSWRl
bnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcics
CisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXInLAog
ICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UlRDRW5j
b2RlcklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKaW5kZXggOGM5ZmEyMWFmMzhhNzE2MmM2YzIwOWU5Mzk0Njg5MDZhMjVjM2Nh
My4uZDJkZWU5ZmI2ZDEwMDhiNGU1ODI1OTIxYjIyMWYyOWFhNmU5MzQxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMzQsNyArMTM0
LDggQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCi1z
dGF0aWMgYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3RlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+IGNs
YXNzIFI+CitzdGF0aWMgYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rlciwg
UjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IDA7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKQEAgLTMyMDMsNCArMzIwNCw3
MyBAQCBPcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmbwogfQogI2VuZGlmCiAKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAg
IGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitPcHRpb25h
bDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBi
dWZmZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZl
cjsKK30KKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2Fn
ZSkKK3sKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CisKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBlbmNv
ZGVyIDw8IG1lc3NhZ2VEYXRhOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZVR5cGUgdHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAh
YnVmZmVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIG1ha2VP
cHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+KHsgdHlwZSwgYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkgfSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYga2V5U3RhdHVzZXMpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
a2V5U3RhdHVzZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGtleVN0YXR1cyA6IGtleVN0YXR1
c2VzKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleSA9IGtleVN0YXR1cy5maXJz
dC5jb3B5UmVmKCk7CisgICAgICAgIGVuY29kZXIgPDwga2V5IDw8IGtleVN0YXR1cy5zZWNvbmQ7
CisgICAgfQorfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3Rvcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3Rvcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHVpbnQ2NF90
IGRhdGFTaXplOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXM7CisgICAga2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShkYXRhU2l6ZSk7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0
YVNpemU7ICsraSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXk7CisgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoa2V5KSB8fCAha2V5KQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6
OktleVN0YXR1cyBzdGF0dXM7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdHVzKSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAga2V5U3RhdHVzZXMu
dW5jaGVja2VkQXBwZW5kKHsga2V5LnJlbGVhc2VOb25OdWxsKCksIHN0YXR1cyB9KTsKKyAgICB9
CisgICAgcmV0dXJuIGtleVN0YXR1c2VzOworfQorI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBlMzgxNGUyMWY4MzM2YWFmMmY0NDQzMjMyZTM0NGUw
MDc0ZGFlMmExLi44MTAwYzkyNDNmYWRiODc2MWM2ZTMxN2VhM2VmMzRiMDhhMWYyZjUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTUsNiAr
NTUsMTEgQEAKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
QWRkaXRpb25zLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFu
Y2VTZXNzaW9uLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdU
RiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtMTAwLDYgKzEwNSw3IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJp
bmdUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0ZXBzVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGlj
a3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CkBAIC04MjksNiArODM1LDIzIEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZVZhbHVlPiB7CiB9OwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAg
c3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4g
eworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3I+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJik7CisgICAgc3Rh
dGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9y
PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAog
bmFtZXNwYWNlIFdURiB7CkBAIC05NjUsNCArOTg4LDI4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V1RGTG9nTGV2ZWw+IHsKICAgICA+OwogfTsKIAorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRG
YWlsdXJlLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWls
dXJlOjpOb25lLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRG
YWlsdXJlOjpOb1Nlc3Npb25EYXRhLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUsCisgICAgV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6OlF1b3RhRXhjZWVkZWQsCisg
ICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVy
CisgICAgPjsKK307CisKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNE
TUluc3RhbmNlOjpIRENQU3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlcyA8
CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXMsCisgICAgV2ViQ29yZTo6Q0RN
SW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlVua25vd24sCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkhEQ1BTdGF0dXM6OlZhbGlkLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVz
OjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVz
OjpPdXRwdXREb3duc2NhbGVkCisgICAgPjsKK307CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CmluZGV4IGE1ZDBiZTE0MjcxZjYzMDZmODM2YjhmZGJkN2Q0MjBmMjk1
MjQ2ZWEuLmVmMTFiMDgxMDI2Nzg4NmE2NmE2NzkzMTA0YjAxMzRiMGEwZGQxM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dApAQCAtMzEsNiArMzEsMTAgQEAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHku
Y3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKK0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTM5LDYgKzQzLDcgQEAgR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvVHJhY2tQcm94eS5jcHAKIAorCiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25N
YW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAKIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTUzNCw2ICs1
MzksMTAgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggNzg5N2Uy
OGUzYzhjYTIyNzQ1MWZkNTc0MWY3ZGQxNTVjYzdkZTE1Zi4uMzQzYmExYjEwMzczMjQyNWI2MDI3
N2U4ZjU4MTBmMTdkODFhYWI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIlBh
Z2VDbGllbnQuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1NQSS5oIgogI2ltcG9ydCAiU2FmZUJy
b3dzaW5nV2FybmluZy5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIK
ICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKQEAgLTE4MywxMyArMTg0LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXREcmFnQ2FyZXRSZWN0KGNvbnN0IEludFJlY3QmIGRyYWdDYXJldFJl
Y3QpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRh
Y2htZW50LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdp
c3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRhY2htZW50LCBjb25zdCBT
dHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UpCiB7CiAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgYXV0
byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW3BhZ2VDbGllbnQoKS5hbGxvY0ZpbGVXcmFwcGVySW5z
dGFuY2UoKSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpXSk7CisgICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW3BhZ2VD
bGllbnQoKS5hbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6ZGF0YVJlZmVyZW5jZS5idWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2Uo
KV0pOwogICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpwcmVmZXJyZWRGaWxl
TmFtZV07CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZmlsZVdyYXBwZXIuZ2V0KCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjk3MWY5
NmY0ZGY4M2ViZjUwNWIyZGRjNGFlMjdlNmNhN2Q1Y2M3NS4uMGZiZjAzNTIyZTVlZjk1YWQyN2Zj
NTUxOWQ4ZjZmMGZlMTkxNTI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC02OTA2LDEzICs2OTA2LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2Fs
bGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJh
Y2soKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0
byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8RGF0YUNhbGxiYWNrPihjYWxsYmFja0lEKTsK
ICAgICBpZiAoIWNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWxsYmFjay0+cGVy
Zm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGFSZWZlcmVu
Y2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSkucHRyKCkpOworICAgIGNhbGxiYWNrLT5w
ZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJl
bmNlLnNpemUoKSkucHRyKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Ym9vbENhbGxiYWNr
KGJvb2wgcmVzdWx0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC05MDgxLDcgKzkwODEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3Jl
OjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJ
Y29uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlJiBkYXRhKQogewogICAgIGRhdGFDYWxsYmFjayhkYXRhLCBjYWxsYmFja0lEKTsKIH0K
QEAgLTkzMTIsNyArOTMxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5p
ZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQu
Y29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZlcmVu
Y2UpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIE1FU1NB
R0VfQ0hFQ0sobV9wcm9jZXNzLCBJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwOjppc1ZhbGlkS2V5
KGlkZW50aWZpZXIpKTsKIApAQCAtOTQxOSw3ICs5NDE5LDcgQEAgV2ViUGFnZVByb3h5OjpTaG91
bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyBXZWJQYWdlUHJveHk6OndpbGxVcGRhdGVBdHRh
Y2htZW4KIAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBXZWJQYWdlUHJveHk6OnBsYXRm
b3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZv
cm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiMzE1NDU0OGEwOGI1ODhkZmIzNDYy
NjFiYzdkZTNkYmI3NTRmNmNmLi5mMzMyYzVkMjBkYmE4ZjFkYWYyNzNiMGM2ZjFlNWM4YjJiZmRl
NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTkzLDYgKzE5
Myw3IEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3Q7CiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTE1MDEsNyArMTUwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpOwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6
OkxpbmtJY29uJiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGlu
Z0ljb24oV2ViS2l0OjpDYWxsYmFja0lELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAg
ICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lELCBjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKTsKIAogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCBm
b2N1c2VkKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpOwpAQCAtMjAwNSw3ICsyMDA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVF
dmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpOwogCiAgICAgdm9pZCB2b2lk
Q2FsbGJhY2soQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBp
bWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBib29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CkBAIC0yMTgzLDEy
ICsyMTg0LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wQWxsVVJMU2NoZW1lVGFza3MoV2Vi
UHJvY2Vzc1Byb3h5KiA9IG51bGxwdHIpOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJl
ZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXJGcm9tRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRhKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNo
bWVudERhdGE+JiYpOwogICAgIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcm
IGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmllcik7CiAKLSAgICB2b2lk
IHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0
IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwor
ICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4m
JiwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChS
ZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lk
IHBsYXRmb3JtQ2xvbmVBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgZnJvbUF0dGFj
aG1lbnQsIFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgdG9BdHRhY2htZW50KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGUzOWRj
MjViYmQ4ZjhiMTVkNjY4MThmNmQ2ZDgyYTNiNTY5OTk0OTIuLmE1ZTZmOTY1MTFlNTBhODE0M2Ri
NmYyYWQzZTI2NGU5MmI5YWFhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTUzMCw3ICs1MzAsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIERpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiAKICAgICBHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKHN0cnVjdCBXZWJDb3JlOjpMaW5rSWNvbiBpY29uLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSk7CisgICAgRmlu
aXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCwgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERp
ZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJjY2ZiNjVhODRhMjdjZmJlNzY1YmY3NWI5MTZj
NjUzMTIzZjYzMjQuLmRkMjhlYmUwOTQxMTVmNTZkZWJlZTgxMWRhOGEyMzU0MWY0NTE3ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTY5NSw2ICsxNjk1LDcgQEAKIAkJQ0QxOUQyRUEyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QxOUQyRTgyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNl
Y2hldXJpc3RpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNEMjg2NUVFMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2
NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLzsgfTsK
IAkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVE
MjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gKi87IH07CisJ
CUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNENDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAv
KiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLmggKi87IH07CiAJCUNENDkxQjBEMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ5MUIwQjFFNzMyRTREMDAwMDkwNjYgLyog
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5
MUIwRTFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEMx
RTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCAqLzsg
fTsKQEAgLTE3MTcsNiArMTcxOCwyMCBAQAogCQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyog
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQlDREE5M0RCMDIy
RjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUUy
MkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREE5
M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1l
dGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFy
YW1ldGVycy5jcHAgKi87IH07CisJCUNEQUMyMEI0MjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oICovOyB9OworCQlDREFDMjBDMzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREFDMjBCNjIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLmggKi87IH07CisJCUNEQUMyMEM0MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
QzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi87IH07CisJCUNE
QUMyMEM1MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCODIzRkMyRjcz
MDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDNzIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RN
LmggKi87IH07CisJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBDQTIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmggKi87IH07CisJCUNEQUMyMENEMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovOyB9
OworCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
LmggKi87IH07CisJCUNEQUMyMENGMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFD
MjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oICovOyB9OworCQlD
REFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNEQUMyMEY5
MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMg
LyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJl
bW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5
RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdL
RnVsbHNjcmVlblN0YWNrVmlldy5oICovOyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYg
LyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgx
RUU1IC8qIENvZGVTaWduaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLzsg
fTsKQEAgLTQ5NDUsNiArNDk2MCwxMCBAQAogCQlDRDE5RDJFOTIwNDY0MDZGMDAxNzA3NEEgLyog
RnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxz
Y3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0
ZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc1Rhc2tTdGF0ZU9ic2Vy
dmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE3RjI0MDEwNDU4MDA0
N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYx
ODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE4MjI0
MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDUxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkxQjBBMUU3MzJEMTIwMDAwOTA2
NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ5ODYsNiArNTAwNSw0MyBAQAogCQlDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQ0RBOTNEQUUyMkY4QkNG
MzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBwYXRo
ID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkg
LyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgcGF0aCA9
IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3ODIzRkIxRTIxMDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3Rv
cnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3OTIzRkIxRTIx
MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwODIyM0ZCMjEzNDAwMjFERUUzIC8q
IFJlbW90ZUNETVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETVByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1v
dGVDRE1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwQjEyM0ZCNThFMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
QjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBCMzIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1v
dGVDRE1Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVD
RE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVDRE1JbnN0YW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMy
MEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkQy
M0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkUyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMwMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1G
YWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3Rv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
Q0RNSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFQjIz
RkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFQzIzRkMzODM4MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNz
YWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
RmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2Vz
UmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMTIzRkMzODNB
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjBGMzIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFj
dG9yeVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
RjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREMyODMxQjIwMUJENzlEMDBFNkU3
NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRnVsbHNjcmVl
blN0YWNrVmlldy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzI4MzFDMjAxQkQ3OUQwMEU2RTc0
NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Z1
bGxzY3JlZW5TdGFja1ZpZXcubW07IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5T
dGFja1ZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1
MDYwMDhBMkZDMyAvKiBDRk5ldHdvcmsuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5l
dHdvcmsuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3
b3JrLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTUyNjYsNiAr
NTMyMiwyMCBAQAogCQkJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaCAqLywKIAkJCQkwN0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluICovLAogCQkJCTA3OTIzMTRFMjM5RDVGNTMw
MDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8sCisJCQkJ
Q0RBQzIwQkYyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5jcHAgKi8sCisJCQkJQ0RBQzIw
QkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETS5oICovLAorCQkJCUNEQUMyMEI4MjNGQzJG
NzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjky
M0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuY3BwICovLAorCQkJCUNEQUMyMEMw
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggKi8sCisJCQkJQ0RBQzIwQzIy
M0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBC
QjIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuY3BwICovLAorCQkJCUNEQUMy
MEI3MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovLAorCQkJCUNEQUMy
MEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAq
LywKKwkJCQlDREFDMjBCNjIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkUyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovLAorCQkJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0Ez
NSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIw
QkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIu
aCAqLywKIAkJCQkwN0I5M0ZGNTIzQUYwQ0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJD
b25maWd1cmF0aW9uLmggKi8sCiAJCQkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgKi8sCiAJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovLApAQCAtNTI5MSw2ICs1MzYxLDE4IEBA
CiAJCQkJMUQwRUNFQTkyM0ZDODRCQjAwRDE3MkY2IC8qIGNvY29hICovLAogCQkJCTA3MUJDNTdF
MjNDQTVEQjEwMDY4MEQ3QyAvKiBSZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwICovLAogCQkJCTA3
MUJDNTdGMjNDQTVEQjEwMDY4MEQ3QyAvKiBSZW1vdGVBdWRpb1RyYWNrUHJveHkuaCAqLywKKwkJ
CQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcCAq
LywKKwkJCQlDREFDMjA3ODIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmggKi8sCisJCQkJQ0RBQzIwN0MyM0ZCMUVGOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCMzIzRkI1OEYyMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAqLywKKwkJCQlDREFDMjBCMTIzRkI1OEUyMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFD
MjBBRjIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3Bw
ICovLAorCQkJCUNEQUMyMEFFMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5oICovLAorCQkJCUNEQUMyMEFEMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjA4MzIzRkIy
MTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuY3BwICovLAorCQkJCUNEQUMyMDgyMjNGQjIx
MzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5oICovLAorCQkJCUNEQUMyMDg2MjNGQjIxNTgw
MDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzI1RUZBRDIz
OUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovLAog
CQkJCTA3MjVFRkFDMjM5QUUzODUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5oICovLAogCQkJCTA3MjVFRkFCMjM5QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTk2MjUsNiArOTcwNywyMSBAQAog
CQkJCTFBMDQzQjVDMTI0RDVFOUQwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdl
cy5oICovLAogCQkJCTFBOEVGQTZFMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUE4RUZBNkYxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdp
blByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMjIzRkMzODNBMDAyMURFRTMgLyogUmVt
b3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBGMzIz
RkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLywKKwkJ
CQlDREFDMjBFRTIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQUMyMEVCMjNGQzM4
MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlD
REFDMjBGNjIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oICovLAorCQkJCUNENDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNENDY2MTgyMjQwMTA1
NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oICovLAorCQkJ
CUNENDY2MTgwMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNz
YWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQUMy
MEVEMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJQ0RBQzIwRjEyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRUYyM0ZDMzgz
OTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlD
REFDMjBGNDIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oICovLAor
CQkJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVw
bGllcy5oICovLAogCQkJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRkYyNEEyQzE4
NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
LmggKi8sCiAJCQkJMDc5MjMxNDMyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMDUyNCw2ICsxMDYyMSwxNiBAQAog
CQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMUU2ODg3MDFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGlu
ZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODIyMkIzNTE1RTAwOEQwRThCIC8qIFJl
ZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIw
QzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RB
QzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEQUMyMENEMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzQyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRTIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDREFDMjBDMzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBCNDIzRkI1OEYyMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIw
Q0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0RBQzIwQzkyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUw
MDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMTZBRUExNjRCM0E4ODAwMjkwRDYyIC8qIFJl
bW90ZUxheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMTIyMjAsNiArMTIzMjcs
MTEgQEAKIAkJCQlDMTVDQkIzNzIzRjM3RUNCMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1NEMzMUIyMTJGNERBNjAwNDlDMTc0IC8qIFByb2Nl
c3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZB
QzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RB
QzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY5MjNGQzcyNkMw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3Rl
Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3MkExRkEy
MTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZGMjRBMkQxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRD
MThGQjQyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDNmNWI2MTgxZTA2
ZTBhODQ2ODhiZGE5MTZmMTBkODdhNjFkMTRiZTcuLjkyZmY3N2ViYzc3MzNhNTFmYjE3YzdhNzYz
Yzc2ODc2YzYyYWVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3Qu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZlByaXZhdGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4ZGZm
NTBmMzA4OGVkNDVjNTkwZWM4MWUyYzA5YTEzOGJhN2E1MzVmLi5jNjAyNGNhZDlhOTU3NDJiZjdk
NjJiMTkyNjlhN2NiNjZjZjA3MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2lu
Y2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIK
ICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1lc3NhZ2VzLmgiCkBAIC00NCw2ICs0NiwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
cy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTEwMSw2ICsxMDcsMTIgQEAgdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCktPmRpZFJl
Y2VpdmVTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcAppbmRleCA2ZjYzYjIzMGY2MjdkMTJjYzZlYzNlZjdkZDZjZTZhZDEy
OTdhYTZhLi4zMzBkMjZkYWEyMDRkY2E0MTdjYmI5MjhmODljNjZkMmUxYWE0OTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC00OSw2ICs0OSwxMCBAQAogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdU
RkxvZ0NoYW5uZWwgTG9nTWVkaWE7CkBAIC0xMTYsMTggKzEyMCwxNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVS
TCYgdXJsLCBjbwogICAgIGlmICh1cmwuaXNMb2NhbEZpbGUoKSkgewogICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwogICAgICAgICBhdXRvIGZpbGVTeXN0ZW1QYXRoID0g
dXJsLmZpbGVTeXN0ZW1QYXRoKCk7Ci0gICAgICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IGZh
bHNlOwogCisgICAgICAgIGF1dG8gY3JlYXRlRXh0ZW5zaW9uID0gWyZdIHsKICNpZiBIQVZFKFNB
TkRCT1hfSVNTVUVfUkVBRF9FWFRFTlNJT05fVE9fUFJPQ0VTU19CWV9BVURJVF9UT0tFTikKLSAg
ICAgICAgYXV0byBhdWRpdFRva2VuID0gbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
YXVkaXRUb2tlbigpOwotICAgICAgICBBU1NFUlQoYXVkaXRUb2tlbik7Ci0gICAgICAgIGlmIChh
dWRpdFRva2VuKQotICAgICAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oZmlsZVN5c3RlbVBhdGgsIGF1ZGl0
VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKGF1
dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9r
ZW4oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihmaWxlU3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgp
LCBoYW5kbGUpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKLSAg
ICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShm
aWxlU3lzdGVtUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGhhbmRsZSk7
CisgICAgICAgICAgICByZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVT
eXN0ZW1QYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKTsKKyAg
ICAgICAgfTsKIAotICAgICAgICBpZiAoIWNyZWF0ZWRFeHRlbnNpb24pIHsKKyAgICAgICAgaWYg
KCFjcmVhdGVFeHRlbnNpb24oKSkgewogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUg
dG8gY3JlYXRlIHNhbmRib3ggZXh0ZW5zaW9uIGhhbmRsZSBmb3IgR1BVUHJvY2VzcyB1cmwuXG4i
KTsKICAgICAgICAgICAgIG1fY2FjaGVkU3RhdGUubmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CiAgICAgICAgICAgICBtX3BsYXllci0+bmV0d29y
a1N0YXRlQ2hhbmdlZCgpOwpAQCAtODk5LDE5ICs5MDIsMjIgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVk
KENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5j
ZUF0dGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFu
Y2VBdHRhY2hlZChkb3duY2FzdDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZp
ZXIoKSksIG1faWQpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5z
dGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkK
KyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OkNkbUluc3RhbmNlRGV0YWNoZWQoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3Rh
bmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKQordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RN
SW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlz
PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpBdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKGRvd25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigp
KSwgbV9pZCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9y
S2V5Q2hhbmdlZCgpCkBAIC05MTksNiArOTI1LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjp3YWl0aW5nRm9yS2V5Q2hhbmdlZCgpCiAgICAgbV9wbGF5ZXItPndhaXRpbmdGb3JL
ZXlDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjppbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgSVBDOjpE
YXRhUmVmZXJlbmNlJiYgaW5pdERhdGEpCit7CisgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpOworICAg
IG1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5cGUsIFdU
Rk1vdmUoaW5pdERhdGFCdWZmZXIpKTsKK30KKwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OndhaXRpbmdGb3JLZXkoKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC05
MjYsNiArOTM4LDEzIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9y
S2V5KCkgY29uc3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAg
ICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0
U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGQpLCBtX2lkKTsKK30KKyNlbmRpZgor
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmgKaW5kZXggMTMyZjMwYWIyOWI2ZTUwOWYxMTM5NDkyNTgwYTZlMzY3MWNjNzkw
OS4uZmUyOTMxODBlZGI5NWMyM2E3NjM0N2YxMzBhN2M0NmM0YjhkMDRiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oCkBAIC0xMzIsNiArMTMyLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIHdhaXRpbmdGb3JLZXlDaGFuZ2VkKCk7CisgICAg
dm9pZCBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBJUEM6OkRh
dGFSZWZlcmVuY2UmJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCkBAIC0zMTcsNiArMzE4LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCB3YWl0aW5nRm9y
S2V5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29u
dGludWVBZnRlcktleU5lZWRlZChib29sKSBmaW5hbDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUubWVzc2FnZXMuaW4KaW5kZXggZTg4OTdiNmExMGExMGQ0YjcwMDkyOThjN2FhMjcy
OGJmZTExMjk3YS4uMzNlMmE5OGQ0Nzk4NzlkMjE1YjRkMDQxYWZlN2FiNTBlODM2MmRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTc1LDYgKzc1
LDcgQEAgbWVzc2FnZXMgLT4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQg
ewogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBXYWl0aW5nRm9yS2V5Q2hhbmdl
ZCgpCisgICAgSW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoU3RyaW5nIGluaXREYXRhVHlw
ZSwgSVBDOjpEYXRhUmVmZXJlbmNlIGluaXREYXRhKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1YjVkYWE4YTI5YmNkOThlNjI3MDkz
MTc1YzlmNzA2NWI5YTcwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0NETVJlc3RyaWN0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETT4gUmVtb3RlQ0RNOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1G
YWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE0+KG5ldyBSZW1vdGVDRE0oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCks
IFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNOjpSZW1vdGVDRE0oV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUlkZW50aWZpZXImJiBp
ZCwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3Rv
cnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKKyAg
ICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitib29s
IFJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgc3VwcG9ydHMgeyBmYWxzZSB9OworICAg
IG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJh
dGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNDb25maWd1cmF0aW9uOjpS
ZXBseShzdXBwb3J0cyksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQor
Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBDRE1S
ZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdXBwb3J0cyB7IGZhbHNlIH07Cisg
ICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0
cmljdGlvbnMoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSwgTWVzc2FnZXM6OlJlbW90ZUNE
TVByb3h5OjpTdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zOjpSZXBseShzdXBw
b3J0cyksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitib29sIFJl
bW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNl
c3Npb25UeXBlJiB0eXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBib29sIHN1cHBvcnRzIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVD
RE1Qcm94eTo6U3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKHR5cGUsIGNvbmZp
Z3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbjo6UmVwbHkoc3VwcG9ydHMpLCBtX2lkZW50aWZpZXIpOworICAgIHJl
dHVybiBzdXBwb3J0czsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKSBj
b25zdAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIW1fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzLmNvbnRhaW5zKHR5
cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1cHBvcnRzIHsgZmFsc2Ug
fTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNJbml0RGF0YSh0eXBlLCBk
YXRhKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb246OlJlcGx5KHN1cHBvcnRzKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4g
c3VwcG9ydHM7Cit9CisKK0NETVJlcXVpcmVtZW50IFJlbW90ZUNETTo6ZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24sIGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zKSBjb25zdAorewor
ICAgIENETVJlcXVpcmVtZW50IHJlcXVpcmVtZW50IHsgQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93
ZWQgfTsKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIHJlcXVpcmVtZW50Owor
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudChjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpLCBNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6OkRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudDo6UmVwbHkocmVxdWlyZW1l
bnQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiByZXF1aXJlbWVudDsKK30KKworQ0RNUmVx
dWlyZW1lbnQgUmVtb3RlQ0RNOjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlv
bnMmIHJlc3RyaWN0aW9ucykgY29uc3QKK3sKKyAgICBDRE1SZXF1aXJlbWVudCByZXF1aXJlbWVu
dCB7IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkIH07CisgICAgaWYgKCFtX2ZhY3RvcnkpCisg
ICAgICAgIHJldHVybiByZXF1aXJlbWVudDsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5
OjpQZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMp
LCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50OjpS
ZXBseShyZXF1aXJlbWVudCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlcXVpcmVtZW50
OworfQorCitib29sIFJlbW90ZUNETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBl
ck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBib29sIGZsYWcgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNE
TVByb3h5OjpEaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJh
YmxlKGNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkRpc3RpbmN0aXZl
SWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGU6OlJlcGx5KGZsYWcpLCBt
X2lkZW50aWZpZXIpOworICAgIHJldHVybiBmbGFnOworfQorCitSZWZQdHI8Q0RNSW5zdGFuY2U+
IFJlbW90ZUNETTo6Y3JlYXRlSW5zdGFuY2UoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBp
ZDsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6Q3JlYXRlSW5zdGFuY2UoKSwgTWVzc2FnZXM6OlJl
bW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5jZTo6UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24pLCBt
X2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5n
ZXQoKSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBS
ZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxp
emUoKSwgbV9pZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RN
OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHNhbml0aXplZFJlc3BvbnNlOworICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjpTYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKSwgTWVzc2FnZXM6
OlJlbW90ZUNETVByb3h5OjpTYW5pdGl6ZVJlc3BvbnNlOjpSZXBseShzYW5pdGl6ZWRSZXNwb25z
ZSksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIFdURk1vdmUoc2FuaXRpemVkUmVzcG9uc2Uu
YnVmZmVyKCkpOworfQorCitPcHRpb25hbDxTdHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVTZXNz
aW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3Rv
cnkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+
IHNhbml0aXplZFNlc3Npb25JZDsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2FuaXRp
emVTZXNzaW9uSWQoc2Vzc2lvbklkKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTYW5pdGl6
ZVNlc3Npb25JZDo6UmVwbHkoc2FuaXRpemVkU2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gc2FuaXRpemVkU2Vzc2lvbklkOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYz
YzM0ZWQyYzIwMjNhZGQyMGFlYTg5YzdkZTRhN2FjMmM0YmJlNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTAsMCAr
MSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFJlbW90ZUNETSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1Qcml2YXRlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4gY3JlYXRlKFdlYWtQdHI8UmVt
b3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1
cmF0aW9uJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETSgpID0gZGVmYXVsdDsKKworcHJpdmF0
ZToKKyAgICBSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1J
ZGVudGlmaWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJp
Y3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBX
ZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRz
U2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlw
ZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVp
cmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25z
JikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25z
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOworICAg
IHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9y
dGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5z
dXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRl
ZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBw
b3J0ZWRSb2J1c3RuZXNzZXM7IH0KKyAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRzU2VydmVyQ2Vy
dGlmaWNhdGVzOyB9CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRzU2Vzc2lvbnM7IH0KKworICAgIFdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNETUlkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOworICAgIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYyYzQ2
NGZkZmRjZDhjMzU3NTZiMGUzOGRhZDBmODkzOTA1ODg2NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5o
CkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGVudFR5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uIHsKKyAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICBWZWN0b3I8
QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgIGJvb2wgc3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXM7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zOworCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAg
ICAgICBlbmNvZGVyIDw8IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgZW5jb2RlciA8
PCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0
c1Nlc3Npb25zOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0
YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxBdG9tU3RyaW5nPj4gc3VwcG9y
dGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRJbml0RGF0YVR5
cGVzOworICAgICAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRhVHlwZXMpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxBdG9tU3RyaW5n
Pj4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZFJv
YnVzdG5lc3NlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0ZWRSb2J1c3RuZXNzZXMpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBv
cnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRzU2VydmVy
Q2VydGlmaWNhdGVzOworICAgICAgICBpZiAoIXN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29s
PiBzdXBwb3J0c1Nlc3Npb25zOworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRzU2Vzc2lvbnM7
CisgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9ucykKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBw
b3J0ZWRJbml0RGF0YVR5cGVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnN1cHBvcnRlZFJvYnVz
dG5lc3NlcyksCisgICAgICAgICAgICAqc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMsCisgICAg
ICAgICAgICAqc3VwcG9ydHNTZXNzaW9ucywKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRh
ZjgzZTM4MjllZWEzNzNlY2M0NmMyNjgwNTVlNjk2MjhhOTM5ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAK
QEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE0uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlQ0RN
RmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeShXZWJQcm9jZXNzJiBwcm9jZXNzKQorICAgIDogbV9w
cm9jZXNzKHByb2Nlc3MpCit7Cit9CisKK1JlbW90ZUNETUZhY3Rvcnk6On5SZW1vdGVDRE1GYWN0
b3J5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVu
Y2VzKGNvbnN0IFdlYkNvcmU6OlNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBpZiAoc2V0dGlu
Z3MudXNlR1BVUHJvY2Vzc0Zvck1lZGlhKCkpIHsKKyAgICAgICAgYXV0byYgZmFjdG9yaWVzID0g
Q0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgICAgICBmYWN0b3JpZXMuY2xl
YXIoKTsKKyAgICAgICAgZmFjdG9yaWVzLmFwcGVuZCh0aGlzKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgQ0RNRmFjdG9yeTo6cmVzZXRGYWN0b3JpZXMoKTsKK30KKworCitjb25zdCBjaGFyKiBSZW1v
dGVDRE1GYWN0b3J5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVDRE1G
YWN0b3J5IjsKK30KKworR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZUNETUZhY3Rvcnk6Omdw
dVByb2Nlc3NDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgYm9vbCBzdXBwb3J0ZWQg
PSBmYWxzZTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0pLCBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3Rl
bTo6UmVwbHkoc3VwcG9ydGVkKSwgeyB9KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gUmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIFJlbW90ZUNETUlkZW50aWZpZXIgaWQ7Cisg
ICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIGdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OkNyZWF0ZUNETShrZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpDcmVhdGVDRE06OlJlcGx5KGlkLCBjb25maWd1cmF0aW9uKSwgeyB9KTsKKyAgICBp
ZiAoIWlkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gUmVtb3RlQ0RNOjpj
cmVhdGUobWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjphZGRTZXNzaW9uKFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+
JiYgc2Vzc2lvbikKK3sKKyAgICBBU1NFUlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAg
ICBtX3Nlc3Npb25zLnNldChpZCwgV1RGTW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNRmFjdG9yeTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyIGlkKQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9z
ZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OmRpZFJlY2Vp
dmVTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1h
a2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBl
PihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmNjZWJlODRjMmIxMmFkNDIzODM4YTM2MjdhMDY0ZWViZDQ3MDk1MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNRmFjdG9yeS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwor
I2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFNldHRpbmdzOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247Citj
bGFzcyBEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb247CitjbGFzcyBSZW1vdGVDRE07CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb247CitjbGFzcyBXZWJQcm9jZXNzOworCitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5IGZpbmFs
CisgICAgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNRmFjdG9yeQorICAgICwgcHVibGljIFdlYlByb2Nl
c3NTdXBwbGVtZW50CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0
IFJlbW90ZUNETUZhY3RvcnkoV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUZh
Y3RvcnkoKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAg
IFdlYlByb2Nlc3MmIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAg
IEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbigpOworCisgICAgdm9p
ZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJDb3JlOjpTZXR0aW5ncyYpOworCisgICAgdm9p
ZCBkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllciwgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4mJik7CisgICAgdm9pZCByZW1vdmVT
ZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworCitwcml2YXRlOgor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiBjcmVhdGVDRE0oY29uc3Qg
U3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcm
KSBmaW5hbDsKKworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
ciwgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1h
cDxSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPj4gbV9jZG1z
OworICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRp
Zmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJlZTNhMzgxOWMxNzA3YjU1OGIzZmQ5YWFhODgxNjMxNTgzOTJm
YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworZW51bSBSZW1vdGVDRE1JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1v
dGVDRE1JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlw
ZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDM3MzlmMDNkYzU5ZWFkNzFlZDdhMGZjMDNiNmNjMTk3ZGFhZDUzOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK1JlZjxSZW1vdGVDRE1JbnN0YW5jZT4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0
ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3Vy
YXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2UoV1RG
TW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30K
KworUmVtb3RlQ0RNSW5zdGFuY2U6OlJlbW90ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RN
RmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFj
dG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQor
ICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK2F1
dG8gUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSAtPiBTdWNj
ZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsK
KworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1J
bnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiks
IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb246OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2Nl
ZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6
c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCBhbGxvd2VkKSAtPiBTdWNjZXNz
VmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKwor
ICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjpTZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChhbGxvd2VkKSwgTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNB
bGxvd2VkOjpSZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNj
ZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFuY2U6
OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBhbGxvd2VkKSAtPiBTdWNjZXNzVmFsdWUK
K3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJv
b2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5OjpTZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGFsbG93ZWQpLCBNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6U2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZDo6UmVwbHkoc3VjY2Vl
ZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDog
RmFpbGVkOworfQorCithdXRvIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlKSAtPiBTdWNjZXNzVmFs
dWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAg
IGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZS5nZXQoKSksIE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZTo6UmVwbHkoc3Vj
Y2VlZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVk
IDogRmFpbGVkOworfQorCithdXRvIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAo
IW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVk
IHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTdG9y
YWdlRGlyZWN0b3J5KGRpcmVjdG9yeSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5
OjpTZXRTdG9yYWdlRGlyZWN0b3J5OjpSZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOwor
ICAgIHJldHVybiBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK1JlZlB0cjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNz
aW9uKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkOworICAgIG1fZmFjdG9y
eS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkNyZWF0ZVNlc3Npb24oKSwgTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OkNyZWF0ZVNlc3Npb246OlJlcGx5KGlkKSwgbV9pZGVudGlmaWVy
KTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHNlc3Np
b24gPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3Rv
cnkuZ2V0KCkpLCBXVEZNb3ZlKGlkKSk7CisgICAgbV9mYWN0b3J5LT5hZGRTZXNzaW9uKGlkLCBz
ZXNzaW9uLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIHNlc3Npb247Cit9CisKK2F1dG8gUmVtb3Rl
Q0RNSW5zdGFuY2U6OnNldEhEQ1BTdGF0dXMoSERDUFN0YXR1cyBzdGF0dXMpIC0+IFN1Y2Nlc3NW
YWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gRmFpbGVkOworCisg
ICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OlNldEhEQ1BTdGF0dXMoc3RhdHVzKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OlNldEhEQ1BTdGF0dXM6OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7
CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWQ4MjZiYWE0MTJkNTYwZTBjMDY5OGEwZTJk
YzVlODBlMjA4YmUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZSBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5jZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVtb3Rl
Q0RNSW5zdGFuY2UoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxSZW1vdGVDRE1JbnN0YW5j
ZT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKTsKKworICAgIGNv
bnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFJlbW90ZUNETUluc3RhbmNlKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYs
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKTsKKworICAgIEltcGxlbWVudGF0aW9u
VHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRh
dGlvblR5cGU6OlJlbW90ZTsgfQorICAgIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGZpbmFs
OworICAgIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29s
KSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29s
KSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldFN0b3JhZ2VE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZp
bmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRIRENQU3RhdHVzKEhEQ1BTdGF0dXMpIGZpbmFsOwor
CisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworfTsKKworfQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0NETV9JTlNUQU5DRShXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlLCBXZWJDb3JlOjpD
RE1JbnN0YW5jZTo6SW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGUpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUzMmQ3MmU3Y2U0Yjg1
M2YyZDNiOTM0NTVlMTkyODFjNDE5ZmE0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
biB7CisgICAgU3RyaW5nIGtleVN5c3RlbTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAg
IGVuY29kZXIgPDwga2V5U3lzdGVtOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNv
ZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5n
PiBrZXlTeXN0ZW07CisgICAgICAgIGRlY29kZXIgPj4ga2V5U3lzdGVtOworICAgICAgICBpZiAo
IWtleVN5c3RlbSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
cmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCprZXlTeXN0ZW0pLAorICAgICAgICB9fTsK
KyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmZkZTY5MWMzZTg5NWI4ODU5ZTYyMDVh
NzFlMTE1ZmE5YjRmZTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRp
Zmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciA9IE9i
amVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZT47CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MDVjY2JlMjM5NmY5YjJmODZjOWM2YjI2ZjMzZTFiYTIzNWIwMTc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxS
ZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXImJiBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsKK30KKworUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVD
RE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIm
JiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlm
aWVyKFdURk1vdmUoaWQpKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBXVEZN
b3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewor
ICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVyKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKG1lc3NhZ2UuYnVm
ZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1faWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAo
IW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIFdURk1vdmUocmVzcG9uc2UpKSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFs
PEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5n
ZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVk
KSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soc2Vzc2lvbldhc0Nsb3NlZCwgV1RGTW92ZShj
aGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBXVEZNb3ZlKG1lc3NhZ2Up
LCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1faWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkg
eworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpMb2FkU2Vzc2lvbih0eXBlLCBzZXNzaW9uSWQsIG9yaWdpbiksIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRL
ZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3Nh
Z2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZSBsb2FkRmFp
bHVyZSkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBX
VEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8g
U3VjY2VlZGVkIDogRmFpbGVkLCBsb2FkRmFpbHVyZSk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmNsb3NlU2Vzc2lvbihjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjaygpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpDbG9zZVNlc3Npb24oc2Vzc2lvbklkKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldICgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjaygpOworICAgIH0sIG1faWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vz
c2lvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7Cisg
ICAgICAgIGNhbGxiYWNrKHsgfSwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBPcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNj
ZWVkZWQpIG11dGFibGUgeworICAgICAgICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVh
bE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2Uu
dmFsdWUoKS5idWZmZXIoKSkKKyAgICAgICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1
ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
Y2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVk
IDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Zh
Y3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpTdG9yZVJlY29yZE9mS2V5VXNhZ2Uoc2Vz
c2lvbklkKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQorewor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fY2xpZW50ICYmIG1lc3Nh
Z2UuYnVmZmVyKCkpCisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZSh0eXBlLCBtZXNzYWdl
LmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCkpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKHNlc3Np
b25JZCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNDk4NzlmNDgzN2ZjMzIyZjFkMTE1YjY4ODEwNDk5NWRkMDk2Y2RkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisKK25hbWVzcGFjZSBJUEMgewor
Y2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBmaW5hbCA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsICBwdWJsaWMgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllciYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oKSA9IGRlZmF1
bHQ7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3Rvcnk7CisgICAg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCB1cGRhdGVL
ZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJik7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJD
b3JlOjpDRE1NZXNzYWdlVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYpOwor
ICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsKKworCisgICAgdm9pZCBz
ZXRDbGllbnQoV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xp
ZW50KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CisgICAgdm9pZCBjbGVh
ckNsaWVudCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRyOyB9CisgICAgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5
VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1v
dGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQ+IG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzhjMjM5MmU3ZWY4NjIwNDYyMWQyODQxNDM4YjVlZGY0ZDM4MTUzNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
biBOb3RSZWZDb3VudGVkIHsKKyAgICBVcGRhdGVLZXlTdGF0dXNlcyhXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNlcykKKyAgICBTZW5kTWVzc2Fn
ZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpCisgICAgU2Vzc2lvbklkQ2hhbmdlZChTdHJpbmcg
c2Vzc2lvbklkKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg2YWNkMTI2NWFmMGM4NDYzODhlMjNmOWNjYTE2ZDkw
MjMzOGZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllckNh
Y2hlZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyQ2FjaGVkU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjRmMGRlMTBkODg2ZmY5Y2QxMzRm
ZmViNzE4OTI3YWNiZjg3ODAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllckNhY2hlZFN0YXRlLmgKQEAgLTAsMCAr
MSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJFbnVtcy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZU1lZGlhUGxheWVyQ2FjaGVk
U3RhdGUgeworICAgIE1lZGlhVGltZSBjdXJyZW50VGltZTsKKyAgICBNZWRpYVRpbWUgZHVyYXRp
b247CisgICAgTWVkaWFUaW1lIG1pblRpbWVTZWVrYWJsZTsKKyAgICBNZWRpYVRpbWUgbWF4VGlt
ZVNlZWthYmxlOworICAgIFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcyBidWZmZXJlZFJhbmdl
czsKKyAgICBib29sIHBhdXNlZCB7IHRydWUgfTsKKyAgICBib29sIGxvYWRpbmdQcm9ncmVzc2Vk
IHsgZmFsc2UgfTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgY3Vy
cmVudFRpbWU7CisgICAgICAgIGVuY29kZXIgPDwgZHVyYXRpb247CisgICAgICAgIGVuY29kZXIg
PDwgbWluVGltZVNlZWthYmxlOworICAgICAgICBlbmNvZGVyIDw8IG1heFRpbWVTZWVrYWJsZTsK
KyAgICAgICAgZW5jb2RlciA8PCBidWZmZXJlZFJhbmdlczsKKyAgICAgICAgZW5jb2RlciA8PCBw
YXVzZWQ7CisgICAgICAgIGVuY29kZXIgPDwgbG9hZGluZ1Byb2dyZXNzZWQ7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZU1l
ZGlhUGxheWVyQ2FjaGVkU3RhdGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBjdXJyZW50VGltZTsKKyAgICAgICAgZGVjb2RlciA+
PiBjdXJyZW50VGltZTsKKyAgICAgICAgaWYgKCFjdXJyZW50VGltZSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBkdXJhdGlv
bjsKKyAgICAgICAgZGVjb2RlciA+PiBkdXJhdGlvbjsKKyAgICAgICAgaWYgKCFkdXJhdGlvbikK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8TWVk
aWFUaW1lPiBtaW5UaW1lU2Vla2FibGU7CisgICAgICAgIGRlY29kZXIgPj4gbWluVGltZVNlZWth
YmxlOworICAgICAgICBpZiAoIW1pblRpbWVTZWVrYWJsZSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBtYXhUaW1lU2Vla2Fi
bGU7CisgICAgICAgIGRlY29kZXIgPj4gbWF4VGltZVNlZWthYmxlOworICAgICAgICBpZiAoIW1h
eFRpbWVTZWVrYWJsZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZFJhbmdlczsK
KyAgICAgICAgZGVjb2RlciA+PiBidWZmZXJlZFJhbmdlczsKKyAgICAgICAgaWYgKCFidWZmZXJl
ZFJhbmdlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gcGF1c2VkOworICAgICAgICBkZWNvZGVyID4+IHBhdXNlZDsKKyAgICAgICAg
aWYgKCFwYXVzZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IE9wdGlvbmFsPGJvb2w+IGxvYWRpbmdQcm9ncmVzc2VkOworICAgICAgICBkZWNvZGVyID4+IGxv
YWRpbmdQcm9ncmVzc2VkOworICAgICAgICBpZiAoIWxvYWRpbmdQcm9ncmVzc2VkKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworCisgICAgICAgIHJldHVybiB7eyBXVEZNb3Zl
KCpjdXJyZW50VGltZSksIFdURk1vdmUoKmR1cmF0aW9uKSwgV1RGTW92ZSgqbWluVGltZVNlZWth
YmxlKSwgV1RGTW92ZSgqbWF4VGltZVNlZWthYmxlKSwgV1RGTW92ZSgqYnVmZmVyZWRSYW5nZXMp
LCBXVEZNb3ZlKCpwYXVzZWQpLCBXVEZNb3ZlKCpsb2FkaW5nUHJvZ3Jlc3NlZCkgfX07CisgICAg
fQorCit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5k
ZXggYWUwMTYxYWFkOTQ3NGQ2YjBmMWY5MDBiMDU0NGY1OTgwZDM2OThmZi4uYjlmNGQyYTdlMzI3
ZWJlMzIwZDU3ZTc1OGJhYjAzZTU3YTZhZDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTGF5
ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBs
ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDA5ZDc5
ODcxZjViNmYzODdkNGY1ZmI2NTUxZWY5YTA0NjdjNDYzYjguLjQ4Y2E5ZGU5OWFiYzBiMDk1MjEx
OGVkZDZhMTlhMmViOTE4OGJjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE4OSwxNyArMTg5LDE1IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIExPRyhOZXR3
b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBz
aXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nl
c3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRh
dGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElL
RUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlk
ZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnRlcmNl
cHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVu
Y29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlciht
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRS
ZWNlaXZlRGF0YShkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlk
UmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUz
MGIwYWJmYTFjNjlmZWE5ZDUzOTY2ZmIuLjI2OTA4ZTgyM2Q3OTI0NGU1Nzg2ZGIwNGE1OTY5ZWYx
ZmM2NTgwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCkBA
IC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVp
bnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9v
bCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSYmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlz
aFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2
b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwog
ICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzRl
ODZjMTFlMjQ4NmM3YTE2MDM2ZDdiNDY4ZmI3OGQyNzU4ZmQ2MS4uYzUwZjU1YWU5MjYzYzExNjgx
NDFhYTQ1NzBhMmRkZWM2MTY2NDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZQogICAg
IGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsg
eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSB9LCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0
YSB7IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSkgfSwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDk4YjE1Yjg3ZmMxM2RhMmRiZjQ0M2JhOThhNGQ4NmQ3
YTlkMzU0MTkuLjNlMTk5YzlhZjk4YzVkNGJkODg5ZGE5NzI1MDM1MmQ0YjJkMWI2NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTkxNCw5ICsxOTE0LDkgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIFNoYXIKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9t
SW50ZWdlcihjYWxsYmFja0lkZW50aWZpZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsg
bV9mcmFtZS0+cGFnZSgpIH0pIHsKICAgICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2Fs
bGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLT5kYXRhKCkp
LCBkYXRhLT5zaXplKCkgfSkpOworICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgKmRhdGEgfSkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyBudWxscHRyLCAwIH0p
KTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rmlu
aXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7IH0pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTQ1ODM3NDliNmY5
NmI1YzFkZWQxZTA2YTQzMGFhYzg5MTU4N2JmZC4uOGZiYzc0MzFiZTc3YTBjOTYyNWFkMzE4NDdm
YWUzNmNhOTA4M2MyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTMyMCw2ICszMjAsOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlmCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNTAwLDcgKzM1MDMsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRh
dGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExl
bmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2VuZGlmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQpAQCAt
MzU4MSw3ICszNTg0LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0kKICAgICBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0
cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5n
ZXQoKSkpIH07CisgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmdldCgpKTsKICNlbmRpZgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0
YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KQEAgLTM2ODUsNiArMzY4
OCw5IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUpCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCktPnVw
ZGF0ZVByZWZlcmVuY2VzKHNldHRpbmdzKTsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4o
KS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOworI2VuZGlmCiAjZW5kaWYKIH0KIApAQCAt
NDkxOSw3ICs0OTI1LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERihGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8KIHsKICAgICBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBs
KGZyYW1lSUQsIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soeyBDRkRhdGFHZXRCeXRlUHRy
KHBkZlBhZ2VEYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgo
cGRmUGFnZURhdGEuZ2V0KCkpKSB9LCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZQYWdl
RGF0YS5nZXQoKSkgfSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdl
c1RvUERGSW1wbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmlu
dEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJs
ZURhdGFSZWY+JiBwZGZQYWdlRGF0YSkKQEAgLTY1NjMsMTIgKzY1NjksMTIgQEAgdm9pZCBXZWJQ
YWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVu
dGlmaWVyLCB1aW50NjQKICAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHRhc2tJ
ZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0Rp
ZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRl
bnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1
cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVp
bnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UmIGRhdGEpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1l
SGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRs
ZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBk
YXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0
YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCAqPihkYXRhLmRhdGEoKSkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tE
aWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtNjc5MCw3ICs2Nzk2LDcgQEAg
dm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
T3B0aW9uYWw8dWludDY0X3Q+JiYgZmkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50
NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBm
aWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURh
dGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0g
YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBh
dHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM3Y2YzOGM1YmJhMjAxY2VkNzg4Y2QwM2Q1
YTIwNGQ0YWNhNGYyYTcuLjczYzU5MmNjODRmNzQ4YzJmNDg5OTU4NjdiZTZlMmU5YWVlYWMxMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NSw2
ICsxNTUsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNv
ZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTk0LDcgKzExOTUsNyBAQCBw
dWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGlu
c2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRf
dD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXpl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKQEAgLTE2NzQsNyArMTY3NSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0
X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lk
IHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgaGFuZGxlcklkZW50aWZp
ZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFu
ZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENv
bXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzZXRJc1N1c3Bl
bmRlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0
N2M5YzA4YWRlZTQ1ODVkOTEzMzQ2YjFhYmRlZTg2N2M1ZjFjYjU3Li5iZjI0YTI5YzNlMGFiMDQy
NDMzN2UwM2ZiYjIzOWM0ODExOTM1YjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC0xNzQsNiArMTc0LDEwIEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNz
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVt
b3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlmCisKICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lPTl9J
RCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50NjQoKSA6IDApCiAjZGVmaW5lIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbc2Vzc2lvbklEPSUiIFBS
SXU2NCAiXSBXZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCwg
IyNfX1ZBX0FSR1NfXykKIApAQCAtMjQwLDYgKzI0NCwxMCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9j
ZXNzKCkKICAgICBhZGRTdXBwbGVtZW50PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBhZGRTdXBwbGVtZW50PFJl
bW90ZUNETUZhY3Rvcnk+KCk7CisjZW5kaWYKKwogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391463</attachid>
            <date>2020-02-22 10:35:10 -0800</date>
            <delta_ts>2020-02-22 11:25:35 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208090-20200222103509.patch</filename>
            <type>text/plain</type>
            <size>272444</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE2ZGIxODY4MmIxZTRh
YzUyYzAyNWVmYmYwZWYxNTc0OGEzZWQ4NC4uZTNhYmRjNzRjYzU3OWY4ZDVmYTNjZDZiZjBiYTc0
YjAxMmI2NWNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5OjpyZXNldEZhY3Rvcmll
cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVxdWlyZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Up
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZFJvYnVzdG5lc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NETTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5z
ZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRlZFJvYnVzdG5lc3MgY29uc3QpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0xNCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIFFUS2l0IGZv
ciByZW5kZXJpbmcgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gY29udHJvbHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTYx
MDJiY2M4OGNhYjdiMDY4YjRmNGUyYjU5OTJmMDc3ZGQ0YmUzMC4uODk0MDM3MTdiNDA5MTcyZWQ1
MGU0MWYyZjNiMTJiYWRkOTkwNDcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMjcgQEAKKzIwMjAt
MDItMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBd
IEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90ZUNETUluc3Rh
bmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAgb2YgdGhlaXIg
YXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBleGlzdGluZyBD
RE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5IGJ5IGV4cGxpY2l0bHkgY2xlYXJp
bmcgb3V0IGFsbCB0aGUgZXhpc3RpbmcgCisgICAgICAgIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlz
IGVuYWJsZWQsIGFuZCByZXNldHRpbmcgdGhvc2UgZmFjdG9yaWVzIHRvIGRlZmF1bHQgd2hlbiB0
aGUgR1BVIHByb2Nlc3MgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGlzIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgdXNpbmcgdGhlIHNhbWUgZW5j
b2RlL2RlY29kZSBwYXRoIGFzIGlzIHVzZWQgaW4KKyAgICAgICAgV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzOiB0aGUgU2hhcmVkQnVmZmVyIGlzIGNvcGllZCBpbnRvIHNoYXJlZCBtZW1vcnksIGFuZCBv
bmx5IGEgaGFuZGxlIGlzIHBhc3NlZCBhY3Jvc3MKKyAgICAgICAgdGhlIFhQQyBib3VuZGFyeS4g
VGhpcyByZXF1aXJlcyBleGlzdGluZyB1c2VycyB0byBoYW5kbGUgcmVjZWl2aW5nIGEgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhSGFuZGxlIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBvZiB0aGUg
WFBDIGJvdW5kYXJ5LCBidXQgdGhpcyBpcyB0cml2aWFsLCBhbmQgbWFueSBjYWxsIHNpdGVzIHJl
cXVpcmUgYSBTaGFyZWRCdWZmZXIgb24gdGhlCisgICAgICAgIHJlbW90ZSBzaWRlIGluIHRoZSBm
aXJzdCBwbGFjZS4gVGhpcyBjb2RlIGNvdWxkIGJlIGltcHJvdmVkIGJ5IGFsbG93aW5nIHRoZSBT
aGFyZWRNZW1vcnkgb2JqZWN0IGJlIGFkb3B0ZWQKKyAgICAgICAgYnkgdGhlIFNoYXJlZEJ1ZmZl
ciBvYmplY3QgYXQgY3JlYXRpb24gdGltZSwgbGVhZGluZyB0byB6ZXJvLWNvcHkgZGVjb2Rpbmcs
IGJ1dCBpcyBub3QgZG9uZSBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RN
SW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3Rh
bmNlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlk
UmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmFkZEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOiAKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNvbmZpZ3VyYXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjppbnN0YW5j
ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c3RvcmVS
ZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
UHJveHk6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETVByb3h5OjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVl
UGVyT3JpZ2luQW5kQ2xlYXJhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6
OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRB
bmRJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXpl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNz
aW9uSWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmlu
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSk6Cisg
ICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlcik6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAo
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtUmVnaXN0ZXJBdHRhY2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFu
Y2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0
ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OlJlbW90ZUNETSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rp
b25zIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06
OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRp
c3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmln
aW5BbmRDbGVhcmFibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0
ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQgY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJZGVudGlm
aWVyc0FsbG93ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0UGVy
c2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2U6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZTo6c2V0SERDUFN0YXR1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2UuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJl
Y29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUJsb2JDaHVuayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorCiAyMDIwLTAyLTIxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFwcC1ib3VuZCBkb21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5l
dHdvcmsgU2Vzc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFkNGY3MWQ3YzRiNDk2OTEwMzIx
NjMzY2FhZmMzOGQ2MGY2MmNmMWQuLjA3MjBhZGU4ODA1ZGEwMDAyNmY5MTNmOTlmMWNiYjAzNTdk
NjQ5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTE4MSw2ICsxMTgxLDIwIEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAogCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorICAg
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisgICAgcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TU1lc3NhZ2VUeXBlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgK
KyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisgICAgcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVJlc3RyaWN0aW9ucy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lv
blR5cGUuaAorCiAgICAgcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5oCiAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCA0YmJiMmJjZTYx
ODc0YjdlZTE0OGE0MTY4NTUwYTZiMTU2NDM5MmEwLi5jNGUxNDI2YTBjM2ZmYjVhYTgxMGQ0YzVk
MGE2OGJkMDdlOWZlZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgT3B0aW9uYWw8TWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0aW9uPiBDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWEK
ICAgICAgICAgICAgIGlmIChpbml0RGF0YVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAobV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3Vw
cG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkKKyAgICAgICAgICAgIGlmIChtX3ByaXZh
dGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERh
dGFUeXBlKSkKICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBlbmQoaW5pdERhdGFU
eXBlKTsKICAgICAgICAgfQogCkBAIC00NjAsNyArNDYwLDcgQEAgT3B0aW9uYWw8VmVjdG9yPE1l
ZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRp
ZXNGb3IKICAgICAgICAgLy8gMy4xMS4gSWYgY29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBh
IGF1ZGlvL3ZpZGVvIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KICAgICAg
ICAgLy8gMy4xMi4gSWYgcm9idXN0bmVzcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29u
dGFpbnMgYW4gdW5yZWNvZ25pemVkIHZhbHVlIG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQog
ICAgICAgICAvLyAgICAgICBpbXBsZW1lbnRhdGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRl
cmF0aW9uLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAgICAgICAgaWYg
KCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRlLT5zdXBwb3J0c1JvYnVzdG5lc3Mo
cm9idXN0bmVzcykpCisgICAgICAgIGlmICghcm9idXN0bmVzcy5pc0VtcHR5KCkgJiYgIW1fcHJp
dmF0ZS0+c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkuY29udGFpbnMocm9idXN0bmVzcykpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNlciBhZ2VudCBh
bmQgaW1wbGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9mIGVuY3J5cHRl
ZCBtZWRpYSBkYXRhIGZvciB0aGUKQEAgLTYxMiw3ICs2MTIsNyBAQCBib29sIENETTo6c3VwcG9y
dHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0
ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBlKGluaXREYXRhVHlwZSk7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5j
b250YWlucyhpbml0RGF0YVR5cGUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNh
bml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGRhMTliYmZmMmM3Y2U4
MmJlZmE4MDM1YWQ3NTQyZTNlOWYyMmE2OWQuLjI5ZmFiNDk5MDY4MjU4MzJhNWFkZGQ5OWE4MGU4
ZjM0ZDhkMzA4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAvLyA2LjUuIExldCBzZXNzaW9uIGNsb3NlZCBi
ZSBmYWxzZS4KICAgICAgICAgLy8gNi42LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVw
cmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8v
IDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9u
VHlwZSwgKnNhbml0aXplZFJlc3BvbnNlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2Vk
LCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Np
b24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIHNhbml0aXplZFJl
c3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXNDbG9zZWQs
IE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRL
ZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPENETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1
Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MGIwMTFlMzU1YmRjYjdhMzQ3Y2Uw
Mjk3ZGIxYzQyZDg4Zjk0NjNiLi5iMDQzZjU3ODg1YzZjNmJhMzFhODhlNmE0Yjc1Y2Q4YzcyNWNh
ZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC00MDY1LDYgKzQwNjUsMTkgQEAKIAkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQy
IC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDNBNDk1NjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCAqLzsgfTsK
IAkJQ0QzQTQ5NjIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5RDAxQjAwMjc0
RTQyIC8qIFNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFCMDAyNzRFNDIg
LyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3Qu
aCAqLzsgfTsKKwkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJBMDFEIC8qIENETUVuY3J5cHRpb25TY2hl
bWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjc1
NjlCMjE1QzIzQTQwMEVGQ0I1MCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRjkyNDAxQUFEOTAw
NEJBMDFEIC8qIENETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEOTRBNUQyMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0b3J5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkEy
NDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUgLyogQ0RNSW5z
dGFuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlDRDNDRTBGQjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlEMzc1QTIxNTE2M0U0
MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZEMjQwMUFBRDkw
MDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRDFGNzFDQjY5MDBGNTI1QzUgLyog
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZFMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1NZWRp
YUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEOTRBNUQzMUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNhcGFiaWxpdHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGRjI0
MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ2MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1N
ZXNzYWdlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFGNzFDQjZBMDBG
NTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNEM0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1Q0YxRjcx
Q0I2MTAwRjUyNUM1IC8qIENETVByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDIyNDAxQUFEQTAwNEJBMDFEIC8qIENETVJlcXVp
cmVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVxdWlyZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMzI0MDFBQURBMDA0
QkEwMUQgLyogQ0RNUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEMDFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNUmVzdHJpY3Rp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QzQ0UxMDQyNDAxQUFEQTAwNEJBMDFEIC8qIENETVNlc3Npb25UeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVENTFGNzFDQjZEMDBGNTI1
QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJV
dGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QzRTIxREIyMTgzM0Y1MTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjUx
QzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQXJl
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
M0UyNTI0MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNFMjUyMjE4MDQ2
QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oICovOyB9OwpAQCAtNDE5
Niw3ICs0MjA5LDcgQEAKIAkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDBG
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggKi87IH07CiAJCUNERjRCNzEyMUUwMDg3
QUUwMEUyMzVBMiAvKiBMZWdhY3lDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEgLyogTGVnYWN5
Q0RNU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTMxRTAwQjdFNTAwRTIzNUEy
IC8qIENETS5jcHAgKi87IH07Ci0JCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE0MUUw
MEI3RTUwMEUyMzVBMiAvKiBDRE0uaCAqLzsgfTsKKwkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEy
IC8qIENETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjRCNzE4MUUwMUNCOTEwMEUyMzVBMiAvKiBN
ZWRpYUtleXNSZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERjRCNzE3MUUwMUNCOTEwMEUyMzVBMiAvKiBNZWRpYUtleXNSZXN0cmlj
dGlvbnMuaCAqLzsgfTsKIAkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vz
c2lvblR5cGUuaWRsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RGNEI3MTkxRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5cGUuaWRsICov
OyB9OwogCQlDREY0QjcxRTFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0Qjcx
QzFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBlLmggKi87IH07CkBAIC0y
OTAxNSw2ICsyOTAyOCw3IEBACiAJCQkJQTFGNkQwMDYxRkUwOTZGNjAwMTgwNzhDIC8qIEFwcGxl
UGF5UGF5bWVudE1ldGhvZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkM1OUYxMjAzNUZD
QkYwMDEyMjM2QiAvKiBBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDNjUyMkY1MUUwMEE1MTcwMDY3N0YyMiAvKiBBcHBsZVBheVBheW1lbnRQYXNzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFD
YXBhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzY1NzlFMDFFMDA3OUY5MDBFM0EyN0Eg
LyogQXBwbGVQYXlQYXltZW50UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFERjVBN0Yx
RjdFQkQwQjAwNThBNDc3IC8qIEFwcGxlUGF5UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFERjVBQUQxRjgwNzVGMDAwNThBNDc3IC8qIEFwcGxlUGF5UmVxdWVzdEJhc2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzAyNzIsNiArMzAyODYsNyBAQAogCQkJCTFBNzFENTdDMEYzMzgxOTAwMEY5
Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNTBFRjg2
RDQ3MDA5RDBDQUYgLyogSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDRTlBMTJCMUVBMkYxREIwMDY1MUFEMSAvKiBJRExBdHRyaWJ1dGVzLmpzb24gaW4g
SGVhZGVycyAqLywKKwkJCQlDRDNDRTBGRDI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI4NjRGMDYyMzRDMDg5MzAwNkQx
MEVCIC8qIElkbGVDYWxsYmFja0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNzQy
NjBCMjM0QkVBNkUwMERCNTJFOSAvKiBJZGxlRGVhZGxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTlCNzQyNjA1MjM0QkU5NTYwMERCNTJFOSAvKiBJZGxlUmVxdWVzdENhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwMzQxLDExICszMDM1NiwxMyBAQAogCQkJCUJDRTc4OTE2MTEyMEQ2MDgw
MDYwRUNFNSAvKiBJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZCMjQwMDUy
M0RGRjEyODAwNzk2NDU4IC8qIElubGluZUxpbmVCb3hCdWlsZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RkUxOTgxNzIxNzgzOTdDMDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFrZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUNEM0NFMEY5MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1GYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5lTGlu
ZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMzYwRTUwMjM5OTk0MjEwMDE1MTJBNyAv
KiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE0QzNBNzcw
QjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0eWxlU2hlZXRPd25lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZBMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1J
bnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYxQ0MxREUyMjVGOEI0OTAwNzIwQUQyIC8q
IElubGluZVRleHRJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUI3Njc1NzFEQTE5QkRGMDAz
RTIzQjUgLyogSW5wdXRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTUyRUZERjQyMTEyODc1
QTAwQUQyODJBIC8qIElucHV0TW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDU3MSw2ICszMDU4
OCw3IEBACiAJCQkJNzE3MjlGN0UyMEYzQkI0NzAwODAxQ0U2IC8qIEpTRG9jdW1lbnRUaW1lbGlu
ZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMUY2MDlEMUNDNjAwMDBCRTMyNSAv
KiBKU0RvY3VtZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M1N0JGRTcxRURFMkY2MTAw
NTM0QTQ4IC8qIEpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlD
RDNDRTEwNDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQzIyNjBEMERCNjlGMTkwMDg5QjY2OSAvKiBKU0RPTUFwcGxpY2F0aW9uQ2FjaGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDODEzOUE2MUVENjI4NkEwMENFMjZFOCAvKiBKU0RPTUF0
dHJpYnV0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8q
IEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDc2MSw2ICszMDc3OSw3IEBACiAJ
CQkJMUFFMkFFNUMwQTFEMjZGMjAwQjQyQjI1IC8qIEpTSFRNTE1lbnVFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODBFN0ExODBBMTlDM0Q2MDA3RkI4QzUgLyogSlNIVE1MTWV0YUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QkJFMjY3MTFBRkIzRjIwMDA1RUEwMyAvKiBKU0hU
TUxNZXRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZDMjQwMUFBRDkwMDRC
QTAxRCAvKiBDRE1LZXlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQjJBMEExQ0U2
M0IwMEI0MkIyNSAvKiBKU0hUTUxNb2RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMw
NUM3QTBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE4NUIxRUIwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRNTE9MaXN0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMDk3Miw2ICszMDk5MSw3IEBACiAJCQkJMDc5NjlEQjAxN0Qx
NDE1MTAwN0ZGODQyIC8qIEpTUlRDRFRNRlNlbmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5
NjlEQjIxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc5NjlEQjYxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDSWNlQ2FuZGlk
YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RN
UmVxdWlyZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkRDQjRDMUU3OTEwQTYwMDFCNUY4
NyAvKiBKU1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RENC
NEUxRTc5MTBBNjAwMUI1Rjg3IC8qIEpTUlRDSWNlR2F0aGVyaW5nU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3Mzc5NEVDMTlFRTM0MUUwMEU1QTA0NSAvKiBKU1JUQ0ljZVNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMTUzNSw2ICszMTU1NSw3IEBACiAJCQkJNTEwNThBRTAxRDY3QzIy
OTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMjFE
NjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQ0NENEEyMERFMDM0RjAwNjVBMjFBIC8qIE1vY2tNZWRpYURldmljZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0QzQ0UwRkYyNDAxQUFEQTAwNEJBMDFEIC8qIENETU1lc3NhZ2VUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE1MTgyMDU0MDYw
MEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MUJCODVBOTIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMjAzNSw2ICszMjA1Niw3IEBACiAJCQkJNDM2NzA4RTUxMkQ5Q0E0QjAwMDQ0MjM0
IC8qIFJlbmRlclNWR1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMEJCNThCMTQ4NEUzQjMw
MEIyRTg3QSAvKiBSZW5kZXJTVkdTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg1NEIwMTkx
MjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR1RleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
M0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDg1NEIwMUIxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR1RleHRQYXRoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MzY3MDhFOTEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg1NEIwMUQxMjU1RTRFNjAwQjlD
REQwIC8qIFJlbmRlclNWR1RTcGFuLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMDQzLDYgKzMyMDY1
LDcgQEAKIAkJCQk2RUQ4NzhDNTE0NzQ5M0Y0MDA0QzM1OTcgLyogUmVuZGVyVGFibGVDYXB0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOERGNEFFOTA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVy
VGFibGVDZWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOERGNEFGMTA5ODBDNDJDMDA1Mjk4MUIg
LyogUmVuZGVyVGFibGVDb2wuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAzMjQwMUFBREEw
MDRCQTAxRCAvKiBDRE1SZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4REY0QUVF
MDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZVJvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThERjRBRUYwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlU2VjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFQTQ4OEMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzIyMDAsNiArMzIyMjMsNyBAQAogCQkJCTQ0Qzk5MTg2MEYzRDFFQkUw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4Qjg1
M0UwRTdDN0YxMTAwQUI2OTg0IC8qIFNjcm9sbGJhclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkU3MTQwNjE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDRDNDRTBGODI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRW5jcnlwdGlv
blNjaGVtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDNTc5NUQxREE1QzMwMTAwNkZBQzg2IC8q
IFNjcm9sbEJlaGF2aW9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4NEYwNTE0M0JBN0JEMDA1
MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MDVBRUQx
NUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywK
QEAgLTMyNDk3LDYgKzMyNTIxLDcgQEAKIAkJCQlCMjIyNzk5MzBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk1MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjc5OTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGlvbkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5QzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
Q2lyY2xlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OUYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0NsaXBQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QTUw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTMyNzU5LDYgKzMyNzg0LDcgQEAKIAkJCQk1MURGNkQ3RTBCOTJB
MTZEMDBDMkRDODUgLyogVGhyZWFkQ2hlY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM4M0RF
MTg2MTVCMjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxRkY1N0EzMEYwMTI1NUIwMDg5MUVCQiAvKiBUaHJlYWRHbG9iYWxEYXRhLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDRDNDRTBGQjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VT
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQ3RUZFQTFCREU4RjhDMDBFOTNFMTAgLyog
VGhyZWFkU2FmZURhdGFCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE4NUJDRjI5MEYzMjc5
Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBQTNBNjlB
MTk0QTY0RTcwMDFDQkQyNCAvKiBUaWxlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA5ZTdhOTY0ODQ0NDk5MGU3
MWI0M2Q2Zjc0NDc3MTNkMzJmZDBiMjAzLi5mMGJlZGVjOTRjZmE4NzBmNzg5MmYyMTkwOTY5Mzcz
MTI3MjUwYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTI1NjEsMTUgKzI1NjEsMjMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKQoreworICAgIGJv
b2wgc2hvdWxkQ29udGludWUgPSBoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpIHx8
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmVuY3J5cHRlZE1lZGlh
QVBJRW5hYmxlZCgpICYmICFkb2N1bWVudCgpLnF1aXJrcygpLmhhc0Jyb2tlbkVuY3J5cHRlZE1l
ZGlhQVBJU3VwcG9ydFF1aXJrKCkpOworICAgIHBsYXllcigpLT5zZXRTaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkKHNob3VsZENvbnRpbnVlKTsKK30KKyNlbmRpZgorCiBSZWZQdHI8QXJyYXlC
dWZmZXI+IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29u
c3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKIHsKICAgICByZXR1cm4gbV93ZWJLaXRNZWRpYUtleXMg
PyBtX3dlYktpdE1lZGlhS2V5cy0+Y2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpIDogbnVsbHB0cjsK
IH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFy
cmF5KiBpbml0RGF0YSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoVWludDhBcnJheSogaW5pdERhdGEpCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaGFzRXZl
bnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXkiKQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CkBAIC0yNTgwLDE0ICsyNTg4LDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCiAgICAgICAgICkgewogICAgICAgICBt
X2Vycm9yID0gTWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9FTkNSWVBU
RUQpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBl
dmVudCA9IFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
a2l0bmVlZGtleUV2ZW50LCBpbml0RGF0YSk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsK
ICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKLQot
ICAgIHJldHVybiB0cnVlOwogfQogCiBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKQEAgLTUxMjksNiArNTEzNSwxMCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5naW5lV2FzVXBkYXRlZCgpCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBzY2hlZHVsZVVwZGF0ZU1lZGlhU3Rh
dGUoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRL
ZXkoKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5n
aW5lVXBkYXRlZCgpCkBAIC01ODkxLDYgKzU5MDEsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25z
KQogeworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdG5lZWRr
ZXlFdmVudCkKKyAgICAgICAgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNl
bmRpZgorCiAgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0
YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjphZGRF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpOwogCkBA
IC01OTEyLDYgKzU5MjcsMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGkKIAogYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGNvbnN0IExpc3RlbmVyT3B0aW9ucyYgb3B0
aW9ucykKIHsKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRu
ZWVka2V5RXZlbnQpCisgICAgICAgIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7
CisjZW5kaWYKKwogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXli
YWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6
cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBlNzE1NjNjZmY2MWE1MTQ1NTY3
MjRkZmQzY2E3MGIwMTA5ZmZmNTYwLi5jYTM3NDliZGRiNmUwYjZmMWM0ZjE4NjMwMTliZDY0OTY3
OTUxZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNjgyLDcg
KzY4Miw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29u
c3QgU3RyaW5nJiBrZXlJZCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBtZWRpYVBsYXllcktleU5l
ZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChV
aW50OEFycmF5KikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKQEAgLTY5Niw2ICs2OTYsMTAgQEAg
cHJpdmF0ZToKICAgICAvLyBDRE1DbGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jl
c3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSBmaW5hbDsKICNlbmRpZgorCisjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9p
ZCB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlmCiAgICAgCiAjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIG1lZGlhUGxheWVyQ3Vy
cmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoYm9vbCkgZmluYWw7CkBAIC0xMTY4
LDYgKzExNzIsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhUHJvdmlkZXIgbV9tZWRpYVByb3ZpZGVy
OwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgYm9vbCBtX2hhc05l
ZWRrZXlMaXN0ZW5lciB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFdlYktpdE1lZGlhS2V5cz4gbV93
ZWJLaXRNZWRpYUtleXM7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCmluZGV4IDc0
YjNhYTdkN2JkYjAwYTI2NzU2YTAyMzY1NjZmMzY4ODEyYmNlM2IuLjFhN2E1NjI3ZGJjYTY0MWI0
OWNlN2U1NmU2NzE2ZTMxOGE5ODhiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKQEAgLTI3
LDEzICsyNywyNyBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBDRE1F
bmNyeXB0aW9uU2NoZW1lIHsKK2VudW0gY2xhc3MgQ0RNRW5jcnlwdGlvblNjaGVtZSA6IHVpbnQ4
X3QgewogICAgIGNlbmMsCiAgICAgY2JjcywKIH07CiAKIH0KIAorbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVt
ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNE
TUVuY3J5cHRpb25TY2hlbWUsCisgICAgICAgIFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWU6
OmNlbmMsCisgICAgICAgIFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWU6OmNiY3MKKyAgICA+
OworfTsKKworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKaW5kZXggNGJiNTk5ZmE4MDczZDNiODU1ZDg0
NjE3ODYxOWRiYzAyNjEwNThmMi4uNjYxZDViNGViNzUyZWE1NWFhMmQ4ZTRmOWVlZDYzODZlZGRh
YzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRmFjdG9yeS5jcHAKQEAgLTU3LDYgKzU3LDExIEBAIHZvaWQgQ0RNRmFjdG9yeTo6dW5y
ZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYgZmFjdG9yeSkKICAgICByZWdpc3RlcmVkRmFjdG9y
aWVzKCkucmVtb3ZlQWxsKCZmYWN0b3J5KTsKIH0KIAordm9pZCBDRE1GYWN0b3J5OjpyZXNldEZh
Y3RvcmllcygpCit7CisgICAgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhyZWdpc3RlcmVkRmFj
dG9yaWVzKCkpOworfQorCiAjaWYgIVVTRShHU1RSRUFNRVIpICYmICFVU0UoQVZGT1VOREFUSU9O
KQogdm9pZCBDRE1GYWN0b3J5OjpwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKFZlY3RvcjxDRE1G
YWN0b3J5Kj4mKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDQ0ZWFhYjA3ZTc1N2FmZTU4YjUzNjFmNWFmMTJiMjQ3
NzZhMDM1MmUuLmUxYWU2MDQyMTZhOTc1OTJmMzNjYjgzNjJmYzJjMjFhMmIwODhiNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3Rvcnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5
LmgKQEAgLTQyLDcgKzQyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PENETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHN0YXRpYyBW
ZWN0b3I8Q0RNRmFjdG9yeSo+JiByZWdpc3RlcmVkRmFjdG9yaWVzKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZXNldEZhY3RvcmllcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShDRE1GYWN0b3J5Jik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5yZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9y
eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNSW5zdGFuY2UuaAppbmRleCA4ZjlmM2ViODc0NWMzNTIwMjgzMTRjNjA2ZDI4OWQ0ZTNmNzFh
MDQ4Li43ZmUwOWYwYWYzZmQ3MzAzNjIzNWMyMjc3YmFjZGViYTA2NDliMTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgK
QEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBNb2NrLAogICAgICAgICBDbGVhcktl
eSwKICAgICAgICAgRmFpclBsYXlTdHJlYW1pbmcsCisgICAgICAgIFJlbW90ZSwKICAgICB9Owog
ICAgIHZpcnR1YWwgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0
ID0gMDsKIApAQCAtNjgsNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5j
ZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CiAKLSAgICBlbnVtIGNsYXNzIEhEQ1BTdGF0
dXMgeworICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyA6IHVpbnQ4X3QgewogICAgICAgICBVbmtu
b3duLAogICAgICAgICBWYWxpZCwKICAgICAgICAgT3V0cHV0UmVzdHJpY3RlZCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2VTZXNzaW9uLmgKaW5kZXggODcyNWEzMWQ4YmIzZTIyYmUyMWRmMDdlMzIwYjM2ZTc1MDM4NmUx
YS4uZDQ2NGI3NGQxYzcyMDJhOWEzMzlkZmY2NWQwNmUwODIwODk2OWRiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2VTZXNzaW9uLmgKQEAgLTcyLDkgKzcyLDkgQEAgcHVibGljOgogICAgIHVzaW5nIEtleVN0YXR1
c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yOwogICAg
IHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNo
YW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFs
PE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKLSAgICBlbnVtIGNsYXNzIFNlc3Npb25Mb2FkRmFpbHVy
ZSB7CisgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgOiB1aW50OF90IHsKICAgICAg
ICAgTm9uZSwKICAgICAgICAgTm9TZXNzaW9uRGF0YSwKICAgICAgICAgTWlzbWF0Y2hlZFNlc3Np
b25UeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNS2V5U3RhdHVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1LZXlTdGF0dXMuaAppbmRleCBhZDk2OTYyMzYwNGNkMTQ3MDU1YTI3YjczMzZmNjc3YzBi
M2FmMmM0Li5jYzVlNzE4NmY3NGVmOGU4MTRjYjNhZjc1NWUxNjFhNjVjMjA4ODI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0
dXMuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0g
Y2xhc3MgQ0RNS2V5U3RhdHVzIHsKK2VudW0gY2xhc3MgQ0RNS2V5U3RhdHVzIDogdWludDhfdCB7
CiAgICAgVXNhYmxlLAogICAgIEV4cGlyZWQsCiAgICAgUmVsZWFzZWQsCkBAIC00NCw0ICs0Niwy
MCBAQCBlbnVtIGNsYXNzIENETUtleVN0YXR1cyB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6Q0RNS2V5U3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBX
ZWJDb3JlOjpDRE1LZXlTdGF0dXMsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpVc2FibGUs
CisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpFeHBpcmVkLAorICAgIFdlYkNvcmU6OkNETUtl
eVN0YXR1czo6UmVsZWFzZWQsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpPdXRwdXRSZXN0
cmljdGVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6T3V0cHV0RG93bnNjYWxlZCwKKyAg
ICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlN0YXR1c1BlbmRpbmcsCisgICAgV2ViQ29yZTo6Q0RN
S2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yCisgICAgPjsKK307CisKK30KICNlbmRpZiAvLyBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCmlu
ZGV4IDYxMmQ2NDVmYWE1MjQ4ZjcxZjFjMTU2N2Y0NTA3ZTg5ZjNiMzFjZTUuLjg1MjU4N2NlZGEw
NTEyMTQ0Nzk1MjJmYWMzOGU0YzBmYjk4NzQ5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uLmgKQEAgLTQ4LDYgKzQ4LDY3IEBAIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uIHsKICAgICBDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgeyBDRE1S
ZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3Rh
dGUgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBWZWN0b3I8Q0RNU2Vzc2lvblR5
cGU+IHNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIg
PDwgbGFiZWw7CisgICAgICAgIGVuY29kZXIgPDwgaW5pdERhdGFUeXBlczsKKyAgICAgICAgZW5j
b2RlciA8PCBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgZW5jb2RlciA8PCB2aWRlb0NhcGFi
aWxpdGllczsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAg
ICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlOworICAgICAgICBlbmNvZGVyIDw8IHNlc3Np
b25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0
aWMgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGxhYmVsOworICAgICAgICBk
ZWNvZGVyID4+IGxhYmVsOworICAgICAgICBpZiAoIWxhYmVsKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gaW5pdERh
dGFUeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0YVR5cGVzOworICAgICAgICBpZiAo
IWluaXREYXRhVHlwZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBhdWRpb0NhcGFiaWxpdGll
czsKKyAgICAgICAgZGVjb2RlciA+PiBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgaWYgKCFh
dWRpb0NhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IHZpZGVvQ2FwYWJpbGl0
aWVzOworICAgICAgICBkZWNvZGVyID4+IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAgICBpZiAo
IXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4gZGlzdGluY3RpdmVJZGVudGlmaWVyOwor
ICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFk
aXN0aW5jdGl2ZUlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAKKyAgICAgICAgT3B0aW9uYWw8Q0RNUmVxdWlyZW1lbnQ+IHBlcnNpc3RlbnRTdGF0
ZTsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3RhdGU7CisgICAgICAgIGlmICghcGVy
c2lzdGVudFN0YXRlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+PiBzZXNzaW9uVHlwZXM7CisgICAgICAg
IGRlY29kZXIgPj4gc2Vzc2lvblR5cGVzOworICAgICAgICBpZiAoIXNlc3Npb25UeXBlcykKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAg
ICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCisgICAgICAgICAgICBXVEZNb3ZlKCppbml0RGF0YVR5
cGVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmF1ZGlvQ2FwYWJpbGl0aWVzKSwKKyAgICAgICAg
ICAgIFdURk1vdmUoKnZpZGVvQ2FwYWJpbGl0aWVzKSwKKyAgICAgICAgICAgICpkaXN0aW5jdGl2
ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAqcGVyc2lzdGVudFN0YXRlLAorICAgICAgICAgICAg
V1RGTW92ZSgqc2Vzc2lvblR5cGVzKSwKKyAgICAgICAgfX07CisgICAgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAppbmRleCA5MDFiNTRmZjA1MDhl
ZGE5YmJiODhjNWMxZGI4NjUzOGRjZTE0MjgyLi5mODRhMGQxMmFiNGNkNTIwZTNmMGUwNGQ2NGVi
ZWZjNjMxNjI1ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaApAQCAtMzksNiArMzksMzkgQEAg
c3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwogICAg
IFN0cmluZyByb2J1c3RuZXNzOwogICAgIE9wdGlvbmFsPENETUVuY3J5cHRpb25TY2hlbWU+IGVu
Y3J5cHRpb25TY2hlbWU7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8
IGNvbnRlbnRUeXBlOworICAgICAgICBlbmNvZGVyIDw8IHJvYnVzdG5lc3M7CisgICAgICAgIGVu
Y29kZXIgPDwgZW5jcnlwdGlvblNjaGVtZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNTWVkaWFDYXBhYmlsaXR5PiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gY29udGVu
dFR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVudFR5cGU7CisgICAgICAgIGlmICghY29u
dGVudFR5cGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gcm9idXN0bmVzczsKKyAgICAgICAgZGVjb2RlciA+PiByb2J1c3RuZXNz
OworICAgICAgICBpZiAoIXJvYnVzdG5lc3MpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPENETUVuY3J5cHRpb25TY2hlbWU+PiBl
bmNyeXB0aW9uU2NoZW1lOworICAgICAgICBkZWNvZGVyID4+IGVuY3J5cHRpb25TY2hlbWU7Cisg
ICAgICAgIGlmICghZW5jcnlwdGlvblNjaGVtZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpjb250ZW50
VHlwZSksCisgICAgICAgICAgICBXVEZNb3ZlKCpyb2J1c3RuZXNzKSwKKyAgICAgICAgICAgIFdU
Rk1vdmUoKmVuY3J5cHRpb25TY2hlbWUpLAorICAgICAgICB9fTsKKyAgICB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaAppbmRleCBlNWY3OTZhOWUwZTA3NTFhYTAy
NzgyYjliNjY2Y2EyMzFlZjdlNjA5Li45NWJmMjhjMmFhOTRhM2RhNTA0NWI1ZWMwMGYzNThjZDI2
ZDk1Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1NZXNzYWdlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKQEAgLTMwLDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETU1lc3NhZ2VUeXBlIHsKK2VudW0gY2xhc3MgQ0RN
TWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBMaWNlbnNlUmVxdWVzdCwKICAgICBMaWNlbnNl
UmVuZXdhbCwKICAgICBMaWNlbnNlUmVsZWFzZSwKQEAgLTQxLDQgKzQzLDE4IEBAIGVudW0gY2xh
c3MgQ0RNTWVzc2FnZVR5cGUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETU1lc3Nh
Z2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29y
ZTo6Q0RNTWVzc2FnZVR5cGUsCisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNl
bnNlUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZW5l
d2FsLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlbGVhc2UsCisg
ICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpJbmRpdmlkdWFsaXphdGlvblJlcXVlc3QK
KyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
aAppbmRleCAyNWY3ODE2YTJmZTFkYTZmOTBjMmZlZjc3NzU1MTQwNmFhMGY0YTAzLi43NDlmY2Rm
MmZjMzdhNWU5ZmU2MjVkNTNhM2UwMTFjNzFjNGFlZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC00MSwxMSArNDEs
MTEgQEAgY2xhc3MgQ0RNUHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0
ZSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShj
b25zdCBBdG9tU3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVz
dHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0
cmljdGlvbnMmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5
cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUm9idXN0
bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
U2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0
b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJp
Y3Rpb25zJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaAppbmRleCA2OWFjMTJkMzE2YmY2NjU3
YmIwYTI0ZGFmN2FlNGZhMGZkNGYxYzk4Li41YjBiNzc4MGQyN2RmZWIxOTNkY2U2ZWNkYTcxNzg1
MjhmN2NkNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1SZXF1aXJlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50LmgKQEAgLTMwLDkgKzMwLDExIEBACiAKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IHsKK2VudW0gY2xhc3Mg
Q0RNUmVxdWlyZW1lbnQgOiB1aW50OF90IHsKICAgICBSZXF1aXJlZCwKICAgICBPcHRpb25hbCwK
ICAgICBOb3RBbGxvd2VkCkBAIC00MCw0ICs0MiwxNyBAQCBlbnVtIGNsYXNzIENETVJlcXVpcmVt
ZW50IHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1SZXF1aXJlbWVudD4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETVJlcXVpcmVt
ZW50LAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQsCisgICAgICAg
IFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpPcHRpb25hbCwKKyAgICAgICAgV2ViQ29yZTo6Q0RN
UmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgKaW5kZXggYzUyZTI4MmExMmU5MWE0
ODgxMGJkMThiODdlYjZhZDYzOGYyMTBhOC4uOWNhMmFjNTllOGIxMzU0NjNhNTJkYjQ1ZTgwNzMx
ZjUwYzY5NGYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgKQEAgLTM2LDYgKzM2LDM5IEBAIHN0cnVjdCBD
RE1SZXN0cmljdGlvbnMgewogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkIHsg
ZmFsc2UgfTsKICAgICBib29sIHBlcnNpc3RlbnRTdGF0ZURlbmllZCB7IGZhbHNlIH07CiAgICAg
SGFzaFNldDxDRE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRIYXNoPENETVNlc3Npb25UeXBlPiwgV1RG
OjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+IGRlbmllZFNlc3Npb25UeXBl
czsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgZGlzdGluY3RpdmVJ
ZGVudGlmaWVyRGVuaWVkOworICAgICAgICBlbmNvZGVyIDw8IHBlcnNpc3RlbnRTdGF0ZURlbmll
ZDsKKyAgICAgICAgZW5jb2RlciA8PCBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPENETVJlc3RyaWN0
aW9ucz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxi
b29sPiBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQ7CisgICAgICAgIGRlY29kZXIgPj4gZGlz
dGluY3RpdmVJZGVudGlmaWVyRGVuaWVkOworICAgICAgICBpZiAoIWRpc3RpbmN0aXZlSWRlbnRp
ZmllckRlbmllZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVudFN0YXRlRGVuaWVkOworICAgICAgICBkZWNvZGVyID4+
IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsKKyAgICAgICAgaWYgKCFwZXJzaXN0ZW50U3RhdGVEZW5p
ZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFs
PEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUsIFdURjo6SW50SGFzaDxDRE1TZXNzaW9uVHlwZT4sIFdU
Rjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+Pj4gZGVuaWVkU2Vzc2lvblR5
cGVzOworICAgICAgICBkZWNvZGVyID4+IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICAgICAgaWYg
KCFkZW5pZWRTZXNzaW9uVHlwZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgKmRpc3RpbmN0aXZlSWRlbnRpZmllckRl
bmllZCwKKyAgICAgICAgICAgICpwZXJzaXN0ZW50U3RhdGVEZW5pZWQsCisgICAgICAgICAgICBX
VEZNb3ZlKCpkZW5pZWRTZXNzaW9uVHlwZXMpLAorICAgICAgICB9fTsKKyAgICB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaAppbmRleCA2MDU3NGE1YTY5M2E5NmM0
OWY0OWZiNzM0OTZlZDc1YjdlMWU2ZmJiLi5lMDdjMzAwMjc5MzA1Zjc3NDNmMjJmY2Y1NDA2ZjJj
ZmE2ODFkZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1TZXNzaW9uVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKQEAgLTMwLDkgKzMwLDExIEBACiAKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIHsKK2VudW0gY2xhc3Mg
Q0RNU2Vzc2lvblR5cGUgOiB1aW50OF90IHsKICAgICBUZW1wb3JhcnksCiAgICAgUGVyc2lzdGVu
dFVzYWdlUmVjb3JkLAogICAgIFBlcnNpc3RlbnRMaWNlbnNlCkBAIC00MCw0ICs0MiwxNyBAQCBl
bnVtIGNsYXNzIENETVNlc3Npb25UeXBlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpD
RE1TZXNzaW9uVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAg
IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlLAorICAgICAgICBXZWJDb3JlOjpDRE1TZXNzaW9uVHlw
ZTo6VGVtcG9yYXJ5LAorICAgICAgICBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVu
dFVzYWdlUmVjb3JkLAorICAgICAgICBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVu
dExpY2Vuc2UKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCA0NTExMWRjNzViNTUwODBj
ZWY0ZTVmYjM4YWUyNjMzYjM5ZWE3MjMzLi44NjRkNmUzZGU4M2IwMmMzYjFjMGQzYWRiNTY1N2Iz
Y2U3YjYxOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkNE
TVJlc3RyaWN0aW9ucy5oIgogI2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCisjaW5jbHVkZSAi
SW5pdERhdGFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0yOTAsMTAgKzI5MSwxMyBAQCBi
b29sIENETUZhY3RvcnlDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCiBDRE1Qcml2YXRlQ2xlYXJLZXk6OkNETVByaXZhdGVDbGVhcktleSgpID0gZGVm
YXVsdDsKIENETVByaXZhdGVDbGVhcktleTo6fkNETVByaXZhdGVDbGVhcktleSgpID0gZGVmYXVs
dDsKIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Q
cml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewotICAgIC8v
IGBrZXlpZHNgIGFuZCAnY2VuYycgYXJlIHRoZSBvbmx5IHN1cHBvcnRlZCBpbml0IGRhdGEgdHlw
ZS4KLSAgICByZXR1cm4gKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlw
ZSwgImtleWlkcyIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlw
ZSwgImNlbmMiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUs
ICJ3ZWJtIikpOworICAgIHJldHVybiB7CisgICAgICAgIEluaXREYXRhUmVnaXN0cnk6OmtleWlk
c05hbWUoKSwKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSwKKyAgICAgICAg
SW5pdERhdGFSZWdpc3RyeTo6d2VibU5hbWUoKSwKKyAgICB9OwogfQogCiBzdGF0aWMgYm9vbCBj
b250YWluc1BlcnNpc3RlbnRMaWNlbnNlVHlwZShjb25zdCBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+
JiB0eXBlcykKQEAgLTMzNyw3ICszNDEsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3Vw
cG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNz
aW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK2Jvb2wg
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAogewogICAgIC8vIE9ubHkgc3VwcG9ydCB0
aGUgJ3RlbXBvcmFyeScgYW5kICdwZXJzaXN0ZW50LWxpY2Vuc2UnIHNlc3Npb24gdHlwZXMuCiAg
ICAgaWYgKHNlc3Npb25UeXBlICE9IENETVNlc3Npb25UeXBlOjpUZW1wb3JhcnkgJiYgc2Vzc2lv
blR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKQpAQCAtMzQ1LDEwICsz
NDksMTAgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRo
Q29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYgc2UKICAgICByZXR1cm4gc3VwcG9ydHNDb25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENETVByaXZhdGVDbGVhcktleTo6
c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29uc3QKK1ZlY3Rv
cjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3Nlcygp
IGNvbnN0CiB7CiAgICAgLy8gT25seSBlbXB0eSBgcm9idXN0bmVzc2Agc3RyaW5nIGlzIHN1cHBv
cnRlZC4KLSAgICByZXR1cm4gcm9idXN0bmVzcy5pc0VtcHR5KCk7CisgICAgcmV0dXJuIHsgZW1w
dHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zKSBjb25zdApAQCAtNDk4
LDcgKzUwMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAgICAgIH0pOwogfQogCi12
b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhl
IHNlc2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNo
ZWNrcyBhcmUgYmVjYXVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggNjcwNGFlN2E5
NTdmMzJmZTFmODQ5ODNlZDNiM2Y2NTAyYTUzMTVhMi4uNGFiOWRlMGYwMmNlZWJiMjBhOTNjZGY2
MWUzYjc3MGY1ZmRlODIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC03NCwxMSAr
NzQsMTEgQEAgcHVibGljOgogICAgIENETVByaXZhdGVDbGVhcktleSgpOwogICAgIHZpcnR1YWwg
fkNETVByaXZhdGVDbGVhcktleSgpOwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShj
b25zdCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1
cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0
c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29u
c3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qg
ZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29u
c3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVp
cmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmlj
dGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVz
dHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
QXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKSBjb25zdCBmaW5hbDsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoQ0RNSW5zdGFuY2VDbGVhcktleSYgcGFyZW50KQogICAg
ICAgICA6IG1fcGFyZW50SW5zdGFuY2UocGFyZW50KSB7IH0KICAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vz
c2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggNTdkZmNiZjRiYzdjNDg4NDRkMzgxY2IzNWVjYzY0M2MxYWFiNGI5Mi4uZGIwYjJmOGE3
ZTBmMjY5NmExZDhkYjZmNGQ0ZjQ3YWFlYzhlYmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjU3LDYgKzY1NywxNCBAQCB2
b2lkIE1lZGlhUGxheWVyOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNl
JiBpbnN0YW5jZSkKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFNob3Vs
ZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91bGQpCit7CisgICAgbV9zaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkID0gc2hvdWxkOworICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxkQ29u
dGludWVBZnRlcktleU5lZWRlZChzaG91bGQpOworfQorI2VuZGlmCisKIE1lZGlhVGltZSBNZWRp
YVBsYXllcjo6ZHVyYXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUtPmR1cmF0
aW9uTWVkaWFUaW1lKCk7CkBAIC0xMzEyLDkgKzEzMjAsOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+
IE1lZGlhUGxheWVyOjpjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25z
dAogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGtleUlk
KTsKIH0KIAotYm9vbCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRh
KQordm9pZCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQogewot
ICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllcktleU5lZWRlZChpbml0RGF0YSk7CisgICAg
Y2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERhdGEpOwogfQogCiBTdHJpbmcgTWVk
aWFQbGF5ZXI6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggN2U2Y2I4YTM5MGRm
N2ZlMWE3YWFlMDE3MzlkYzk0OGY3NzY2MjFlZS4uYWVmM2NlZTRhYWI5ZWEyMGM1NjllNjdhNDFl
MTIwYjc2NDBlZmE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC0yMDAsNyArMjAwLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1l
ZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQotICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFy
cmF5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoVWludDhBcnJheSopIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyTWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0K
ICNlbmRpZgogCkBAIC0zNjYsNiArMzY2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGF0dGVtcHRU
b0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
dm9pZCBzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wpOworICAgIGJvb2wgc2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkQ29udGlu
dWVBZnRlcktleU5lZWRlZDsgfQorI2VuZGlmCisKICAgICBib29sIHBhdXNlZCgpIGNvbnN0Owog
ICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCkBAIC01MTksNyArNTI0LDcgQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdDsKLSAgICBi
b29sIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSk7CisgICAgdm9pZCBrZXlOZWVkZWQo
VWludDhBcnJheSogaW5pdERhdGEpOwogICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkgY29uc3Q7CiAjZW5kaWYKIApAQCAtNjY1LDYgKzY3MCw5IEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBtX21l
ZGlhU3RyZWFtOwogI2VuZGlmCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgYm9vbCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiBjbGFzcyBNZWRpYVBsYXllckZhY3Rv
cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaAppbmRleCA5ZjdmNmU2YjAyZDNiZWJlMDkwZWJjYzMyYTRiMGRjYTFjYzE3
NWE4Li43YTgyMDQ3MGY5OTlhYzk5YTZhOTlkOGYzNDI3NmM5ZjQ1NTkwYTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aApAQCAtMjQzLDYgKzI0MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHdhaXRpbmdG
b3JLZXkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKSB7IH0KKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24qKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4
IDRmYzY3ODdkZDhkOTA3Y2FkNmEyNzdmMzliMWVkMzJlZDY3OWE2ZDguLmI2YmFiZmNkZTVhMGQ0
YjgxMThkMDNjYzkyZjFkNjE5ZDYxZDc3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcApAQCAtMjQ3LDkgKzI0Nyw5IEBAIGJvb2wgQ0RNRmFjdG9yeUZhaXJQ
bGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkK
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
KCkgPSBkZWZhdWx0OwogQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjp+Q0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nKCkgPSBkZWZhdWx0OwogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZhbGlkSW5p
dERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CisgICAgcmV0dXJuIGNvcHlUb1Zl
Y3Rvcih2YWxpZEluaXREYXRhVHlwZXMoKSk7CiB9CiAKIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKQEAgLTMwNSw3ICszMDUsNyBAQCBib29sIENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3Ry
aWN0aW9ucyhjb25zdCBDRAogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmln
dXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0
c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBl
LCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAor
Ym9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgaWYg
KHNlc3Npb25UeXBlID09IENETVNlc3Npb25UeXBlOjpUZW1wb3JhcnkpIHsKICAgICAgICAgaWYg
KGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJl
ZCkKQEAgLTMxNiwxMyArMzE2LDEwIEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvCiAgICAgcmV0
dXJuIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKIH0KIAotYm9vbCBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcm
IHJvYnVzdG5lc3MpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdAogewotICAgIGlmIChyb2J1
c3RuZXNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICAvLyBGSVhNRTog
RGV0ZXJtaW5lIGFuIGVudW1lcmF0ZWQgbGlzdCBvZiByb2J1c3RuZXNzIHZhbHVlcyBzdXBwb3J0
ZWQgYnkgRlBTLgotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSB9
OwogfQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QKQEAgLTM2Niw3ICszNjMsNyBAQCBi
b29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0
CiAKIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkgY29uc3QKIHsKLSAgICBpZiAoIXN1cHBvcnRzSW5pdERhdGFUeXBlKGluaXREYXRhVHlwZSkp
CisgICAgaWYgKCF2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IHNpbmZOYW1l
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggNTM4Njk2
OWY5NDk3NmYzODM2ODAxODc0MWJhZmQxMjU1MWUyOGI4NS4uMzg3YjlmOTI1YWQ3YWZiYWUyZDJj
NTYxMmY4NGI0MzRjMGYxMGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmgKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nKCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7
CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBl
cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1
cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBl
JiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNl
c3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJy
aWRlOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25z
dCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVx
dWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3Ry
aWN0aW9ucyYpIGNvbnN0IG92ZXJyaWRlOwogICAgIENETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRT
dGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBD
RE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGRpc3RpbmN0aXZlSWRl
bnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5k
ZXggYjExZjcxYTliNWUzOGJmNjk4YjEzOTQ5ZGRkZTg2ZjNkZDk5NGNjMS4uN2YwZTJkNWFjMDBl
NjA2MmQzNWJhYzQ1ZDZlMWU3MWQ0NDAzZTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBA
IC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAg
ICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
TG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25z
dCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3MzI2Nzc1
ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0NjQ3Y2I4ZDMxLi5mMDliMjg5YTMzZTdlYzA0MGYwNGQx
ZjZmOTlhZjhlZjkwZDk3NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtNTgwLDcg
KzU4MCw3IEBAIHN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5W
YWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3Bv
bnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byBleHBpcmVkU2Vzc2lv
bnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKQEAgLTcxMSw3ICs3
MTEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfSBlbHNlCi0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMu
Zmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJl
c3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAg
IFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVu
dEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50
S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VE
YXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2Js
ZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRl
bnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgc3RydWN0IG9i
amNfbWV0aG9kX2Rlc2NyaXB0aW9uIG1ldGhvZCA9IHByb3RvY29sX2dldE1ldGhvZERlc2NyaXB0
aW9uKEBwcm90b2NvbChBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGUpLCBAc2VsZWN0b3IoY29u
dGVudEtleVNlc3Npb246Y29udGVudEtleVJlcXVlc3REaWRTdWNjZWVkOiksIE5PLCBZRVMpOwpA
QCAtMTE0MCw3ICsxMTQwLDggQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChOU0RhdGEKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7Ci0gICAgbV9jbGllbnQtPnNlc3Np
b25JZENoYW5nZWQobV9zZXNzaW9uSWQpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPnNlc3Npb25JZENoYW5nZWQobV9zZXNzaW9uSWQpOwogfQogCiB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Z3JvdXBTZXNzaW9uSWRlbnRpZmll
ckNoYW5nZWQoQVZDb250ZW50S2V5UmVwb3J0R3JvdXAqIGdyb3VwLCBOU0RhdGEgKnNlc3Npb25J
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYjM3YzQ0MTEzMTQ5ODg3OTU0
NmVjOGE1N2EwZGQ4ZTExZjc4NDY5Ny4uZDc4YzdjYWE2MDIwODNmYTNiODNiMzNjNzYwZGQ0ZjQx
MTJkNjNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNjc4LDkgKzE2NzgsMTIgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKFN0
cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwga2V5VVJJLmxlbmd0aCgp
IC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAogICAgICAgICBhdXRvIGluaXREYXRhID0g
VWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3Ro
KTsKLSAgICAgICAgaWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKKyAg
ICAgICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICAgICAgaWYgKCFwbGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRl
cktleU5lZWRlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCisjZW5kaWYK
IAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lP
TikKICAgICAgICAgaWYgKG1fY2RtSW5zdGFuY2UpIHsKQEAgLTE3MTMsNyArMTcxNiw5IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpKQor
ICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKTsKKworICAgICAgICBp
ZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9rZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleUlE
LCBhdlJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApp
bmRleCBjZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2ZDcxYjM2OTY2MzJkLi4wYTRkNjU3NTBh
MTU0YzVlNWVlMTliNTgzMGM5ZmJhZTAwMDFlM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmNwcApAQCAtOTgsNiArOTgsMTEgQEAgdm9pZCBNb2NrQ0RNRmFjdG9y
eTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJpbmc+JiYgdHlwZXMpCiAgICAgICAg
IG1fc3VwcG9ydGVkRGF0YVR5cGVzLmFwcGVuZCh0eXBlKTsKIH0KIAordm9pZCBNb2NrQ0RNRmFj
dG9yeTo6c2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3Nl
cykKK3sKKyAgICBtX3N1cHBvcnRlZFJvYnVzdG5lc3MgPSByb2J1c3RuZXNzZXMubWFwKFtdIChh
dXRvJiByb2J1c3RuZXNzKSAtPiBBdG9tU3RyaW5nIHsgcmV0dXJuIHJvYnVzdG5lc3M7IH0pOwor
fQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNE
TShjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VX
ZWFrUHRyKCp0aGlzKSk7CkBAIC0xMDgsMTEgKzExMywxOCBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdl
YWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCiB7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3Vw
cG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAor
VmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25z
dAogewogICAgIGlmIChtX2ZhY3RvcnkpCi0gICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnN1cHBv
cnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWREYXRhVHlwZXMoKTsKKyAgICBy
ZXR1cm4geyB9OworfQorCitWZWN0b3I8QXRvbVN0cmluZz4gTW9ja0NETTo6c3VwcG9ydGVkUm9i
dXN0bmVzc2VzKCkgY29uc3QKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAgICByZXR1cm4g
bV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAog
Ym9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdApAQCAtMTM5LDcgKzE1MSw3IEBAIGJv
b2wgTW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NE
TTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5
cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9y
eS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkuY29udGFpbnMoc2Vzc2lvblR5cGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNDgsMTMgKzE2MCw2IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Np
b25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNSb2J1c3Ru
ZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29uc3QKLXsKLSAgICBpZiAobV9mYWN0b3J5
KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCkuY29udGFp
bnMocm9idXN0bmVzcyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBNZWRpYUtleXNSZXF1aXJl
bWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikg
Y29uc3QKIHsKICAgICBpZiAobV9mYWN0b3J5KQpAQCAtMTk5LDcgKzIwNCw3IEBAIGJvb2wgTW9j
a0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0
RGF0YVR5cGUpKQorICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGlu
aXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFVOVVNFRF9QQVJBTShp
bml0RGF0YSk7CkBAIC0zMjUsNyArMzMwLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9u
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAg
ICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5s
ZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0K
IAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBt
X2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAt
MzMzLDcgKzMzOCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNw
b25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3Ry
aW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+
c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0
cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWls
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDM5OTA5Yjkz
MDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5ZjEuLjZjYjkxNWM4NTAxNTU4ZjEwYmI4ZmM1
YjJkYTUyODM1MDQwZjBlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNl
c3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBw
b3J0ZWRTZXNzaW9uVHlwZXM7IH0KICAgICB2b2lkIHNldFN1cHBvcnRlZFNlc3Npb25UeXBlcyhW
ZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mJiB0eXBlcykgeyBtX3N1cHBvcnRlZFNlc3Npb25U
eXBlcyA9IFdURk1vdmUodHlwZXMpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3Vw
cG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsg
fQotICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmIHJvYnVz
dG5lc3MpIHsgbV9zdXBwb3J0ZWRSb2J1c3RuZXNzID0gV1RGTW92ZShyb2J1c3RuZXNzKTsgfQor
ICAgIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsgfQorICAgIHZvaWQgc2V0U3VwcG9ydGVk
Um9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmKTsKIAogICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50
IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
dGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50OyB9CiAgICAgdm9pZCBzZXREaXN0aW5jdGl2
ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoTWVkaWFLZXlzUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQp
IHsgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQgPSByZXF1aXJlbWVudDsgfQpA
QCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IG1fcGVy
c2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwg
fTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWREYXRhVHlwZXM7CiAgICAgVmVj
dG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+IG1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzOwotICAgIFZl
Y3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkUm9idXN0bmVzczsKKyAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwogICAgIFZlY3RvcjxNZWRpYUtleUVuY3J5cHRpb25T
Y2hlbWU+IG1fc3VwcG9ydGVkRW5jcnlwdGlvblNjaGVtZXM7CiAgICAgYm9vbCBtX3JlZ2lzdGVy
ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKQEAg
LTEwOSwxMSArMTA5LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1v
Y2tDRE1JbnN0YW5jZTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRv
bVN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBv
cnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBj
b25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihNZWRpYUtleVNlc3Npb25UeXBlJiwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5n
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9uVHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBN
ZWRpYUtleXNSZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJP
cmlnaW5BbmRDbGVhcmFibGUoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29u
c3QgZmluYWw7CkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRT
ZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNz
aW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAppbmRleCBlNjg2YzYzYzE4ZjM1ODZmZmNhNzRlMTczMWMwZmYyNzc0MWIwZDNiLi5j
NWFmM2I1ZmJlMGNhYmI4YjJkZTMwZDA4NmQzM2E0Zjc5NDc5MTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNiw2ICsxNiwxMCBAQCAk
KEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xMDgsNiArMTEyLDcgQEAgJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5tZXNzYWdlcy4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxs
U2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDFmY2Y3
ZTQxMTA3ZmIzZjdiZTJiYzY5OTkzNjZhMDVmOGU2NTA4MjguLmM3M2UyODczZDliZmNhNzE0NjZj
OTQ3MzExM2I5MDAyNjBiNTE3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTI5LDYgKzEyOSwyMSBAQCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlcgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVz
c2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMGQx
NzI1NTg3NWExNmVjNmQzZTZhZmQyNTA2YjUxNTU3NjM1NDA0Li4yZDAwNzU4N2E0NTg2MTMwNmY0
MmRjYzM1MDhkNjVjZmNiZTYyZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0x
NDYsNiArMTQ2LDExIEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIgXAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAor
ICAgIFJlbW90ZUNETVByb3h5IFwKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkgXAorICAgIFJl
bW90ZUNETUluc3RhbmNlUHJveHkgXAorICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCisg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAogICAgIFJlbW90
ZU1lZGlhUGxheWVyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGEzOTRlMDk0MzFlMDI3NjhmYTEw
NzQ3Y2VjZjJiOTNlOWRmOTE2MjUuLjM5MDliYzg2OTU3ZTYwYjQyYjIzNGY5ZTMzZmEwM2ZiYmMx
NGQ5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTU4LDEwICs1OCwxOCBAQAogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgotCiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90
ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE4OSw2ICsxOTcsMTcgQEAgTGliV2Vi
UlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxpYldlYlJUQ0NvZGVj
c1Byb3h5KCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK1JlbW90
ZUNETUZhY3RvcnlQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2RtRmFjdG9yeVBy
b3h5KCkKK3sKKyAgICBpZiAoIW1fY2RtRmFjdG9yeVByb3h5KQorICAgICAgICBtX2NkbUZhY3Rv
cnlQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PigqdGhpcyk7CisKKyAg
ICByZXR1cm4gKm1fY2RtRmFjdG9yeVByb3h5OworfQorI2VuZGlmCisKKwogdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTIzOSw2ICsyNTgsMjcgQEAgdm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIEkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21X
ZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQ
cm94eSgpLmRpZFJlY2VpdmVDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBj
ZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogfQogCiB2
b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKQEAgLTI1OSw2ICsyOTksMjcgQEAg
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgor
I2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5j
b2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1N
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewor
ICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNz
aW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogI2VuZGlmCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI2
OSw3ICszMzAsNyBAQCBjb25zdCBTdHJpbmcmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBtX2dwdVByb2Nlc3MtPm1lZGlh
Q2FjaGVEaXJlY3RvcnkobV9zZXNzaW9uSUQpOwogfQogCi0jaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCiBjb25zdCBTdHJpbmcmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogewogICAgIHJldHVybiBtX2dw
dVByb2Nlc3MtPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobV9zZXNzaW9uSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggMGVjMjM4Y2QwNjI1MzgzNDc1OWJmZTk2YmJhZTBhZGViYjM1MWE3ZS4uMzQzNjI0OTU3
OWM3ZTRjMTgzNzJjYTQ0YmUwN2QyOTc3NDc5NmU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC00NSw2ICs0NSw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgR1BVUHJvY2VzczsKIGNsYXNzIExpYldlYlJU
Q0NvZGVjc1Byb3h5OwogY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyOworY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIGNs
YXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwpAQCAtNzYsNiArNzcsMTAgQEAgcHVibGlj
OgogCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBzZXNzaW9uTWFu
YWdlcigpOwogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBSZW1vdGVDRE1GYWN0
b3J5UHJveHkmIGNkbUZhY3RvcnlQcm94eSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwogCkBA
IC0xMTcsNyArMTIyLDEzIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShM
SUJXRUJSVEMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xp
YldlYlJUQ0NvZGVjc1Byb3h5OwogI2VuZGlmCis8PDw8PDw8IEhFQUQKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3Nlc3Npb25NYW5h
Z2VyOworPT09PT09PQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7CisjZW5kaWYK
Kz4+Pj4+Pj4gW0dQVVBdIEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nl
c3MKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NWI0YWZkNGI0MzY3NzdkMWM0ZDEzZjg3MGI0NGRkMmIzNjk4MTEwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94
eS5jcHAKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1D
b25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3
dGYvQWxnb3JpdGhtcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK1JlbW90ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbikKK3sKK30KKworUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Ojp+UmVtb3RlQ0RNRmFjdG9yeVByb3h5KCkgPSBkZWZhdWx0OworCitzdGF0aWMgQ0RNRmFj
dG9yeSogZmFjdG9yeUZvcktleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAg
ICBhdXRvJiBmYWN0b3JpZXMgPSBDRE1GYWN0b3J5OjpyZWdpc3RlcmVkRmFjdG9yaWVzKCk7Cisg
ICAgYXV0byBmb3VuZEluZGV4ID0gZmFjdG9yaWVzLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIGZh
Y3RvcnkpIHsgcmV0dXJuIGZhY3RvcnktPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSk7IH0p
OworICAgIGlmIChmb3VuZEluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gZmFjdG9yaWVzW2ZvdW5kSW5kZXhdOworfQorCit2b2lkIFJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gZmFjdG9yeSA9IGZhY3RvcnlGb3JL
ZXlTeXN0ZW0oa2V5U3lzdGVtKTsKKyAgICBpZiAoIWZhY3RvcnkpIHsKKyAgICAgICAgY29tcGxl
dGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHByaXZh
dGVDRE0gPSBmYWN0b3J5LT5jcmVhdGVDRE0oa2V5U3lzdGVtKTsKKyAgICBpZiAoIXByaXZhdGVD
RE0pIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIHByb3h5ID0gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0
cih0aGlzKSwgV1RGTW92ZShwcml2YXRlQ0RNKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVt
b3RlQ0RNSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb24gPSBwcm94eS0+Y29uZmlndXJhdGlvbigpOworICAgIGFkZFByb3h5KGlk
ZW50aWZpZXIsIFdURk1vdmUocHJveHkpKTsKKyAgICBjb21wbGV0aW9uKFdURk1vdmUoaWRlbnRp
ZmllciksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9u
KGZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3By
b3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPihk
ZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IG1f
aW5zdGFuY2VzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpbnN0YW5jZS0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5j
Q0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYg
KGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVD
RE1JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJv
eHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsK
K30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFu
Y2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAo
YXV0byogaW5zdGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkK
KyAgICAgICAgaW5zdGFuY2UtPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
IGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtl
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4o
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90
ZUNETUZhY3RvcnlQcm94eTo6YWRkUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllciBpZCwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiYmIHByb3h5KQoreworICAgIEFTU0VSVCghbV9wcm94
aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnNldChpZCwgV1RGTW92ZShwcm94eSkp
OworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlUHJveHkoUmVtb3RlQ0RN
SWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Cisg
ICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjphZGRJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmIGluc3RhbmNlKQoreworICAgIEFTU0VSVCgh
bV9pbnN0YW5jZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX2luc3RhbmNlcy5zZXQoaWQsIFdURk1v
dmUoaW5zdGFuY2UpKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUlu
c3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9p
bnN0YW5jZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX2luc3RhbmNlcy5yZW1vdmUoaWQpOworfQor
CitSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmdldEluc3Rh
bmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYgaWQpCit7CisgICAgcmV0dXJu
IG1faW5zdGFuY2VzLmdldChpZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojph
ZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAg
IEFTU0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlk
LCBXVEZNb3ZlKHNlc3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJl
bW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCkKK3sKKyAg
ICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVtb3Zl
KGlkKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWIxY2NjOTVi
YmQzZmUzYjlmMzM1MmQ4NTAwMjc3YTRiZmQzOTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCkBAIC0wLDAg
KzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUNE
TUluc3RhbmNlUHJveHk7CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTsKK2Ns
YXNzIFJlbW90ZUNETVByb3h5Oworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb247CisKK2Ns
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZW1vdGVDRE1GYWN0b3J5
UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNE
TUZhY3RvcnlQcm94eSgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9j
ZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7
IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
IGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVu
Y29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworCisgICAgdm9pZCBhZGRQ
cm94eShSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+
JiYpOworICAgIHZvaWQgcmVtb3ZlUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllcik7CisKKyAgICB2
b2lkIGFkZEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlSW5zdGFuY2Uo
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
KiBnZXRJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImKTsKKworICAg
IHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKworICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7IH0KKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUlk
ZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKT4mJik7CisgICAgdm9pZCBzdXBw
b3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+PiBtX3Byb3hpZXM7CisgICAgSGFzaE1hcDxS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0
YW5jZVByb3h5Pj4gbV9pbnN0YW5jZXM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk+PiBtX3Nlc3Npb25zOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0N2M1ZTZlNjFjNDIwNzgzMWRhMGJkMTE4YTZhYWVi
NDBkMzMxMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1GYWN0b3J5UHJveHkgTm90UmVmQ291bnRlZCB7
CisgICAgQ3JlYXRlQ0RNKFN0cmluZyBrZXlTeXN0ZW0pIC0+IChXZWJLaXQ6OlJlbW90ZUNETUlk
ZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0c0tleVN5c3RlbShTdHJpbmcga2V5U3lz
dGVtKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJlZDkyNTQ1YjdmZDBkNGQzMmY1MTI0MjUxZjhiMDAxNWNjYTk1
OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUo
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVmPENETUluc3RhbmNl
PiYmIHByaXYpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gbWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLCBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJj4oeworICAgICAgICBwcml2LT5rZXlTeXN0ZW0oKSwK
KyAgICB9KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJv
eHk+KG5ldyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUo
cHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94
eT4mJiBmYWN0b3J5LCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5
KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2luc3RhbmNlKFdURk1vdmUocHJpdikpCisgICAg
LCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21w
bGV0aW9uKG1faW5zdGFuY2UtPmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0
aW9uKSA9PSBDRE1JbnN0YW5jZTo6U3VjY2VlZGVkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjpzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sIGFsbG93ZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21w
bGV0aW9uKG1faW5zdGFuY2UtPnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGFsbG93
ZWQpID09IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBhbGxvd2VkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbiht
X2luc3RhbmNlLT5zZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGFsbG93ZWQpID09IENETUluc3Rh
bmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNl
cnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGNlcnRpZmlj
YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAg
aWYgKCFjZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbXBsZXRpb24obV9pbnN0YW5jZS0+c2V0
U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSkg
PT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24o
bV9pbnN0YW5jZS0+c2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpID09IENETUluc3RhbmNl
OjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNl
c3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHByaXZTZXNzaW9uID0g
bV9pbnN0YW5jZS0+Y3JlYXRlU2Vzc2lvbigpOworICAgIGlmICghcHJpdlNlc3Npb24gfHwgIW1f
ZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlc3Npb24gPSBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIHByaXZTZXNz
aW9uLnJlbGVhc2VOb25OdWxsKCksIGlkZW50aWZpZXIpOworICAgIG1fZmFjdG9yeS0+YWRkU2Vz
c2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24pKTsKKyAgICBjb21wbGV0aW9uKGlkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldEhEQ1BTdGF0dXMo
V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXMgc3RhdHVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX2luc3RhbmNl
LT5zZXRIRENQU3RhdHVzKHN0YXR1cykgPT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZjZmMTExMWY3MTIwNzQ2
N2NmM2NiYjc4MDdlZWQ4OTFkNGFlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9DRE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENETUluc3RhbmNlOworc3Ry
dWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSA6IHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmKTsKKyAgICB+UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LmdldCgpOyB9CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2UmIGluc3RhbmNlKCkgeyByZXR1cm4g
bV9pbnN0YW5jZTsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0
b3J5UHJveHk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETUZh
Y3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXREaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzQWxsb3dlZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyAgICB2b2lkIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY3JlYXRlU2Vzc2lvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIm
KT4mJik7CisgICAgdm9pZCBzZXRIRENQU3RhdHVzKFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQ
U3RhdHVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIFdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CisgICAgUmVmPFdlYkNvcmU6OkNETUlu
c3RhbmNlPiBtX2luc3RhbmNlOworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eT4+IG1fc2Vzc2lvbnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDIxOTc0NjdkMDk2NTNmNDBkMDdmZTc5NWMw
NmY5ZDA1NDc2NzA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291
bnRlZCB7CisgICAgQ3JlYXRlU2Vzc2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIgaWQpIFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb24pIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAgU2V0RGlzdGluY3Rp
dmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCBhbGxvd2VkKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5j
aHJvbm91cworICAgIFNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBhbGxvd2VkKSAtPiAo
Ym9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworICAgIFNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZSkgLT4gKGJvb2wgc3VjY2Vzcykg
U3luY2hyb25vdXMKKyAgICBTZXRTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyBkaXJlY3RvcnkpIC0+
IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAgU2V0SERDUFN0YXR1cyhXZWJDb3JlOjpD
RE1JbnN0YW5jZTo6SERDUFN0YXR1cyBzdGF0dXMpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9u
b3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDg1MjFkNjg4ZTgwZTAxYWE4NDVkZDA5MGIyM2M4OGUxMThjZjcyZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4gUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94
eT4mJiBmYWN0b3J5LCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24s
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIHNlc3Npb25Qcm94eSA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eT4obmV3IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdURk1vdmUoZmFjdG9y
eSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1h
a2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5
LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHktPm1fc2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUo
Y2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Npb25Qcm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVt
b3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3Nlc3Np
b24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorewor
fQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6flJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5KCkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUs
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJiBjb21wbGV0aW9uKQoreworICAgIGlmICghaW5pdERhdGEuYnVmZmVyKCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGlu
aXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRp
b24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAg
ICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFs
aXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAg
ICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGlj
ZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxl
dGlvbikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRp
b24odHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9uLT51cGRhdGVMaWNlbnNlKHNlc3Npb25J
ZCwgdHlwZSwgKnJlc3BvbnNlLmJ1ZmZlcigpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxl
dGlvbildIChib29sIHNlc3Npb25DbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJh
dGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewor
ICAgICAgICBjb21wbGV0aW9uKHNlc3Npb25DbG9zZWQsIFdURk1vdmUoa2V5U3RhdHVzZXMpLCBX
VEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgdHlwZSwgU3Ry
aW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNvbXBs
ZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5sb2FkU2Vzc2lvbih0eXBlLCBzZXNzaW9uSWQsIG9y
aWdpbiwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoT3B0aW9uYWw8Q0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRv
dWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJs
ZSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhw
aXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZWVkZWQsIGZhaWx1cmUpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBtX3Nlc3Npb24t
PmNsb3NlU2Vzc2lvbihzZXNzaW9uSWQsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KV0gKCkgbXV0YWJsZSB7IGNvbXBsZXRpb24oKTsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY29tcGxl
dGlvbikKK3sKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlw
ZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CisgICAgICAgIGlm
IChleHBpcmVkU2Vzc2lvbnNEYXRhKQorICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVm
ZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFdURk1vdmUoKmV4cGlyZWRT
ZXNzaW9uc0RhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKGtleVN0YXR1c2VzKSwg
V1RGTW92ZShleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpCit7CisgICAgbV9zZXNzaW9uLT5zdG9yZVJlY29yZE9mS2V5VXNhZ2Uoc2Vzc2lv
bklkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5
U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMpCit7CisgICAgaWYgKG1fZmFj
dG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRl
S2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fZmFj
dG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2VuZE1l
c3NhZ2UodHlwZSwgV1RGTW92ZShtZXNzYWdlKSksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5
LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpLCBt
X2lkZW50aWZpZXIpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNTg0NjQwODNkY2FjM2Q3YWQ1ZDU0YWViMWNmZDBjYjIzMGJkNTA1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBm
aW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVD
RE1GYWN0b3J5UHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworICAgIHZpcnR1YWwgflJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5KCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJl
bW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CisKKyAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBUeXBlcworICAgIHVz
aW5nIExpY2Vuc2VUeXBlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlw
ZTsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1c1ZlY3RvcjsKKyAgICB1c2luZyBNZXNzYWdlID0gV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlOworICAgIHVzaW5nIFNlc3Npb25Mb2FkRmFpbHVyZSA9IFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOworICAgIHVzaW5n
IExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sLCBib29sKT47
CisgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwg
T3B0aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCk+OworICAgIHVzaW5nIExvYWRTZXNzaW9uQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwg
T3B0aW9uYWw8ZG91YmxlPiYmLCBPcHRpb25hbDxNZXNzYWdlPiYmLCBib29sLCBTZXNzaW9uTG9h
ZEZhaWx1cmUpPjsKKyAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIE9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mJiwgYm9vbCk+OworICAgIHVzaW5nIFN0b3JlUmVjb3Jk
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworCisgICAgLy8gTWVzc2FnZXMK
KyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBBdG9tU3RyaW5nIGluaXREYXRh
VHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmKTsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIHJlc3BvbnNlLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
U3RyaW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKTsK
KyAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNz
aW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwor
CisgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CisgICAgdm9pZCB1cGRhdGVLZXlTdGF0
dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJD
b3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KSBmaW5hbDsKKyAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7
CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5OworICAgIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTIzM2VlOWMzMTVjZjI4OWYyN2ZhZjcxYTJjZGIzYmQ0OWZiMTE2YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgTm90UmVmQ291bnRlZCB7CisKKyAg
ICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBl
IHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2Fn
ZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBib29sIHN1
Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQsIFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRp
b25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gY2hhbmdl
ZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQp
IEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNl
bnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luKSAtPiAoT3B0aW9u
YWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRL
ZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1
cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9uKFN0cmluZyBzZXNzaW9uSWQp
IC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3RyaW5nIHNlc3Npb25JZCwgV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlKSAtPiAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXMsIE9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQp
IEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmluZyBzZXNzaW9uSWQpCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFhYTM0Njc1MWE3OWQ2NzY4OGY1YjJlYzhlMjJhOGVhNzlh
M2QyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKworI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShXZWFr
UHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVmV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBSZW1vdGVDRE1Db25m
aWd1cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLAor
ICAgICAgICBwcml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAgICAgcHJpdi0+c3Vw
cG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXNzaW9u
cygpCisgICAgfSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Qcml2YXRlJ3MgcHJp
dmF0ZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVBy
b3h5PihuZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2KSwg
V1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RN
UHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bmlx
dWVfcHRyPENETVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3VyYXRp
b24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQor
ICAgICwgbV9wcml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Q
cm94eSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0
aW9uKG1fcHJpdmF0ZS0+c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0
aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25z
dCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5zdXBwb3J0
c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9u
cykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHR5cGUsIGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c3VwcG9ydHNT
ZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKHR5cGUsIGNvbmZpZ3VyYXRpb24pKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBkYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFkYXRhLmJ1ZmZlcigp
KSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsICpkYXRhLmJ1
ZmZlcigpKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmRpc3RpbmN0aXZlSWRlbnRpZmll
cnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChDRE1SZXF1aXJlbWVudCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9u
KG1fcHJpdmF0ZS0+ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbmZpZ3VyYXRp
b24sIHJlc3RyaWN0aW9ucykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpwZXJzaXN0ZW50
U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChDRE1SZXF1aXJlbWVudCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0
aW9uKG1fcHJpdmF0ZS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwg
cmVzdHJpY3Rpb25zKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5k
aXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbmZp
Z3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gcHJp
dmF0ZUluc3RhbmNlID0gbV9wcml2YXRlLT5jcmVhdGVJbnN0YW5jZSgpOworICAgIGlmICghcHJp
dmF0ZUluc3RhbmNlIHx8ICFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBpbnN0YW5jZSA9IFJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBwcml2
YXRlSW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZpZ3VyYXRpb24o
KTsKKyAgICBtX2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1vdmUoaW5zdGFu
Y2UpKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworfQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAg
bV9wcml2YXRlLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5
OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYg
cmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlJiYpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPnNh
bml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
UHJveHk6OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4mJik+JiYgY29tcGxldGlvbikKK3sKKyAg
ICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKSk7Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzODBmYzUxM2JhMTc4OTdjNWYzNDZlZjUxYTU3YWFi
OTBiMThkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDRE1Qcml2YXRlOworY2xhc3MgU2hhcmVkQnVm
ZmVyOworZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENE
TVNlc3Npb25UeXBlIDogdWludDhfdDsKK3N0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
Oworc3RydWN0IENETVJlc3RyaWN0aW9uczsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTsKK3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb247CitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbjsKKworY2xhc3MgUmVtb3Rl
Q0RNUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1v
dGVDRE1GYWN0b3J5UHJveHk+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRl
PiYmKTsKKyAgICB+UmVtb3RlQ0RNUHJveHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24u
Z2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OworICAgIFJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYm
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiwgVW5pcXVlUmVmPFJlbW90
ZUNETUNvbmZpZ3VyYXRpb24+JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisK
KyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdl
YkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlv
bnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OkNETVJlc3RyaWN0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
ICAgIHZvaWQgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNv
cmU6OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZGlzdGlu
Y3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNETVJlcXVpcmVtZW50KT4mJik7CisgICAgdm9pZCBwZXJz
aXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCk+JiYpOworICAgIHZvaWQgZGlzdGluY3Rp
dmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgdm9pZCBjcmVhdGVJbnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
JiYpPiYmKTsKKyAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCk7CisgICAgdm9pZCBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgcmVzcG9uc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYp
PiYmKTsKKyAgICB2b2lkIHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4mJik+JiYpOworCisgICAg
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4gbV9wcml2YXRlOworICAgIFVuaXF1ZVJlZjxSZW1v
dGVDRE1Db25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVBy
b3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NGU1MzUzMWFlNzQ0ZDA0NTE3MTk0MTNiNDNi
ZmFjMTU2ODQwYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSw0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFN1cHBv
cnRzQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU3VwcG9y
dHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Q0RNUmVzdHJp
Y3Rpb25zIHJlc3RyaWN0aW9ucykgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIFN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
Q0RNU2Vzc2lvblR5cGUgdHlwZSwgc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbikgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIFN1
cHBvcnRzSW5pdERhdGEoQXRvbVN0cmluZyB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgZGF0YSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIERpc3RpbmN0aXZl
SWRlbnRpZmllcnNSZXF1aXJlbWVudChzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zIHJl
c3RyaWN0aW9ucykgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCByZXN1
bHQpIFN5bmNocm9ub3VzCisgICAgUGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoc3RydWN0IFdl
YkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgc3RydWN0IFdl
YkNvcmU6OkNETVJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMpIC0+IChlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6Q0RNUmVxdWlyZW1lbnQgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIERpc3RpbmN0aXZl
SWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoc3RydWN0IFdlYkNvcmU6
OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgLT4gKGJvb2wgcmVzdWx0
KSBTeW5jaHJvbm91cworICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBMb2FkQW5kSW5pdGlh
bGl6ZSgpCisgICAgU2FuaXRpemVSZXNwb25zZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgcmVzcG9uc2UpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgcmVzdWx0KSBT
eW5jaHJvbm91cworICAgIFNhbml0aXplU2Vzc2lvbklkKFN0cmluZyBzZXNzaW9uSWQpIC0+IChP
cHRpb25hbDxTdHJpbmc+IHJlc3VsdCkgU3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHAKaW5kZXggNWVmZTY2MjVkNmYyZjkwYWRlZDc3ZDhjNTU5N2RmM2M3ODhmMzFkYi4u
NDgxNDU4NDc1MmExM2IwY2U4NTAzNDg5NWRmOTE0MTAwYzVhYTQxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKQEAgLTQ3LDYgKzQ4LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJl
bW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ5MCwxNyArNDk1LDE2IEBAIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopCit2b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpt
ZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYsIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQ
bGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGluaXREYXRhKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0
YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbml0
RGF0YS0+ZGF0YSgpKSwgaW5pdERhdGEtPmJ5dGVMZW5ndGgoKSkpLCBtX2lkKTsKIH0KIAogdm9p
ZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcldhaXRpbmdGb3JLZXlDaGFuZ2Vk
KCkKQEAgLTY4Miw2ICs2ODYsMzQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjprZXlB
ZGRlZCgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlQXR0YWNoZWQoUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94
eSA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5
KCkuZ2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVyLT5jZG1JbnN0YW5j
ZUF0dGFjaGVkKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQorCit2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlRGV0YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9IG1f
bWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCkuZ2V0
SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVyLT5jZG1JbnN0YW5jZURldGFj
aGVkKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9
IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCku
Z2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVyLT5hdHRlbXB0VG9EZWNy
eXB0V2l0aEluc3RhbmNlKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQorI2VuZGlmCisK
KworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1fcGxheWVyLT5zZXRTaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkKHNob3VsZCk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCiB7CiAgICAgbV9wbGF5ZXIt
PmJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCAxNmJiMmRkZmEy
MTQ3NDcwZTg2MDBhYjcxMzk2YTU5Y2RmNTQ0OWZhLi4yMDg5NmI5NTU1NDgxMGI1Y2NmZGMyNWNh
ZDU2YTRkMGFhODY5N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTQ2LDYgKzQ2LDExIEBACiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9CkBAIC0xMjYsNiArMTMxLDE2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGtleUFkZGVkKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgdm9pZCBjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGNkbUluc3RhbmNlRGV0YWNoZWQoUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyJiYpOworICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0
YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7CisjZW5kaWYKKworI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwogICAgIHZvaWQgZW5kU2ltdWxhdGVk
SERDUEVycm9yKCk7CiAKQEAgLTE2OCw3ICsxODMsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBs
YXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIGJv
b2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIHZvaWQgbWVk
aWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBs
YXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCkBA
IC0yNTIsNiArMjY3LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TGF5b3V0UmVjdCBtX3Zp
ZGVvQ29udGVudEJveFJlY3Q7CiAgICAgZmxvYXQgbV92aWRlb0NvbnRlbnRTY2FsZSB7IDEuMCB9
OwogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgYm9vbCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxz
ZSB9OworI2VuZGlmCisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dn
ZXImIG1fbG9nZ2VyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGNhNjYzMTRkZmJlNmQzMWJlMDk5NTJjNWYyODJmMTA2MThmZWJlYmEuLjI5ZDI4NjljMTY0
MmQ4ZmMyNjZlODkxY2I2MThlNDgyNGIwYjIyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1l
c3NhZ2VzLmluCkBAIC03Myw5ICs3MywxNiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXll
clByb3h5IE5vdFJlZkNvdW50ZWQgewogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQogICAgICMgU2V0Q0RNU2Vzc2lvbgogICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNl
QXR0YWNoZWQKLSAgICAjIENkbUluc3RhbmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UKKyNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAg
ICBDZG1JbnN0YW5jZUF0dGFjaGVkKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
IGluc3RhbmNlSWQpCisgICAgQ2RtSW5zdGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllciBpbnN0YW5jZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5z
dGFuY2UoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNl
bmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgU2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNo
b3VsZCkKICNlbmRpZgogCiAgICAgQmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDY3MmJlYzQ4ZWE3OWM2ODJjMTI0
NWU1MjZmMDQ4OGM2Nzk5NjgwYjcuLjUzYTgwNzgxN2IyYTZiMWRkZjUxMzQ1ODZlZjJlNzEwMmY2
ODI0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTE0
OSwxMyArMTQ5LDEzIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vCiAgICAgc2VuZFRvQ2xpZW50
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9u
c2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogfQogCi12b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICht
X2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lci5p
c0FjdGl2ZSgpKTsKLSAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKKyAgICBzZW5kVG9D
bGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEs
IGVuY29kZWREYXRhTGVuZ3RoIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzM2NiZmYxMDg5
Y2MxMDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQuLjUwODAwZjM1MDIyMzYyZjk2Y2EyMWI1ZTdl
YmQwN2Q4ZDQyYTJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVy
ZW5jZTsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBi
b29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZv
aWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRl
eCBhNzQ5YWFiODcwMDU0Y2ViNjkwZTVmMTRmNDA3NTYzZmZjZDBmOWI4Li44OGY0ZjJmYTY0MjYz
MzQ5YjdhZDIyZDA2ZjQzYTI3ZjcyMzM1MWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvSGFuZGxlTWVzc2FnZS5oCkBAIC05NiwxMiArOTYsNiBAQCBzdHJ1Y3QgQ29kaW5nVHlwZSB7
CiAgICAgdHlwZWRlZiBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90
PFQ+PiBUeXBlOwogfTsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDb2RpbmdUeXBlPGNvbnN0IFNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7Ci0gICAgdHlwZWRlZiBEYXRhUmVmZXJlbmNlIFR5cGU7
Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4KIHN0cnVjdCBDb2RpbmdUeXBlPHN0ZDo6
dHVwbGU8VHMuLi4+PiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHR5cGVuYW1lIENvZGluZ1R5
cGU8VHM+OjpUeXBlLi4uPiBUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCmluZGV4IGRhZDQ2NjA0NjMyZTkyNjlm
MTkxZDE1YzgwZGQyMTFlNTQ4NGU3YTMuLmJmYjMzOTU3Njk2ZjJlNzJhMjM0ODIzNDIyNTJiNzJi
ZDc5NDI4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKQEAgLTI1LDQwICsyNSw1MSBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKCkgPSBkZWZh
dWx0OworICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQor
ICAgIHsKKyAgICB9CisgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpCisgICAgeworICAgIH0KICAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fZGF0YShidWZmZXIpIHsg
fQotICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKHN0ZDo6bWFrZV9wYWlyKGRhdGEsIHNpemUpKSB7
IH0KKyAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQor
ICAgIHsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOworICAgIH0KKworICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsg
fQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlcjsgfQorCisgICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIHsKLSAgICAgICAgc3dpdGNoT24obV9kYXRhLAotICAgICAgICAgICAgW2Vu
Y29kZXIgPSAmZW5jb2Rlcl0gKGNvbnN0IFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIG11dGFibGUgewotICAgICAgICAgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUg
PSBidWZmZXItPnNpemUoKTsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5yZXNlcnZlKGJ1ZmZl
clNpemUgKyBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgICAgICAgICAqZW5jb2RlciA8PCBi
dWZmZXJTaXplOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1
ZmZlci5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVsZW1lbnQuc2VnbWVudC0+
ZGF0YSgpKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCksIDEpOwotICAgICAgICAgICAgfSwgW2Vu
Y29kZXIgPSAmZW5jb2Rlcl0gKGNvbnN0IHN0ZDo6cGFpcjxjb25zdCB1aW50OF90Kiwgc2l6ZV90
PiYgcGFpcikgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9
IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgICAgIGVuY29kZXItPnJlc2VydmUoYnVmZmVyU2l6
ZSArIHNpemVvZih1aW50NjRfdCkpOwotICAgICAgICAgICAgICAgICplbmNvZGVyIDw8IGJ1ZmZl
clNpemU7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHBh
aXIuZmlyc3QsIHBhaXIuc2Vjb25kLCAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKKyAg
ICAgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKKyAgICB9CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
eworICAgICAgICBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gYnVmZmVy
OworICAgICAgICBkZWNvZGVyID4+IGJ1ZmZlcjsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4geyBXVEZNb3ZlKCpi
dWZmZXIpIH07CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZhcmlhbnQ8c3RkOjpwYWlyPGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3Q+LCBSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gbV9k
YXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjYwNDkwZmI3
YjU2YTg4Y2ZmMGQ5Yjg5YzFhNzE2OGFlZDBkMTg1Yy4uNzE2NGMzNzM0MzEwMWZlZjBjM2Q1ZjBk
YjY3YzUyY2Q2MThiNWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CkBAIC0yMjcsNiArMjI3LDkgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRf
ZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6TUROU1JlZ2lzdGVySWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpNZWRpYVJlY29yZGVySWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6
OlJlbW90ZUNETUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDhjOWZhMjFhZjM4YTcxNjJjNmMyMDllOTM5
NDY4OTA2YTI1YzNjYTMuLmQyZGVlOWZiNmQxMDA4YjRlNTgyNTkyMWIyMjFmMjlhYTZlOTM0MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApA
QCAtMTM0LDcgKzEzNCw4IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICBlbmNvZGVyIDw8IGhh
bmRsZTsKIH0KIAotc3RhdGljIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5
cGVuYW1lLi4uPiBjbGFzcyBSPgorc3RhdGljIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29k
ZXImIGRlY29kZXIsIFI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHVpbnQ2NF90IGJ1
ZmZlclNpemUgPSAwOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCkBAIC0z
MjAzLDQgKzMyMDQsNzMgQEAgT3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVl
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm8KIH0KICNlbmRpZgogCit2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsK
K30KKworT3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBidWZmZXI7Cit9CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1l
c3NhZ2UmIG1lc3NhZ2UpCit7CisgICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0OworCisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVm
KCk7CisgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2VUeXBlIHR5cGU7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBtYWtlT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
Pih7IHR5cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIH0pOworfQorCit2b2lkIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3ImIGtleVN0YXR1c2VzKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGtleVN0YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBrZXlTdGF0
dXMgOiBrZXlTdGF0dXNlcykgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXkgPSBr
ZXlTdGF0dXMuZmlyc3QuY29weVJlZigpOworICAgICAgICBlbmNvZGVyIDw8IGtleSA8PCBrZXlT
dGF0dXMuc2Vjb25kOworICAgIH0KK30KKworT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICB1aW50NjRfdCBkYXRhU2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFTaXpl
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzOworICAgIGtleVN0YXR1c2Vz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGF0YVNpemUpOworCisgICAgZm9yICh1aW50NjRfdCBp
ID0gMDsgaSA8IGRhdGFTaXplOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGtleSkgfHwgIWtleSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXMgc3RhdHVzOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YXR1cykpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IGtleVN0YXR1c2VzLnVuY2hlY2tlZEFwcGVuZCh7IGtleS5yZWxlYXNlTm9uTnVsbCgpLCBzdGF0
dXMgfSk7CisgICAgfQorICAgIHJldHVybiBrZXlTdGF0dXNlczsKK30KKyNlbmRpZiAvLyBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZTM4MTRlMjFmODMzNmFhZjJm
NDQ0MzIzMmUzNDRlMDA3NGRhZTJhMS4uODEwMGM5MjQzZmFkYjg3NjFjNmUzMTdlYTNlZjM0YjA4
YTFmMmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKQEAgLTU1LDYgKzU1LDExIEBACiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVB
cmd1bWVudENvZGVyc0FkZGl0aW9ucy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkK
IG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTEwMCw2ICsxMDUsNyBA
QCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9u
OwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwpAQCAtODI5LDYgKzgz
NSwyMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYpOworICAgIHN0YXRpYyBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4gZGVjb2RlKERlY29kZXImKTsKK307CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYpOworICAgIHN0YXRpYyBPcHRpb25h
bDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IGRlY29kZShEZWNvZGVyJik7
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3Rvcj4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtOTY1LDQgKzk4OCwyOCBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdURkxvZ0xldmVsPiB7CiAgICAgPjsKIH07CiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OlNlc3Npb25Mb2FkRmFpbHVyZSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNl
c3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlLAor
ICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpRdW90
YUV4Y2VlZGVkLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRG
YWlsdXJlOjpPdGhlcgorICAgID47Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzLAorICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpVbmtub3duLAorICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpWYWxpZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5j
ZTo6SERDUFN0YXR1czo6T3V0cHV0UmVzdHJpY3RlZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5j
ZTo6SERDUFN0YXR1czo6T3V0cHV0RG93bnNjYWxlZAorICAgID47Cit9OworCisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBhNWQwYmUxNDI3MWY2MzA2ZjgzNmI4
ZmRiZDdkNDIwZjI5NTI0NmVhLi5lZjExYjA4MTAyNjc4ODZhNjZhNjc5MzEwNGIwMTM0YjBhMGRk
MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTMxLDYgKzMxLDEwIEBAIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHku
Y3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCitHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAorR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC0zOSw2
ICs0Myw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwCiAKKwogTmV0d29ya1Byb2Nlc3MvQWRDbGlj
a0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRy
YWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
CkBAIC01MzQsNiArNTM5LDEwIEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKK1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnkuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAK
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgQG5vLXVu
aWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
CmluZGV4IDc4OTdlMjhlM2M4Y2EyMjc0NTFmZDU3NDFmN2RkMTU1Y2M3ZGUxNWYuLjM0M2JhMWIx
MDM3MzI0MjViNjAyNzdlOGY1ODEwZjE3ZDgxYWFiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW1wb3J0ICJQYWdlQ2xpZW50LmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNp
bXBvcnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCkBAIC0xODMsMTMgKzE4
NCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhZ0NhcmV0UmVjdChjb25zdCBJbnRSZWN0
JiBkcmFnQ2FyZXRSZWN0KQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFj
aG1lbnQ+JiYgYXR0YWNobWVudCwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBXZWJQYWdlUHJveHk6
OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNo
bWVudCwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQogewogICAgIGlmIChkYXRhUmVmZXJl
bmNlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXpl
KCkpOwotICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NG
aWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKV0pOworICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmRhdGFSZWZlcmVuY2UuYnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCldKTsKICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6
cHJlZmVycmVkRmlsZU5hbWVdOwogICAgIGF0dGFjaG1lbnQtPnNldEZpbGVXcmFwcGVyKGZpbGVX
cmFwcGVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGY5NzFmOTZmNGRmODNlYmY1MDViMmRkYzRhZTI3ZTZjYTdkNWNjNzUuLjBmYmYwMzUy
MmU1ZWY5NWFkMjdmYzU1MTlkOGY2ZjBmZTE5MTUyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjkwNiwxMyArNjkwNiwxMyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6dm9pZENhbGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+
cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2so
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERhdGFDYWxsYmFjaz4o
Y2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0
ZShkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKKyAg
ICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6RGF0YTo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgp
KSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmJvb2xDYWxsYmFjayhib29sIHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtOTA4
MSw3ICs5MDgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24o
Y29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zmlu
aXNoZWRMb2FkaW5nSWNvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQsIGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBkYXRhQ2FsbGJhY2soZGF0YSwgY2Fs
bGJhY2tJRCk7CiB9CkBAIC05MzEyLDcgKzkzMTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50
LAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVz
KGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgp
LCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92
ZShkYXRhUmVmZXJlbmNlKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJv
eHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVy
cmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSkK
IHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgSWRlbnRpZmllclRvQXR0YWNobWVudE1h
cDo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CiAKQEAgLTk0MTksNyArOTQxOSw3IEBAIFdlYlBh
Z2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMgV2ViUGFnZVByb3h5Ojp3
aWxsVXBkYXRlQXR0YWNobWVuCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKQordm9pZCBXZWJQYWdl
UHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjMxNTQ1NDhh
MDhiNTg4ZGZiMzQ2MjYxYmM3ZGUzZGJiNzU0ZjZjZi4uZjMzMmM1ZDIwZGJhOGYxZGFmMjczYjBj
NmYxZTVjOGIyYmZkZTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTE5Myw2ICsxOTMsNyBAQCBlbnVtIGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50
OF90OwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZl
cmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xNTAxLDcgKzE1MDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBm
aW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJ
RCwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAKICAgICB2b2lkIHNl
dEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBzZXRXaW5kb3dGcmFtZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKTsKQEAgLTIwMDUsNyArMjAwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKTsKIAog
ICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOwotICAgIHZvaWQgZGF0YUNhbGxiYWNr
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZGF0YUNh
bGxiYWNrKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYs
IENhbGxiYWNrSUQpOwogICAgIHZvaWQgYm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQp
OwpAQCAtMjE4MywxMiArMjE4NCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcEFsbFVSTFNj
aGVtZVRhc2tzKFdlYlByb2Nlc3NQcm94eSogPSBudWxscHRyKTsKIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJv
bURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFt
ZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbUZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YShWZWN0b3I8V2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsKICAgICB2b2lkIGNsb25lQXR0YWNobWVudERhdGEo
Y29uc3QgU3RyaW5nJiBmcm9tSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0b0lkZW50aWZpZXIp
OwogCi0gICAgdm9pZCBwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2ht
ZW50PiYmLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKKyAgICB2b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6
OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcGxhdGZvcm1SZWdpc3Rl
ckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCk7CiAgICAgdm9pZCBwbGF0Zm9ybUNsb25lQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50
PiYmIGZyb21BdHRhY2htZW50LCBSZWY8QVBJOjpBdHRhY2htZW50PiYmIHRvQXR0YWNobWVudCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBlMzlkYzI1YmJkOGY4YjE1ZDY2ODE4ZjZkNmQ4MmEzYjU2OTk5NDkyLi5hNWU2Zjk2
NTExZTUwYTgxNDNkYjZmMmFkM2UyNjRlOTJiOWFhYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MzAsNyArNTMwLDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KQogCiAgICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihzdHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24g
aWNvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgRmluaXNoZWRMb2FkaW5n
SWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGEpOworICAgIEZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBEaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyY2NmYjY1YTg0YTI3Y2Zi
ZTc2NWJmNzViOTE2YzY1MzEyM2Y2MzI0Li5kZDI4ZWJlMDk0MTE1ZjU2ZGViZWU4MTFkYThhMjM1
NDFmNDUxNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE2OTUsNiArMTY5NSw3IEBACiAJCUNEMTlEMkVBMjA0NjQwNkYwMDE3MDc0
QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTlEMkU4MjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxs
c2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDRDI4NjVFRTIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rh
c2tTdGF0ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2Vy
dmVyLmggKi87IH07CiAJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVy
Lm1tICovOyB9OworCQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENENDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwODFFNzBE
MDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjA2MUU3MEQwNUYwMDAwOTA2NiAv
KiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovOyB9OwogCQlDRDQ5MUIwRDFFNzMyRTREMDAw
MDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEIxRTczMkU0
RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKIAkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENENDkxQjBDMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1l
c3NhZ2VzLmggKi87IH07CkBAIC0xNzE3LDYgKzE3MTgsMjAgQEAKIAkJQ0RBMjlBMkIxQ0JFQjY3
QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEyNzFDQkVCNjdB
MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsK
IAkJQ0RBOTNEQjAyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3Rp
Y1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0
aWNQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hl
dXJpc3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNl
Y2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovOyB9OworCQlDREFDMjBCNDIzRkI1OEYyMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlUHJveHkuaCAqLzsgfTsKKwkJQ0RBQzIwQzMyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBDNDIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5o
ICovOyB9OworCQlDREFDMjBDNTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
QzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCAqLzsgfTsK
KwkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkEyM0ZDMkY3NDAwMjFERUUz
IC8qIFJlbW90ZUNETS5oICovOyB9OworCQlDREFDMjBDOTIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwQ0EyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovOyB9OworCQlDREFDMjBDRDIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzAyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnkuaCAqLzsgfTsKKwkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDRjIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIu
aCAqLzsgfTsKKwkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREFDMjBGMjIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRjUyM0ZDMzgzQjAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OworCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RBQzIwRkEyM0ZD
NzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEVGMjNGQzM4Mzkw
MDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNE
QzI4MzFEMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI4MzFCMjAxQkQ3OUQw
MEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAqLzsgfTsKIAkJQ0RDQTg1QzkxMzJB
QkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5
NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi87IH07CiAJCUNFMTFBRDUy
MUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVT
aWduaW5nLmggKi87IH07CkBAIC00OTQ1LDYgKzQ5NjAsMTAgQEAKIAkJQ0QxOUQyRTkyMDQ2NDA2
RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwOyBwYXRoID0gaW9zL2Z1bGxz
Y3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0QyODY1RUMyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVP
YnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFBy
b2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NU
YXNrU3RhdGVPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYx
N0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgwMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNENDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0Q0NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkxQjA1MUU3MEQwNUYwMDAwOTA2
NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNENDkxQjA2MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDQ5MUIwQTFF
NzMyRDEyMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00OTg2LDYgKzUwMDUsNDMgQEAKIAkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAx
Q0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2Vz
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNE
QTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJh
bWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFt
ZXRlcnMuaDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3Rp
Y1BhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBOTNEQUYyMkY4
QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVy
cy5jcHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQ
YXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwNzgyM0ZC
MUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDgyMjNGQjIx
MzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Q
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA4MzIzRkIyMTM0MDAy
MURFRTMgLyogUmVtb3RlQ0RNUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RN
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA4NjIzRkIyMTU4
MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNUHJv
eHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFEMjNG
QjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUUyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFG
MjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIxMjNGQjU4RTIwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
bW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI2MjNGQzJGNzMwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0
YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCODIzRkMyRjczMDAy
MURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3Rvcnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCQTIzRkMyRjc0MDAyMURF
RTMgLyogUmVtb3RlQ0RNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCQjIzRkMyRjc0MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJFMjNGQzJGNzQwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkYyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMx
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMyMjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBQzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUMy
M0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBFRTIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFj
dG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNz
YWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
UHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwRjEyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVz
c2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjMyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETVByb3h5TWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjUyM0ZDMzgzQjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY2MjNG
QzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMjgzMUIy
MDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL1dLRnVsbHNj
cmVlblN0YWNrVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREMyODMxQzIw
MUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4v
V0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REMzODJGNzE3MjExNTA2MDA4QTJGQzMgLyogQ0ZOZXR3b3JrLmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gQ0ZOZXR3b3JrLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07
CkBAIC01MjY2LDYgKzUzMjIsMjAgQEAKIAkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyog
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMDdCMUQwNEIyM0QzOEZDRTAwMzk5
QTZFIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzky
MzE0RTIzOUQ1RjUzMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ci5oICovLAorCQkJCUNEQUMyMEJGMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uY3BwICov
LAorCQkJCUNEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLywKKwkJCQlD
REFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oICovLAor
CQkJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmNwcCAqLywK
KwkJCQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovLAor
CQkJCUNEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggKi8s
CisJCQkJQ0RBQzIwQkIyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmNwcCAq
LywKKwkJCQlDREFDMjBCNzIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCAq
LywKKwkJCQlDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJFMjNGQzJGNzQwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICovLAorCQkJCUNEQUMyMEJEMjNGQzJGNzQw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLywKKwkJCQlDRDQ2NjE3RjI0
MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluICov
LAorCQkJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyLmggKi8sCiAJCQkJMDdCOTNGRjUyM0FGMENCODAwMzZGOEVBIC8qIFJlbW90
ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTA3OTIzMTMwMjM5QjNCMEMwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwICovLAogCQkJCTA3OTIzMTM0MjM5
QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLywKQEAgLTUyOTEs
NiArNTM2MSwxOCBAQAogCQkJCTFEMEVDRUE5MjNGQzg0QkIwMEQxNzJGNiAvKiBjb2NvYSAqLywK
IAkJCQkwNzFCQzU3RTIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNw
cCAqLywKIAkJCQkwNzFCQzU3RjIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1By
b3h5LmggKi8sCisJCQkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnlQcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oICovLAorCQkJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQjMyM0ZCNThGMjAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEIyMjNG
QjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi8sCisJCQkJQ0RBQzIw
QjEyM0ZCNThFMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4g
Ki8sCisJCQkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcCAqLywKKwkJCQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLywKKwkJCQlDREFDMjBBRDIzRkI1ODJCMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJ
Q0RBQzIwODMyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKKwkJCQlD
REFDMjA4MjIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLywKKwkJCQlDREFD
MjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJMDcyNUVGQUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcCAqLywKIAkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05NjI1LDYg
Kzk3MDcsMjEgQEAKIAkJCQkxQTA0M0I1QzEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkxQThFRkE2RTEyNTJCODQxMDBGNzA2N0YgLyogUGx1
Z2luUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3
MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjIyM0ZDMzgzQTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJ
CQkJQ0RBQzIwRjMyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJQ0RBQzIwRUUyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEY1MjNGQzM4M0IwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlD
REFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2Vz
LmggKi8sCisJCQkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlD
RDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2Fn
ZXMuaCAqLywKKwkJCQlDRDQ2NjE4MDI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKKwkJCQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYxMjNGQzM4M0EwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNE
QUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVz
c2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyog
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJMEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHlNZXNzYWdlcy5oICovLAogCQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTA1MjQsNiAr
MTA2MjEsMTYgQEAKIAkJCQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90
dGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2
IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgyMjJCMzUxNUUw
MDhEMEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCUNEQUMyMEM3MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0YyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM0
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzMyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQjQy
M0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3
QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QUVBMTY0QjNBODgw
MDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTEy
MjIwLDYgKzEyMzI3LDExIEBACiAJCQkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFByZWZl
cmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENTRDMzFCMjEyRjREQTYwMDQ5
QzE3NCAvKiBQcm9jZXNzTGF1bmNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QyODY1RUYy
MjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjgyM0ZDNzI2
QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0Q0NjYxODMyNDAxMEE2NzAwNDdDQTM1IC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFD
MjBGOTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFE
RUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3
cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRl
eCAzZjViNjE4MWUwNmUwYTg0Njg4YmRhOTE2ZjEwZDg3YTYxZDE0YmU3Li45MmZmNzdlYmM3NzMz
YTUxZmIxN2M3YTc2M2M3Njg3NmM2MmFlY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZQcml2
YXRlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKaW5kZXggOGRmZjUwZjMwODhlZDQ1YzU5MGVjODFlMmMwOWExMzhiYTdhNTM1Zi4uYzYwMjRj
YWQ5YTk1NzQyYmY3ZDYyYjE5MjY5YTdjYjY2Y2YwNzIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTMzLDYg
KzMzLDggQEAKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3MuaCIKICNpbmNsdWRlICJMaWJXZWJS
VENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAtNDQsNiArNDYsMTAgQEAKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMDEsNiArMTA3LDEyIEBAIHZvaWQgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpECiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVDRE1GYWN0
b3J5PigpLT5kaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNmY2M2IyMzBmNjI3ZDEyY2M2ZWMz
ZWY3ZGQ2Y2U2YWQxMjk3YWE2YS4uMzMwZDI2ZGFhMjA0ZGNhNDE3Y2JiOTI4Zjg5YzY2ZDJlMWFh
NDkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNDksNiArNDksMTAgQEAK
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKIGV4dGVybiBXVEZMb2dDaGFubmVsIExvZ01lZGlhOwpAQCAtMTE2LDE4ICsxMjAsMTcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bG9hZChjb25zdCBVUkwmIHVybCwgY28KICAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkpIHsKICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgYXV0byBmaWxl
U3lzdGVtUGF0aCA9IHVybC5maWxlU3lzdGVtUGF0aCgpOwotICAgICAgICBib29sIGNyZWF0ZWRF
eHRlbnNpb24gPSBmYWxzZTsKIAorICAgICAgICBhdXRvIGNyZWF0ZUV4dGVuc2lvbiA9IFsmXSB7
CiAjaWYgSEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9OX1RPX1BST0NFU1NfQllfQVVE
SVRfVE9LRU4pCi0gICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdlci5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKTsKLSAgICAgICAgQVNTRVJUKGF1ZGl0VG9rZW4pOwot
ICAgICAgICBpZiAoYXVkaXRUb2tlbikKLSAgICAgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGZpbGVTeXN0
ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCksIGhhbmRsZSk7Ci0gICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGlmIChhdXRvIGF1ZGl0VG9rZW4gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5hdWRpdFRva2VuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oZmlsZVN5c3RlbVBhdGgsIGF1ZGl0
VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogI2VuZGlmCi0gICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRP
bmx5LCBoYW5kbGUpOworICAgICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZShmaWxlU3lzdGVtUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHks
IGhhbmRsZSk7CisgICAgICAgIH07CiAKLSAgICAgICAgaWYgKCFjcmVhdGVkRXh0ZW5zaW9uKSB7
CisgICAgICAgIGlmICghY3JlYXRlRXh0ZW5zaW9uKCkpIHsKICAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiVW5hYmxlIHRvIGNyZWF0ZSBzYW5kYm94IGV4dGVuc2lvbiBoYW5kbGUgZm9yIEdQVVBy
b2Nlc3MgdXJsLlxuIik7CiAgICAgICAgICAgICBtX2NhY2hlZFN0YXRlLm5ldHdvcmtTdGF0ZSA9
IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yOwogICAgICAgICAgICAgbV9w
bGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKQEAgLTg5OSwxOSArOTAyLDIyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgpCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5z
dGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkK
KyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OkNkbUluc3RhbmNlQXR0YWNoZWQoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3Rh
bmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNl
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNl
PihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZURldGFjaGVkKGRvd25jYXN0PFJlbW90ZUNETUlu
c3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3Rh
bmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0
aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6QXR0ZW1wdFRv
RGVjcnlwdFdpdGhJbnN0YW5jZShkb3duY2FzdDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2Up
LmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtOTE5LDYgKzkyNSwxMiBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQogICAgIG1fcGxheWVy
LT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0
YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSYmIGluaXREYXRhKQoreworICAgIGF1dG8gaW5pdERh
dGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEu
c2l6ZSgpKTsKKyAgICBtX3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5p
dERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSk7Cit9CisKIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpAQCAtOTI2LDYgKzkzOCwxMyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBz
aG91bGQpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6OlNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKSwgbV9pZCk7
Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDEzMmYzMGFiMjliNmU1MDlmMTEzOTQ5MjU4
MGE2ZTM2NzFjYzc5MDkuLmZlMjkzMTgwZWRiOTVjMjNhNzYzNDdmMTMwYTdjNDZjNGI4ZDA0Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMTMyLDYgKzEzMiw3IEBAIHB1YmxpYzoK
IAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdm9pZCB3YWl0aW5nRm9yS2V5Q2hh
bmdlZCgpOworICAgIHZvaWQgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3Ry
aW5nJiwgSVBDOjpEYXRhUmVmZXJlbmNlJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMzE3LDYgKzMxOCwxMCBAQCBwcml2YXRlOgogICAgIGJv
b2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lk
IHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkgZmluYWw7CisjZW5kaWYKKwog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24oKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4IGU4ODk3YjZhMTBhMTBkNGI3
MDA5Mjk4YzdhYTI3MjhiZmUxMTI5N2EuLjMzZTJhOThkNDc5ODc5ZDIxNWI0ZDA0MWFmZTdhYjUw
ZTgzNjJkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmlu
CkBAIC03NSw2ICs3NSw3IEBAIG1lc3NhZ2VzIC0+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBO
b3RSZWZDb3VudGVkIHsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgV2FpdGlu
Z0ZvcktleUNoYW5nZWQoKQorICAgIEluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKFN0cmlu
ZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBpbml0RGF0YSkKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWI1ZGFhOGEy
OWJjZDk4ZTYyNzA5MzE3NWM5ZjcwNjViOWE3MGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC0wLDAgKzEsMTc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIK
KyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1SZXN0cmljdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IFJlbW90ZUNETTo6Y3JlYXRlKFdlYWtQ
dHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQs
IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPihuZXcgUmVtb3RlQ0RNKFdURk1vdmUoZmFjdG9yeSks
IFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETTo6
UmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1J
ZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQor
ICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2lkZW50aWZpZXIoV1RG
TW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkK
K3sKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAoreworICAgIGlmICgh
bV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1cHBvcnRzIHsg
ZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzQ29u
ZmlndXJhdGlvbjo6UmVwbHkoc3VwcG9ydHMpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBz
dXBwb3J0czsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhS
ZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgc3VwcG9ydHMg
eyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c0NvbmZpZ3Vy
YXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyksIE1lc3Nh
Z2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9u
czo6UmVwbHkoc3VwcG9ydHMpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0czsK
K30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBDRE1TZXNzaW9uVHlwZSYgdHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdXBwb3J0cyB7IGZhbHNlIH07CisgICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bih0eXBlLCBjb25maWd1cmF0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0
c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb246OlJlcGx5KHN1cHBvcnRzKSwgbV9pZGVudGlm
aWVyKTsKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgZGF0YSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBl
cy5jb250YWlucyh0eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdXBw
b3J0cyB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzSW5p
dERhdGEodHlwZSwgZGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNTZXNz
aW9uVHlwZVdpdGhDb25maWd1cmF0aW9uOjpSZXBseShzdXBwb3J0cyksIG1faWRlbnRpZmllcik7
CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OmRp
c3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9u
cykgY29uc3QKK3sKKyAgICBDRE1SZXF1aXJlbWVudCByZXF1aXJlbWVudCB7IENETVJlcXVpcmVt
ZW50OjpOb3RBbGxvd2VkIH07CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBy
ZXF1aXJlbWVudDsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpEaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSwgTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjpEaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQ6OlJl
cGx5KHJlcXVpcmVtZW50KSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVxdWlyZW1lbnQ7
Cit9CisKK0NETVJlcXVpcmVtZW50IFJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1l
bnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3Qg
Q0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0Cit7CisgICAgQ0RNUmVxdWlyZW1l
bnQgcmVxdWlyZW1lbnQgeyBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCB9OworICAgIGlmICgh
bV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gcmVxdWlyZW1lbnQ7CisKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1Qcm94eTo6UGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwg
cmVzdHJpY3Rpb25zKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpQZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudDo6UmVwbHkocmVxdWlyZW1lbnQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVy
biByZXF1aXJlbWVudDsKK30KKworYm9vbCBSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmll
cnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBmbGFnIHsgZmFsc2UgfTsKKyAgICBtX2Zh
Y3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVDRE1Qcm94eTo6RGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9y
aWdpbkFuZENsZWFyYWJsZShjb25maWd1cmF0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5
OjpEaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlOjpS
ZXBseShmbGFnKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gZmxhZzsKK30KKworUmVmUHRy
PENETUluc3RhbmNlPiBSZW1vdGVDRE06OmNyZWF0ZUluc3RhbmNlKCkKK3sKKyAgICBpZiAoIW1f
ZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIgaWQ7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb247CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkNyZWF0ZUluc3RhbmNlKCks
IE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6Q3JlYXRlSW5zdGFuY2U6OlJlcGx5KGlkLCBjb25m
aWd1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZShtYWtlV2Vha1B0
cihtX2ZhY3RvcnkuZ2V0KCkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFt
X2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6Okxv
YWRBbmRJbml0aWFsaXplKCksIG1faWRlbnRpZmllcik7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBzYW5pdGl6ZWRSZXNwb25z
ZTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2FuaXRpemVSZXNwb25zZShyZXNwb25z
ZSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2FuaXRpemVSZXNwb25zZTo6UmVwbHkoc2Fu
aXRpemVkUmVzcG9uc2UpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBXVEZNb3ZlKHNhbml0
aXplZFJlc3BvbnNlLmJ1ZmZlcigpKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVDRE06
OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBjb25zdAoreworICAg
IGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZWRTZXNzaW9uSWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6OlNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Q
cm94eTo6U2FuaXRpemVTZXNzaW9uSWQ6OlJlcGx5KHNhbml0aXplZFNlc3Npb25JZCksIG1faWRl
bnRpZmllcik7CisgICAgcmV0dXJuIHNhbml0aXplZFNlc3Npb25JZDsKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZmM2MzNGVkMmMyMDIzYWRkMjBhZWE4OWM3ZGU0YTdhYzJjNGJiZTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUg
IlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RN
UHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBSZW1vdGVDRE0gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJpdmF0
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IGNyZWF0
ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVt
b3RlQ0RNQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE0oKSA9IGRlZmF1
bHQ7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4m
JiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOworCisg
ICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0
aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6
Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBXZWJD
b3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29u
c3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNE
TVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50
IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRD
bGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2Uo
KSBmaW5hbDsKKyAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CisgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworCisgICAgVmVjdG9yPEF0b21T
dHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQorICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZp
Z3VyYXRpb24uc3VwcG9ydGVkUm9idXN0bmVzc2VzOyB9CisgICAgYm9vbCBzdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBw
b3J0c1NlcnZlckNlcnRpZmljYXRlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1Nlc3Npb25zOyB9CisK
KyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1J
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIG1fY29u
ZmlndXJhdGlvbjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM2MmM0NjRmZGZkY2Q4YzM1NzU2YjBlMzhkYWQwZjg5MzkwNTg4NjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNv
bmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisK
KyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmln
dXJhdGlvbiB7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7
CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICBib29s
IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uczsK
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkSW5pdERh
dGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAg
ICAgIGVuY29kZXIgPDwgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGVuY29k
ZXIgPDwgc3VwcG9ydHNTZXNzaW9uczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVj
b2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0
cmluZz4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9y
dGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0
b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgZGVjb2RlciA+
PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkUm9idXN0bmVz
c2VzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxib29sPiBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgZGVjb2RlciA+PiBz
dXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1NlcnZlckNl
cnRpZmljYXRlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXNzaW9uczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBw
b3J0c1Nlc3Npb25zOworICAgICAgICBpZiAoIXN1cHBvcnRzU2Vzc2lvbnMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAg
V1RGTW92ZSgqc3VwcG9ydGVkSW5pdERhdGFUeXBlcyksCisgICAgICAgICAgICBXVEZNb3ZlKCpz
dXBwb3J0ZWRSb2J1c3RuZXNzZXMpLAorICAgICAgICAgICAgKnN1cHBvcnRzU2VydmVyQ2VydGlm
aWNhdGVzLAorICAgICAgICAgICAgKnN1cHBvcnRzU2Vzc2lvbnMsCisgICAgICAgIH19OworICAg
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI0YWY4M2UzODI5ZWVhMzczZWNjNDZjMjY4MDU1ZTY5NjI4YTkzOWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUZhY3RvcnkuY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0
aW5ncy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK1JlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkoV2ViUHJvY2VzcyYgcHJvY2Vz
cykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5Ojp+
UmVtb3RlQ0RNRmFjdG9yeSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5Ojp1
cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJDb3JlOjpTZXR0aW5ncyYgc2V0dGluZ3MpCit7Cisg
ICAgaWYgKHNldHRpbmdzLnVzZUdQVVByb2Nlc3NGb3JNZWRpYSgpKSB7CisgICAgICAgIGF1dG8m
IGZhY3RvcmllcyA9IENETUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICAgICAg
ZmFjdG9yaWVzLmNsZWFyKCk7CisgICAgICAgIGZhY3Rvcmllcy5hcHBlbmQodGhpcyk7CisgICAg
fSBlbHNlCisgICAgICAgIENETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKCk7Cit9CisKKworY29u
c3QgY2hhciogUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVy
biAiUmVtb3RlQ0RNRmFjdG9yeSI7Cit9CisKK0dQVVByb2Nlc3NDb25uZWN0aW9uJiBSZW1vdGVD
RE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1fcHJvY2Vz
cy5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworfQorCitib29sIFJlbW90ZUNETUZhY3Rv
cnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIGJv
b2wgc3VwcG9ydGVkID0gZmFsc2U7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNL
ZXlTeXN0ZW0oa2V5U3lzdGVtKSwgTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6U3Vw
cG9ydHNLZXlTeXN0ZW06OlJlcGx5KHN1cHBvcnRlZCksIHsgfSk7CisgICAgcmV0dXJuIHN1cHBv
cnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IFJlbW90ZUNETUZhY3Rvcnk6
OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBSZW1vdGVDRE1JZGVu
dGlmaWVyIGlkOworICAgIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAg
ICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE0oa2V5U3lzdGVtKSwgTWVzc2FnZXM6OlJl
bW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNOjpSZXBseShpZCwgY29uZmlndXJhdGlvbiks
IHsgfSk7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IFJlbW90ZUNETTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBXVEZNb3ZlKGlkKSwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6YWRkU2Vzc2lv
bihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkLCBSZWY8UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uPiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNvbnRh
aW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOworfQor
Cit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhp
ZCkpOworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0
b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nl
c3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lv
bi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjY2ViZTg0YzJiMTJhZDQyMzgzOGEzNjI3YTA2NGVl
YmQ0NzA5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBD
b25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOworY2xhc3MgUmVtb3RlQ0RNOworY2xhc3MgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOworY2xhc3MgV2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3RlQ0RN
RmFjdG9yeSBmaW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6OkNETUZhY3RvcnkKKyAgICAsIHB1
YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudAorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJl
bW90ZUNETUZhY3Rvcnk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBSZW1vdGVDRE1GYWN0b3J5KFdlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFs
IH5SZW1vdGVDRE1GYWN0b3J5KCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVu
dE5hbWUoKTsKKyAgICBXZWJQcm9jZXNzJiBwcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9j
ZXNzOyB9CisKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KTsKKworICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGluZ3Mm
KTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+JiYpOworICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsK
KworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4gY3Jl
YXRlQ0RNKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0o
Y29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+PiBtX3Nlc3Npb25z
OworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETT4+IG1fY2RtczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWUzYTM4MTljMTcwN2I1NThiM2ZkOWFh
YTg4MTYzMTU4MzkyZmFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlQ0RNSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgUmVtb3RlQ0RNSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RN
SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNzM5ZjAzZGM1OWVhZDcxZWQ3YTBmYzAzYjZjYzE5N2Rh
YWQ1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5j
bHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWY8UmVtb3RlQ0RNSW5zdGFuY2U+IFJlbW90ZUNETUlu
c3RhbmNlOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRp
b24mJiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNE
TUluc3RhbmNlKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlOjpSZW1vdGVDRE1JbnN0YW5jZShXZWFr
UHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyJiYgaWQsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24p
CisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihX
VEZNb3ZlKGlkKSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KQoreworfQorCithdXRvIFJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbikgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJl
dHVybiBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0
b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uOjpSZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOworICAg
IHJldHVybiBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK2F1dG8gUmVtb3Rl
Q0RNSW5zdGFuY2U6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dl
ZCkgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVy
biBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5
LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQo
YWxsb3dlZCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXREaXN0aW5jdGl2
ZUlkZW50aWZpZXJzQWxsb3dlZDo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQorCithdXRvIFJlbW90
ZUNETUluc3RhbmNlOjpzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dlZCkgLT4g
U3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBGYWls
ZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6U2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChhbGxvd2VkKSwgTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ6
OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/
IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSkg
LT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBG
YWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuZ2V0
KCkpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U2VydmVyQ2VydGlmaWNh
dGU6OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRl
ZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkgLT4gU3VjY2Vzc1ZhbHVl
Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAgICBi
b29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpLCBNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeTo6UmVwbHkoc3VjY2VlZGVkKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOwor
fQorCitSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5j
ZTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZDsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uKCksIE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBseShpZCks
IG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUobWFrZVdl
YWtQdHIobV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCkpOworICAgIG1fZmFjdG9yeS0+YWRk
U2Vzc2lvbihpZCwgc2Vzc2lvbi5jb3B5UmVmKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQor
CithdXRvIFJlbW90ZUNETUluc3RhbmNlOjpzZXRIRENQU3RhdHVzKEhEQ1BTdGF0dXMgc3RhdHVz
KSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJu
IEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRIRENQU3RhdHVzKHN0YXR1cyksIE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRIRENQU3RhdHVzOjpSZXBseShzdWNjZWVkZWQpLCBt
X2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVkODI2YmFhNDEyZDU2
MGUwYzA2OThhMGUyZGM1ZTgwZTIwOGJlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtMCwwICsxLDY2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1J
bnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFu
Y2UgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNSW5zdGFuY2UgeworcHVibGljOgorICAgIHZp
cnR1YWwgflJlbW90ZUNETUluc3RhbmNlKCkgPSBkZWZhdWx0OworICAgIHN0YXRpYyBSZWY8UmVt
b3RlQ0RNSW5zdGFuY2U+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllciYmLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24m
Jik7CisKKyAgICBjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVD
RE1JbnN0YW5jZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciYmLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICBJ
bXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KKyAgICBTdWNjZXNzVmFsdWUgaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGluY3RpdmVJZGVudGlmaWVy
c0FsbG93ZWQoYm9vbCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQoYm9vbCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1
ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtl
eVN5c3RlbTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0SERDUFN0YXR1cyhIRENQU3Rh
dHVzKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5Owor
ICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisKK30KKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19DRE1fSU5TVEFOQ0UoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZSwgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlKQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1
MzJkNzJlN2NlNGI4NTNmMmQzYjkzNDU1ZTE5MjgxYzQxOWZhNDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29u
ZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwor
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24geworICAgIFN0cmluZyBrZXlTeXN0ZW07CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBlbmNvZGVyIDw8IGtleVN5c3RlbTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4ga2V5U3lzdGVtOworICAgICAgICBkZWNvZGVyID4+IGtleVN5c3RlbTsK
KyAgICAgICAgaWYgKCFrZXlTeXN0ZW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqa2V5U3lzdGVtKSwK
KyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZmZGU2OTFjM2U4
OTViODg1OWU2MjA1YTcxZTExNWZhOWI0ZmUwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3Rm
L09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5
cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA1Y2NiZTIzOTZmOWIyZjg2YzljNmIyNmYzM2UxYmEy
MzViMDE3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1Jl
ZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3Jl
YXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpKSk7Cit9
CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyJiYgaWQpCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAg
ICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAg
Y2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZh
aWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXRE
YXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wgc3VjY2VlZGVk
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtZXNzYWdlLmJ1ZmZlcigpKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwg
RmFpbGVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFj
ayhtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHNlc3Npb25JZCwgbmVlZHNJbmRp
dmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBt
X2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBXVEZNb3ZlKHJlc3Bv
bnNlKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNzaW9uV2FzQ2xv
c2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRv
dWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBi
b29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHNlc3Npb25XYXNDbG9z
ZWQsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RG
TW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBt
X2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNl
c3Npb24oTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVyKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklkLCBvcmlnaW4p
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rv
cj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBP
cHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZh
aWx1cmUgbG9hZEZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNo
YW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSks
IHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCwgbG9hZEZhaWx1cmUpOworICAgIH0sIG1f
aWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY2Fs
bGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6Q2xvc2VTZXNzaW9uKHNlc3Npb25JZCksIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAg
ICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5
cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1f
ZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayh7IH0sIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBl
KSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFu
Z2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3Nh
Z2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAobWVzc2Fn
ZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCisgICAgICAgICAgICByZWFsTWVzc2FnZSA9
IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBjYWxs
YmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRl
ZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6U3RvcmVSZWNvcmRP
ZktleVVzYWdlKHNlc3Npb25JZCksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlT
dGF0dXNlcykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVL
ZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSB0eXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQoreworICAgIGlmIChtX2Ns
aWVudCAmJiBtZXNzYWdlLmJ1ZmZlcigpKQorICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2Uo
dHlwZSwgbWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKwordm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c2Vzc2lvbklk
Q2hhbmdlZChzZXNzaW9uSWQpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjQ5ODc5ZjQ4MzdmYzMyMmYxZDExNWI2ODgxMDQ5OTVkZDA5NmNk
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gZmluYWwgOiBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCAgcHVibGljIFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXImJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1G
YWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZh
Y3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJik7CisKKyAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAg
IHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpOworICAgIHZvaWQgc2Vu
ZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSYmKTsKKyAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJik7CisK
KworICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
Q2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQor
ICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQorICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc3Rv
cmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBmaW5hbDsKKworICAg
IFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM4YzIzOTJlN2VmODYyMDQ2MjFkMjg0MTQzOGI1ZWRmNGQzODE1
MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisj
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24gTm90UmVmQ291bnRlZCB7CisgICAgVXBkYXRlS2V5U3RhdHVzZXMoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMpCisg
ICAgU2VuZE1lc3NhZ2UoZW51bTp1aW50OF90IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5cGUs
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlKQorICAgIFNlc3Npb25JZENo
YW5nZWQoU3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NmFjZDEyNjVhZjBjODQ2Mzg4
ZTIzZjljY2ExNmQ5MDIzMzhmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYv
T2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllckNhY2hlZFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y0ZjBkZTEw
ZDg4NmZmOWNkMTM0ZmZlYjcxODkyN2FjYmY4NzgwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0
ZS5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyRW51bXMu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgorI2luY2x1ZGUgPHd0
Zi9NZWRpYVRpbWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVNZWRp
YVBsYXllckNhY2hlZFN0YXRlIHsKKyAgICBNZWRpYVRpbWUgY3VycmVudFRpbWU7CisgICAgTWVk
aWFUaW1lIGR1cmF0aW9uOworICAgIE1lZGlhVGltZSBtaW5UaW1lU2Vla2FibGU7CisgICAgTWVk
aWFUaW1lIG1heFRpbWVTZWVrYWJsZTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXMg
YnVmZmVyZWRSYW5nZXM7CisgICAgYm9vbCBwYXVzZWQgeyB0cnVlIH07CisgICAgYm9vbCBsb2Fk
aW5nUHJvZ3Jlc3NlZCB7IGZhbHNlIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
ICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBl
bmNvZGVyIDw8IGN1cnJlbnRUaW1lOworICAgICAgICBlbmNvZGVyIDw8IGR1cmF0aW9uOworICAg
ICAgICBlbmNvZGVyIDw8IG1pblRpbWVTZWVrYWJsZTsKKyAgICAgICAgZW5jb2RlciA8PCBtYXhU
aW1lU2Vla2FibGU7CisgICAgICAgIGVuY29kZXIgPDwgYnVmZmVyZWRSYW5nZXM7CisgICAgICAg
IGVuY29kZXIgPDwgcGF1c2VkOworICAgICAgICBlbmNvZGVyIDw8IGxvYWRpbmdQcm9ncmVzc2Vk
OworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRp
b25hbDxSZW1vdGVNZWRpYVBsYXllckNhY2hlZFN0YXRlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gY3VycmVudFRpbWU7CisgICAg
ICAgIGRlY29kZXIgPj4gY3VycmVudFRpbWU7CisgICAgICAgIGlmICghY3VycmVudFRpbWUpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE1lZGlh
VGltZT4gZHVyYXRpb247CisgICAgICAgIGRlY29kZXIgPj4gZHVyYXRpb247CisgICAgICAgIGlm
ICghZHVyYXRpb24pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IE9wdGlvbmFsPE1lZGlhVGltZT4gbWluVGltZVNlZWthYmxlOworICAgICAgICBkZWNvZGVyID4+
IG1pblRpbWVTZWVrYWJsZTsKKyAgICAgICAgaWYgKCFtaW5UaW1lU2Vla2FibGUpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4g
bWF4VGltZVNlZWthYmxlOworICAgICAgICBkZWNvZGVyID4+IG1heFRpbWVTZWVrYWJsZTsKKyAg
ICAgICAgaWYgKCFtYXhUaW1lU2Vla2FibGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcz4gYnVm
ZmVyZWRSYW5nZXM7CisgICAgICAgIGRlY29kZXIgPj4gYnVmZmVyZWRSYW5nZXM7CisgICAgICAg
IGlmICghYnVmZmVyZWRSYW5nZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHBhdXNlZDsKKyAgICAgICAgZGVjb2RlciA+PiBwYXVz
ZWQ7CisgICAgICAgIGlmICghcGF1c2VkKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBsb2FkaW5nUHJvZ3Jlc3NlZDsKKyAgICAgICAg
ZGVjb2RlciA+PiBsb2FkaW5nUHJvZ3Jlc3NlZDsKKyAgICAgICAgaWYgKCFsb2FkaW5nUHJvZ3Jl
c3NlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKworICAgICAgICByZXR1
cm4ge3sgV1RGTW92ZSgqY3VycmVudFRpbWUpLCBXVEZNb3ZlKCpkdXJhdGlvbiksIFdURk1vdmUo
Km1pblRpbWVTZWVrYWJsZSksIFdURk1vdmUoKm1heFRpbWVTZWVrYWJsZSksIFdURk1vdmUoKmJ1
ZmZlcmVkUmFuZ2VzKSwgV1RGTW92ZSgqcGF1c2VkKSwgV1RGTW92ZSgqbG9hZGluZ1Byb2dyZXNz
ZWQpIH19OworICAgIH0KKworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwCmluZGV4IGFlMDE2MWFhZDk0NzRkNmIwZjFmOTAwYjA1NDRmNTk4MGQzNjk4ZmYu
LmI5ZjRkMmE3ZTMyN2ViZTMyMGQ1N2U3NThiYWIwM2U1N2E2YWQ2NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVt
b3RlVmlkZW9TYW1wbGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAppbmRleCAwOWQ3OTg3MWY1YjZmMzg3ZDRmNWZiNjU1MWVmOWEwNDY3YzQ2M2I4Li40OGNhOWRl
OTlhYmMwYjA5NTIxMThlZGQ2YTE5YTJlYjkxODhiY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xODks
MTcgKzE4OSwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1fY29yZUxvYWRlci0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlJiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEgb2Ygc2l6ZSAlbHUgZm9yICclcyciLCBkYXRhLnNpemUoKSwgbV9jb3JlTG9hZGVy
LT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3Vs
ZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAog
ICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9j
b3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAg
ICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIo
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1
ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2ludGVyY2VwdENvbnRy
b2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxl
bmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAg
ICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ODNl
Mzc5Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2NmZiLi4yNjkwOGU4MjNkNzkyNDRlNTc4
NmRiMDRhNTk2OWVmMWZjNjU4MDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVy
ZW5jZTsKIH0KIApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBk
aWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2Vu
dCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
dm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCmluZGV4IDM0ZTg2YzExZTI0ODZjN2ExNjAzNmQ3YjQ2OGZiNzhkMjc1OGZkNjEuLmM1MGY1
NWFlOTI2M2MxMTY4MTQxYWE0NTcwYTJkZGVjNjE2NjQwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemUKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRS
ZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNp
emUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwor
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkUmVjZWl2ZURhdGEgeyB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0sIHN0
YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5OGIxNWI4N2ZjMTNkYTJkYmY0
NDNiYTk4YTRkODZkN2E5ZDM1NDE5Li4zZTE5OWM5YWY5OGM1ZDRiZDg4OWRhOTcyNTAzNTJkNGIy
ZDFiNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE5MTQsOSArMTkx
NCw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24odWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBTaGFyCiAgICAgYXV0byBjYWxsYmFja0lEID0gQ2Fs
bGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJZGVudGlmaWVyKTsKICAgICBpZiAoV2ViUGFn
ZSogd2ViUGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KSB7CiAgICAgICAgIGlmIChkYXRhKQotICAg
ICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExv
YWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpIH0pKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lE
LCB7ICpkYXRhIH0pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsg
bnVsbHB0ciwgMCB9KSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyB9KSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGU0NTgzNzQ5YjZmOTZiNWMxZGVkMWUwNmE0MzBhYWM4OTE1ODdiZmQuLjhmYmM3NDMxYmU3N2Ew
Yzk2MjVhZDMxODQ3ZmFlMzZjYTkwODNjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjAsNiArMzIwLDkgQEAKIAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNl
bmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzUwMCw3ICszNTAzLDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGF0YVJlZmVy
ZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CisgICAgICAgIGRhdGFSZWZlcmVuY2Ug
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKICNlbmRpZgogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNr
SUQpKTsKIH0KQEAgLTM1ODEsNyArMzU4NCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2
ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJCiAg
ICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7IENG
RGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0
TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBkYXRhUmVmZXJlbmNlID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CkBA
IC0zNjg1LDYgKzM2ODgsOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyPigpLT51cGRhdGVQcmVmZXJlbmNlcyhzZXR0aW5ncyk7CisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90
ZUNETUZhY3Rvcnk+KCktPnVwZGF0ZVByZWZlcmVuY2VzKHNldHRpbmdzKTsKKyNlbmRpZgogI2Vu
ZGlmCiB9CiAKQEAgLTQ5MTksNyArNDkyNSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9Q
REYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvCiB7
CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQ
YWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgcGRmUGFnZURh
dGEpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKHsgQ0ZE
YXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZE
YXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSwgY2FsbGJhY2tJRCkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKHsgU2hhcmVkQnVmZmVyOjpj
cmVhdGUocGRmUGFnZURhdGEuZ2V0KCkpIH0sIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpkcmF3UGFnZXNUb1BERkltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFp
blB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpCkBAIC02NTYzLDEyICs2NTY5LDEy
IEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRf
dCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0CiAgICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVS
ZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVy
bFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWlu
dDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3Zv
aWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJ
ZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZp
ZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAg
IEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNr
SWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpKTsKKyAgICBoYW5kbGVyLT50YXNr
RGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2l6ZSgpLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QgKj4oZGF0YS5kYXRhKCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1
cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2
NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTY3OTAs
NyArNjc5Niw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
T3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9z
aW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8
dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZW5j
bG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8g
YXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikp
IHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjN2NmMzhjNWJiYTIw
MWNlZDc4OGNkMDNkNWEyMDRkNGFjYTRmMmE3Li43M2M1OTJjYzg0Zjc0OGMyZjQ4OTk1ODY3YmU2
ZTJlOWFlZWFjMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0xNTUsNiArMTU1LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9u
OwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE5NCw3
ICsxMTk1LDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0
aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRf
dD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQpOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC0xNjc0LDcgKzE2
NzUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGly
ZWN0aW9uKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhh
bmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2
ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVy
LCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHVybFNj
aGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3Qg
dGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZv
aWQgc2V0SXNTdXNwZW5kZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNDdjOWMwOGFkZWU0NTg1ZDkxMzM0NmIxYWJkZWU4NjdjNWYxY2I1Ny4uYmYy
NGEyOWMzZTBhYjA0MjQzMzdlMDNmYmIyMzljNDgxMTkzNWI1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTc0LDYgKzE3NCwxMCBAQAogI2luY2x1ZGUgIkxp
YldlYlJUQ0NvZGVjcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
I2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0Vf
TE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAw
KQogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nl
c3Npb25JRD0lIiBQUkl1NjQgIl0gV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9H
X1NFU1NJT05fSUQsICMjX19WQV9BUkdTX18pCiAKQEAgLTI0MCw2ICsyNDQsMTAgQEAgV2ViUHJv
Y2Vzczo6V2ViUHJvY2VzcygpCiAgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI+KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgYWRk
U3VwcGxlbWVudDxSZW1vdGVDRE1GYWN0b3J5PigpOworI2VuZGlmCisKICAgICBHaWdhY2FnZTo6
Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391464</attachid>
            <date>2020-02-22 11:25:36 -0800</date>
            <delta_ts>2020-02-22 14:24:03 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208090-20200222112535.patch</filename>
            <type>text/plain</type>
            <size>267369</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE2ZGIxODY4MmIxZTRh
YzUyYzAyNWVmYmYwZWYxNTc0OGEzZWQ4NC4uZTNhYmRjNzRjYzU3OWY4ZDVmYTNjZDZiZjBiYTc0
YjAxMmI2NWNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5OjpyZXNldEZhY3Rvcmll
cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVxdWlyZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Up
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZFJvYnVzdG5lc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NETTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5z
ZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRlZFJvYnVzdG5lc3MgY29uc3QpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0xNCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIFFUS2l0IGZv
ciByZW5kZXJpbmcgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gY29udHJvbHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTYx
MDJiY2M4OGNhYjdiMDY4YjRmNGUyYjU5OTJmMDc3ZGQ0YmUzMC4uODk0MDM3MTdiNDA5MTcyZWQ1
MGU0MWYyZjNiMTJiYWRkOTkwNDcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMjcgQEAKKzIwMjAt
MDItMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBd
IEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90ZUNETUluc3Rh
bmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAgb2YgdGhlaXIg
YXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBleGlzdGluZyBD
RE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5IGJ5IGV4cGxpY2l0bHkgY2xlYXJp
bmcgb3V0IGFsbCB0aGUgZXhpc3RpbmcgCisgICAgICAgIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlz
IGVuYWJsZWQsIGFuZCByZXNldHRpbmcgdGhvc2UgZmFjdG9yaWVzIHRvIGRlZmF1bHQgd2hlbiB0
aGUgR1BVIHByb2Nlc3MgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGlzIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgdXNpbmcgdGhlIHNhbWUgZW5j
b2RlL2RlY29kZSBwYXRoIGFzIGlzIHVzZWQgaW4KKyAgICAgICAgV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzOiB0aGUgU2hhcmVkQnVmZmVyIGlzIGNvcGllZCBpbnRvIHNoYXJlZCBtZW1vcnksIGFuZCBv
bmx5IGEgaGFuZGxlIGlzIHBhc3NlZCBhY3Jvc3MKKyAgICAgICAgdGhlIFhQQyBib3VuZGFyeS4g
VGhpcyByZXF1aXJlcyBleGlzdGluZyB1c2VycyB0byBoYW5kbGUgcmVjZWl2aW5nIGEgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhSGFuZGxlIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBvZiB0aGUg
WFBDIGJvdW5kYXJ5LCBidXQgdGhpcyBpcyB0cml2aWFsLCBhbmQgbWFueSBjYWxsIHNpdGVzIHJl
cXVpcmUgYSBTaGFyZWRCdWZmZXIgb24gdGhlCisgICAgICAgIHJlbW90ZSBzaWRlIGluIHRoZSBm
aXJzdCBwbGFjZS4gVGhpcyBjb2RlIGNvdWxkIGJlIGltcHJvdmVkIGJ5IGFsbG93aW5nIHRoZSBT
aGFyZWRNZW1vcnkgb2JqZWN0IGJlIGFkb3B0ZWQKKyAgICAgICAgYnkgdGhlIFNoYXJlZEJ1ZmZl
ciBvYmplY3QgYXQgY3JlYXRpb24gdGltZSwgbGVhZGluZyB0byB6ZXJvLWNvcHkgZGVjb2Rpbmcs
IGJ1dCBpcyBub3QgZG9uZSBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RN
SW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3Rh
bmNlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlk
UmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmFkZEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOiAKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNvbmZpZ3VyYXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjppbnN0YW5j
ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c3RvcmVS
ZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
UHJveHk6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETVByb3h5OjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVl
UGVyT3JpZ2luQW5kQ2xlYXJhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6
OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRB
bmRJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXpl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNz
aW9uSWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmlu
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSk6Cisg
ICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlcik6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAo
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtUmVnaXN0ZXJBdHRhY2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFu
Y2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0
ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OlJlbW90ZUNETSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rp
b25zIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06
OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRp
c3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmln
aW5BbmRDbGVhcmFibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0
ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQgY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJZGVudGlm
aWVyc0FsbG93ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0UGVy
c2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2U6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZTo6c2V0SERDUFN0YXR1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2UuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJl
Y29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUJsb2JDaHVuayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorCiAyMDIwLTAyLTIxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFwcC1ib3VuZCBkb21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5l
dHdvcmsgU2Vzc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFkNGY3MWQ3YzRiNDk2OTEwMzIx
NjMzY2FhZmMzOGQ2MGY2MmNmMWQuLjA3MjBhZGU4ODA1ZGEwMDAyNmY5MTNmOTlmMWNiYjAzNTdk
NjQ5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTE4MSw2ICsxMTgxLDIwIEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAogCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorICAg
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisgICAgcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TU1lc3NhZ2VUeXBlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgK
KyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisgICAgcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVJlc3RyaWN0aW9ucy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lv
blR5cGUuaAorCiAgICAgcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5oCiAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCA0YmJiMmJjZTYx
ODc0YjdlZTE0OGE0MTY4NTUwYTZiMTU2NDM5MmEwLi5jNGUxNDI2YTBjM2ZmYjVhYTgxMGQ0YzVk
MGE2OGJkMDdlOWZlZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgT3B0aW9uYWw8TWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0aW9uPiBDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWEK
ICAgICAgICAgICAgIGlmIChpbml0RGF0YVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAobV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3Vw
cG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkKKyAgICAgICAgICAgIGlmIChtX3ByaXZh
dGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERh
dGFUeXBlKSkKICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBlbmQoaW5pdERhdGFU
eXBlKTsKICAgICAgICAgfQogCkBAIC00NjAsNyArNDYwLDcgQEAgT3B0aW9uYWw8VmVjdG9yPE1l
ZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRp
ZXNGb3IKICAgICAgICAgLy8gMy4xMS4gSWYgY29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBh
IGF1ZGlvL3ZpZGVvIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KICAgICAg
ICAgLy8gMy4xMi4gSWYgcm9idXN0bmVzcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29u
dGFpbnMgYW4gdW5yZWNvZ25pemVkIHZhbHVlIG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQog
ICAgICAgICAvLyAgICAgICBpbXBsZW1lbnRhdGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRl
cmF0aW9uLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAgICAgICAgaWYg
KCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRlLT5zdXBwb3J0c1JvYnVzdG5lc3Mo
cm9idXN0bmVzcykpCisgICAgICAgIGlmICghcm9idXN0bmVzcy5pc0VtcHR5KCkgJiYgIW1fcHJp
dmF0ZS0+c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkuY29udGFpbnMocm9idXN0bmVzcykpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNlciBhZ2VudCBh
bmQgaW1wbGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9mIGVuY3J5cHRl
ZCBtZWRpYSBkYXRhIGZvciB0aGUKQEAgLTYxMiw3ICs2MTIsNyBAQCBib29sIENETTo6c3VwcG9y
dHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0
ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBlKGluaXREYXRhVHlwZSk7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5j
b250YWlucyhpbml0RGF0YVR5cGUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNh
bml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGRhMTliYmZmMmM3Y2U4
MmJlZmE4MDM1YWQ3NTQyZTNlOWYyMmE2OWQuLjI5ZmFiNDk5MDY4MjU4MzJhNWFkZGQ5OWE4MGU4
ZjM0ZDhkMzA4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAvLyA2LjUuIExldCBzZXNzaW9uIGNsb3NlZCBi
ZSBmYWxzZS4KICAgICAgICAgLy8gNi42LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVw
cmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8v
IDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9u
VHlwZSwgKnNhbml0aXplZFJlc3BvbnNlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2Vk
LCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Np
b24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIHNhbml0aXplZFJl
c3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXNDbG9zZWQs
IE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRL
ZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPENETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1
Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MGIwMTFlMzU1YmRjYjdhMzQ3Y2Uw
Mjk3ZGIxYzQyZDg4Zjk0NjNiLi5mODczYjdjZjFkOTY4ZmZkMjI1MGVlZDBkYmJjYmJkZmJmZjk1
ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC00MDY1LDYgKzQwNjUsMTkgQEAKIAkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQy
IC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDNBNDk1NjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCAqLzsgfTsK
IAkJQ0QzQTQ5NjIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5RDAxQjAwMjc0
RTQyIC8qIFNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFCMDAyNzRFNDIg
LyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3Qu
aCAqLzsgfTsKKwkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJBMDFEIC8qIENETUVuY3J5cHRpb25TY2hl
bWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjc1
NjlCMjE1QzIzQTQwMEVGQ0I1MCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRjkyNDAxQUFEOTAw
NEJBMDFEIC8qIENETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEOTRBNUQyMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0b3J5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkEy
NDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUgLyogQ0RNSW5z
dGFuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlDRDNDRTBGQjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlEMzc1QTIxNTE2M0U0
MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZEMjQwMUFBRDkw
MDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRDFGNzFDQjY5MDBGNTI1QzUgLyog
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZFMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1NZWRp
YUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEOTRBNUQzMUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNhcGFiaWxpdHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGRjI0
MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ2MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1N
ZXNzYWdlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFGNzFDQjZBMDBG
NTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNEM0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1Q0YxRjcx
Q0I2MTAwRjUyNUM1IC8qIENETVByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDIyNDAxQUFEQTAwNEJBMDFEIC8qIENETVJlcXVp
cmVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVxdWlyZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMzI0MDFBQURBMDA0
QkEwMUQgLyogQ0RNUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEMDFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNUmVzdHJpY3Rp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QzQ0UxMDQyNDAxQUFEQTAwNEJBMDFEIC8qIENETVNlc3Npb25UeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVENTFGNzFDQjZEMDBGNTI1
QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJV
dGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QzRTIxREIyMTgzM0Y1MTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjUx
QzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQXJl
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
M0UyNTI0MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNFMjUyMjE4MDQ2
QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oICovOyB9OwpAQCAtNDE5
Niw3ICs0MjA5LDcgQEAKIAkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDBG
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggKi87IH07CiAJCUNERjRCNzEyMUUwMDg3
QUUwMEUyMzVBMiAvKiBMZWdhY3lDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEgLyogTGVnYWN5
Q0RNU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTMxRTAwQjdFNTAwRTIzNUEy
IC8qIENETS5jcHAgKi87IH07Ci0JCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE0MUUw
MEI3RTUwMEUyMzVBMiAvKiBDRE0uaCAqLzsgfTsKKwkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEy
IC8qIENETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjRCNzE4MUUwMUNCOTEwMEUyMzVBMiAvKiBN
ZWRpYUtleXNSZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERjRCNzE3MUUwMUNCOTEwMEUyMzVBMiAvKiBNZWRpYUtleXNSZXN0cmlj
dGlvbnMuaCAqLzsgfTsKIAkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vz
c2lvblR5cGUuaWRsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RGNEI3MTkxRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5cGUuaWRsICov
OyB9OwogCQlDREY0QjcxRTFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0Qjcx
QzFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBlLmggKi87IH07CkBAIC0y
OTI2Myw5ICsyOTI3NiwyMiBAQAogCQkJCTY1NTBCNjlFMDk5REYwMjcwMDkwRDc4MSAvKiBDREFU
QVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAv
KiBDRE0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOTRBNURFMUY3MkY1N0IwMEY1MjVDNSAvKiBD
RE1DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEY4MjQwMUFBRDkwMDRCQTAxRCAv
KiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGOTI0MDFB
QUQ5MDA0QkEwMUQgLyogQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RCNzA0NUEx
Rjc0NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQbGF5U3RyZWFtaW5nLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRDNDRTBGQTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZVNlc3Npb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZDMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZEMjQwMUFBRDkwMDRCQTAxRCAvKiBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGRTI0
MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDRDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDMxODYyMzE5OUYxRTJBMDAzMEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJB
MDFEIC8qIENETVByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwMjI0MDFBQURBMDA0
QkEwMUQgLyogQ0RNUmVxdWlyZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAzMjQw
MUFBREEwMDRCQTAxRCAvKiBDRE1SZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwNDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lv
blR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVGQTkwNENBMTc4RTYxRjUwMDRDOEEyRCAvKiBD
ZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjhGMEI1MjE5NTNENjUwMDBD
MkIwMCAvKiBDZXJ0aWZpY2F0ZUluZm9CYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM2RkQx
NTE2Qzc4MjY1MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggOWU3YTk2NDg0NDQ5
OTBlNzFiNDNkNmY3NDQ3NzEzZDMyZmQwYjIwMy4uZjBiZWRlYzk0Y2ZhODcwZjc4OTJmMjE5MDk2
OTM3MzEyNzI1MGMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0yNTYxLDE1ICsyNTYxLDIzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKIH0KIAogI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCkKK3sKKyAg
ICBib29sIHNob3VsZENvbnRpbnVlID0gaGFzRXZlbnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXki
KSB8fCAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5lbmNyeXB0ZWRN
ZWRpYUFQSUVuYWJsZWQoKSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNCcm9rZW5FbmNyeXB0
ZWRNZWRpYUFQSVN1cHBvcnRRdWlyaygpKTsKKyAgICBwbGF5ZXIoKS0+c2V0U2hvdWxkQ29udGlu
dWVBZnRlcktleU5lZWRlZChzaG91bGRDb250aW51ZSk7Cit9CisjZW5kaWYKKwogUmVmUHRyPEFy
cmF5QnVmZmVyPiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlk
KGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fd2ViS2l0TWVkaWFL
ZXlzID8gbV93ZWJLaXRNZWRpYUtleXMtPmNhY2hlZEtleUZvcktleUlkKGtleUlkKSA6IG51bGxw
dHI7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWlu
dDhBcnJheSogaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5
TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWhh
c0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVka2V5IikKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQpAQCAtMjU4MCwxNCArMjU4OCwxMiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQogICAgICAgICApIHsKICAgICAg
ICAgbV9lcnJvciA9IE1lZGlhRXJyb3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfRU5D
UllQVEVEKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1
dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhp
cyk7CiAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC01MTI5LDYgKzUxMzUs
MTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgc2NoZWR1bGVVcGRhdGVNZWRp
YVN0YXRlKCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJO
ZWVkS2V5KCk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
ckVuZ2luZVVwZGF0ZWQoKQpAQCAtNTg5MSw2ICs1OTAxLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVu
dExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0
aW9ucykKIHsKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRu
ZWVka2V5RXZlbnQpCisgICAgICAgIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7
CisjZW5kaWYKKwogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXli
YWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKTsK
IApAQCAtNTkxMiw2ICs1OTI3LDExIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpCiAKIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMm
IG9wdGlvbnMpCiB7CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Vi
a2l0bmVlZGtleUV2ZW50KQorICAgICAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtl
eSgpOworI2VuZGlmCisKICAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRw
bGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5v
ZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZTcxNTYzY2ZmNjFhNTE0
NTU2NzI0ZGZkM2NhNzBiMDEwOWZmZjU2MC4uY2EzNzQ5YmRkYjZlMGI2ZjFjNGYxODYzMDE5YmQ2
NDk2Nzk1MWQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTY4
Miw3ICs2ODIsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlk
KGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgbWVkaWFQbGF5ZXJL
ZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoVWludDhBcnJheSopIGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCkBAIC02OTYsNiArNjk2LDEw
IEBAIHByaXZhdGU6CiAgICAgLy8gQ0RNQ2xpZW50CiAgICAgdm9pZCBjZG1DbGllbnRBdHRlbXB0
VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgZmluYWw7CiAjZW5kaWYKKworI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHZvaWQgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgogICAgIAog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCBtZWRpYVBsYXll
ckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKGJvb2wpIGZpbmFsOwpAQCAt
MTE2OCw2ICsxMTcyLDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYVByb3ZpZGVyIG1fbWVkaWFQcm92
aWRlcjsKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9o
YXNOZWVka2V5TGlzdGVuZXIgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJLaXRNZWRpYUtleXM+
IG1fd2ViS2l0TWVkaWFLZXlzOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAppbmRl
eCA3NGIzYWE3ZDdiZGIwMGEyNjc1NmEwMjM2NTY2ZjM2ODgxMmJjZTNiLi4xYTdhNTYyN2RiY2E2
NDFiNDljZTdlNTZlNjcxNmUzMThhOTg4YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCkBA
IC0yNywxMyArMjcsMjcgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3Mg
Q0RNRW5jcnlwdGlvblNjaGVtZSB7CitlbnVtIGNsYXNzIENETUVuY3J5cHRpb25TY2hlbWUgOiB1
aW50OF90IHsKICAgICBjZW5jLAogICAgIGNiY3MsCiB9OwogCiB9CiAKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUVuY3J5cHRpb25T
Y2hlbWU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3Jl
OjpDRE1FbmNyeXB0aW9uU2NoZW1lLAorICAgICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2No
ZW1lOjpjZW5jLAorICAgICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lOjpjYmNzCisg
ICAgPjsKK307CisKK30KKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwCmluZGV4IDRiYjU5OWZhODA3M2QzYjg1
NWQ4NDYxNzg2MTlkYmMwMjYxMDU4ZjIuLjY2MWQ1YjRlYjc1MmVhNTVhYTJkOGU0ZjllZWQ2Mzg2
ZWRkYWM1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUZhY3RvcnkuY3BwCkBAIC01Nyw2ICs1NywxMSBAQCB2b2lkIENETUZhY3Rvcnk6
OnVucmVnaXN0ZXJGYWN0b3J5KENETUZhY3RvcnkmIGZhY3RvcnkpCiAgICAgcmVnaXN0ZXJlZEZh
Y3RvcmllcygpLnJlbW92ZUFsbCgmZmFjdG9yeSk7CiB9CiAKK3ZvaWQgQ0RNRmFjdG9yeTo6cmVz
ZXRGYWN0b3JpZXMoKQoreworICAgIHBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMocmVnaXN0ZXJl
ZEZhY3RvcmllcygpKTsKK30KKwogI2lmICFVU0UoR1NUUkVBTUVSKSAmJiAhVVNFKEFWRk9VTkRB
VElPTikKIHZvaWQgQ0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8
Q0RNRmFjdG9yeSo+JikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUZhY3RvcnkuaAppbmRleCA0NGVhYWIwN2U3NTdhZmU1OGI1MzYxZjVhZjEy
YjI0Nzc2YTAzNTJlLi5lMWFlNjA0MjE2YTk3NTkyZjMzY2I4MzYyZmMyYzIxYTJiMDg4YjRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0
b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFj
dG9yeS5oCkBAIC00Miw3ICs0Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxDRE1Qcml2YXRlPiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICBzdGF0
aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiByZWdpc3RlcmVkRmFjdG9yaWVz
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXRGYWN0b3JpZXMoKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJGYWN0b3J5KENETUZh
Y3RvcnkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlLmgKaW5kZXggOGY5ZjNlYjg3NDVjMzUyMDI4MzE0YzYwNmQyODlkNGUz
ZjcxYTA0OC4uN2ZlMDlmMGFmM2ZkNzMwMzYyMzVjMjI3N2JhY2RlYmEwNjQ5YjE1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZS5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgTW9jaywKICAgICAgICAgQ2xl
YXJLZXksCiAgICAgICAgIEZhaXJQbGF5U3RyZWFtaW5nLAorICAgICAgICBSZW1vdGUsCiAgICAg
fTsKICAgICB2aXJ0dWFsIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBj
b25zdCA9IDA7CiAKQEAgLTY4LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5z
dGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgPSAwOwogCi0gICAgZW51bSBjbGFzcyBIRENQ
U3RhdHVzIHsKKyAgICBlbnVtIGNsYXNzIEhEQ1BTdGF0dXMgOiB1aW50OF90IHsKICAgICAgICAg
VW5rbm93biwKICAgICAgICAgVmFsaWQsCiAgICAgICAgIE91dHB1dFJlc3RyaWN0ZWQsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlU2Vzc2lvbi5oCmluZGV4IDg3MjVhMzFkOGJiM2UyMmJlMjFkZjA3ZTMyMGIzNmU3NTAz
ODZlMWEuLmQ0NjRiNzRkMWM3MjAyYTlhMzM5ZGZmNjVkMDZlMDgyMDg5NjlkYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlU2Vzc2lvbi5oCkBAIC03Miw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlT
dGF0dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsK
ICAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4m
JiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRp
b25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOwogCi0gICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZh
aWx1cmUgeworICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAg
ICAgICAgIE5vbmUsCiAgICAgICAgIE5vU2Vzc2lvbkRhdGEsCiAgICAgICAgIE1pc21hdGNoZWRT
ZXNzaW9uVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUtleVN0YXR1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNS2V5U3RhdHVzLmgKaW5kZXggYWQ5Njk2MjM2MDRjZDE0NzA1NWEyN2I3MzM2ZjY3
N2MwYjNhZjJjNC4uY2M1ZTcxODZmNzRlZjhlODE0Y2IzYWY3NTVlMTYxYTY1YzIwODgyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3Rh
dHVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5
U3RhdHVzLmgKQEAgLTMwLDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1l
bnVtIGNsYXNzIENETUtleVN0YXR1cyB7CitlbnVtIGNsYXNzIENETUtleVN0YXR1cyA6IHVpbnQ4
X3QgewogICAgIFVzYWJsZSwKICAgICBFeHBpcmVkLAogICAgIFJlbGVhc2VkLApAQCAtNDQsNCAr
NDYsMjAgQEAgZW51bSBjbGFzcyBDRE1LZXlTdGF0dXMgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OkNETUtleVN0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Cisg
ICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6VXNh
YmxlLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6RXhwaXJlZCwKKyAgICBXZWJDb3JlOjpD
RE1LZXlTdGF0dXM6OlJlbGVhc2VkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6T3V0cHV0
UmVzdHJpY3RlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6Ok91dHB1dERvd25zY2FsZWQs
CisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpTdGF0dXNQZW5kaW5nLAorICAgIFdlYkNvcmU6
OkNETUtleVN0YXR1czo6SW50ZXJuYWxFcnJvcgorICAgID47Cit9OworCit9CiAjZW5kaWYgLy8g
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24u
aAppbmRleCA2MTJkNjQ1ZmFhNTI0OGY3MWYxYzE1NjdmNDUwN2U4OWYzYjMxY2U1Li44NTI1ODdj
ZWRhMDUxMjE0NDc5NTIyZmFjMzhlNGMwZmI5ODc0OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbi5oCkBAIC00OCw2ICs0OCw2NyBAQCBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiB7CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyIHsg
Q0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsIH07CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVu
dFN0YXRlIHsgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsIH07CiAgICAgVmVjdG9yPENETVNlc3Np
b25UeXBlPiBzZXNzaW9uVHlwZXM7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNv
ZGVyIDw8IGxhYmVsOworICAgICAgICBlbmNvZGVyIDw8IGluaXREYXRhVHlwZXM7CisgICAgICAg
IGVuY29kZXIgPDwgYXVkaW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGVuY29kZXIgPDwgdmlkZW9D
YXBhYmlsaXRpZXM7CisgICAgICAgIGVuY29kZXIgPDwgZGlzdGluY3RpdmVJZGVudGlmaWVyOwor
ICAgICAgICBlbmNvZGVyIDw8IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZW5jb2RlciA8PCBz
ZXNzaW9uVHlwZXM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAg
c3RhdGljIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAg
ICAgZGVjb2RlciA+PiBsYWJlbDsKKyAgICAgICAgaWYgKCFsYWJlbCkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGlu
aXREYXRhVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAg
aWYgKCFpbml0RGF0YVR5cGVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gYXVkaW9DYXBhYmls
aXRpZXM7CisgICAgICAgIGRlY29kZXIgPj4gYXVkaW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGlm
ICghYXVkaW9DYXBhYmlsaXRpZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiB2aWRlb0NhcGFi
aWxpdGllczsKKyAgICAgICAgZGVjb2RlciA+PiB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAg
aWYgKCF2aWRlb0NhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgT3B0aW9uYWw8Q0RNUmVxdWlyZW1lbnQ+IGRpc3RpbmN0aXZlSWRlbnRpZmll
cjsKKyAgICAgICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGlm
ICghZGlzdGluY3RpdmVJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgCisgICAgICAgIE9wdGlvbmFsPENETVJlcXVpcmVtZW50PiBwZXJzaXN0ZW50
U3RhdGU7CisgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudFN0YXRlOworICAgICAgICBpZiAo
IXBlcnNpc3RlbnRTdGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8VmVjdG9yPENETVNlc3Npb25UeXBlPj4gc2Vzc2lvblR5cGVzOworICAg
ICAgICBkZWNvZGVyID4+IHNlc3Npb25UeXBlczsKKyAgICAgICAgaWYgKCFzZXNzaW9uVHlwZXMp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7ewor
ICAgICAgICAgICAgV1RGTW92ZSgqbGFiZWwpLAorICAgICAgICAgICAgV1RGTW92ZSgqaW5pdERh
dGFUeXBlcyksCisgICAgICAgICAgICBXVEZNb3ZlKCphdWRpb0NhcGFiaWxpdGllcyksCisgICAg
ICAgICAgICBXVEZNb3ZlKCp2aWRlb0NhcGFiaWxpdGllcyksCisgICAgICAgICAgICAqZGlzdGlu
Y3RpdmVJZGVudGlmaWVyLAorICAgICAgICAgICAgKnBlcnNpc3RlbnRTdGF0ZSwKKyAgICAgICAg
ICAgIFdURk1vdmUoKnNlc3Npb25UeXBlcyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETU1lZGlhQ2FwYWJpbGl0eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgKaW5kZXggOTAxYjU0ZmYw
NTA4ZWRhOWJiYjg4YzVjMWRiODY1MzhkY2UxNDI4Mi4uZjg0YTBkMTJhYjRjZDUyMGUzZjBlMDRk
NjRlYmVmYzYzMTYyNTg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgKQEAgLTM5LDYgKzM5LDM5
IEBAIHN0cnVjdCBDRE1NZWRpYUNhcGFiaWxpdHkgewogICAgIFN0cmluZyBjb250ZW50VHlwZTsK
ICAgICBTdHJpbmcgcm9idXN0bmVzczsKICAgICBPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1l
PiBlbmNyeXB0aW9uU2NoZW1lOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2Rl
ciA8PCBjb250ZW50VHlwZTsKKyAgICAgICAgZW5jb2RlciA8PCByb2J1c3RuZXNzOworICAgICAg
ICBlbmNvZGVyIDw8IGVuY3J5cHRpb25TY2hlbWU7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPENETU1lZGlhQ2FwYWJpbGl0eT4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNv
bnRlbnRUeXBlOworICAgICAgICBkZWNvZGVyID4+IGNvbnRlbnRUeXBlOworICAgICAgICBpZiAo
IWNvbnRlbnRUeXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICBPcHRpb25hbDxTdHJpbmc+IHJvYnVzdG5lc3M7CisgICAgICAgIGRlY29kZXIgPj4gcm9idXN0
bmVzczsKKyAgICAgICAgaWYgKCFyb2J1c3RuZXNzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1l
Pj4gZW5jcnlwdGlvblNjaGVtZTsKKyAgICAgICAgZGVjb2RlciA+PiBlbmNyeXB0aW9uU2NoZW1l
OworICAgICAgICBpZiAoIWVuY3J5cHRpb25TY2hlbWUpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqY29u
dGVudFR5cGUpLAorICAgICAgICAgICAgV1RGTW92ZSgqcm9idXN0bmVzcyksCisgICAgICAgICAg
ICBXVEZNb3ZlKCplbmNyeXB0aW9uU2NoZW1lKSwKKyAgICAgICAgfX07CisgICAgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKaW5kZXggZTVmNzk2YTllMGUwNzUx
YWEwMjc4MmI5YjY2NmNhMjMxZWY3ZTYwOS4uOTViZjI4YzJhYTk0YTNkYTUwNDViNWVjMDBmMzU4
Y2QyNmQ5NWNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNTWVzc2FnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBDRE1NZXNzYWdlVHlwZSB7CitlbnVtIGNsYXNz
IENETU1lc3NhZ2VUeXBlIDogdWludDhfdCB7CiAgICAgTGljZW5zZVJlcXVlc3QsCiAgICAgTGlj
ZW5zZVJlbmV3YWwsCiAgICAgTGljZW5zZVJlbGVhc2UsCkBAIC00MSw0ICs0MywxOCBAQCBlbnVt
IGNsYXNzIENETU1lc3NhZ2VUeXBlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1N
ZXNzYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdl
YkNvcmU6OkNETU1lc3NhZ2VUeXBlLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZTo6
TGljZW5zZVJlcXVlc3QsCisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNl
UmVuZXdhbCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZWxlYXNl
LAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZTo6SW5kaXZpZHVhbGl6YXRpb25SZXF1
ZXN0CisgICAgPjsKK307CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2
YXRlLmgKaW5kZXggMjVmNzgxNmEyZmUxZGE2ZjkwYzJmZWY3Nzc1NTE0MDZhYTBmNGEwMy4uNzQ5
ZmNkZjJmYzM3YTVlOWZlNjI1ZDUzYTNlMDExYzcxYzRhZWQzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNDEsMTEg
KzQxLDExIEBAIGNsYXNzIENETVByaXZhdGUgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETVBy
aXZhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5
cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9t
U3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0
aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RN
UmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Jv
YnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
VmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25z
JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJl
c3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50LmgKaW5kZXggNjlhYzEyZDMxNmJm
NjY1N2JiMGEyNGRhZjdhZTRmYTBmZDRmMWM5OC4uNWIwYjc3ODBkMjdkZmViMTkzZGNlNmVjZGE3
MTc4NTI4ZjdjZDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCB7CitlbnVtIGNs
YXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdCB7CiAgICAgUmVxdWlyZWQsCiAgICAgT3B0aW9u
YWwsCiAgICAgTm90QWxsb3dlZApAQCAtNDAsNCArNDIsMTcgQEAgZW51bSBjbGFzcyBDRE1SZXF1
aXJlbWVudCB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1
aXJlbWVudCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkLAorICAg
ICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwsCisgICAgICAgIFdlYkNvcmU6
OkNETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkCisgICAgPjsKK307CisKK30KKwogI2VuZGlmIC8v
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCmluZGV4IGM1MmUyODJhMTJl
OTFhNDg4MTBiZDE4Yjg3ZWI2YWQ2MzhmMjEwYTguLjljYTJhYzU5ZThiMTM1NDYzYTUyZGI0NWU4
MDczMWY1MGM2OTRmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCkBAIC0zNiw2ICszNiwzOSBAQCBzdHJ1
Y3QgQ0RNUmVzdHJpY3Rpb25zIHsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmll
ZCB7IGZhbHNlIH07CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVEZW5pZWQgeyBmYWxzZSB9Owog
ICAgIEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUsIFdURjo6SW50SGFzaDxDRE1TZXNzaW9uVHlwZT4s
IFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+PiBkZW5pZWRTZXNzaW9u
VHlwZXM7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGRpc3RpbmN0
aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAgICAgZW5jb2RlciA8PCBwZXJzaXN0ZW50U3RhdGVE
ZW5pZWQ7CisgICAgICAgIGVuY29kZXIgPDwgZGVuaWVkU2Vzc2lvblR5cGVzOworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxDRE1SZXN0
cmljdGlvbnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkOworICAgICAgICBkZWNvZGVyID4+
IGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJEZW5pZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIE9wdGlvbmFsPGJvb2w+IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsKKyAgICAgICAgZGVjb2Rl
ciA+PiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRl
RGVuaWVkKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRp
b25hbDxIYXNoU2V0PENETVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+
LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Np
b25UeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAgICAg
IGlmICghZGVuaWVkU2Vzc2lvblR5cGVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJEZW5pZWQsCisgICAgICAgICAgICAqcGVyc2lzdGVudFN0YXRlRGVuaWVkLAorICAgICAgICAg
ICAgV1RGTW92ZSgqZGVuaWVkU2Vzc2lvblR5cGVzKSwKKyAgICAgICAgfX07CisgICAgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKaW5kZXggNjA1NzRhNWE2OTNh
OTZjNDlmNDlmYjczNDk2ZWQ3NWI3ZTFlNmZiYi4uZTA3YzMwMDI3OTMwNWY3NzQzZjIyZmNmNTQw
NmYyY2ZhNjgxZGUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSB7CitlbnVtIGNs
YXNzIENETVNlc3Npb25UeXBlIDogdWludDhfdCB7CiAgICAgVGVtcG9yYXJ5LAogICAgIFBlcnNp
c3RlbnRVc2FnZVJlY29yZCwKICAgICBQZXJzaXN0ZW50TGljZW5zZQpAQCAtNDAsNCArNDIsMTcg
QEAgZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6Q0RNU2Vzc2lvblR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAg
ICAgICBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lv
blR5cGU6OlRlbXBvcmFyeSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlBlcnNp
c3RlbnRVc2FnZVJlY29yZCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlBlcnNp
c3RlbnRMaWNlbnNlCisgICAgPjsKK307CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggNDUxMTFkYzc1YjU1
MDgwY2VmNGU1ZmIzOGFlMjYzM2IzOWVhNzIzMy4uODY0ZDZlM2RlODNiMDJjM2IxYzBkM2FkYjU2
NTdiM2NlN2I2MTk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRl
ICJDRE1SZXN0cmljdGlvbnMuaCIKICNpbmNsdWRlICJDRE1TZXNzaW9uVHlwZS5oIgorI2luY2x1
ZGUgIkluaXREYXRhUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMjkwLDEwICsyOTEsMTMg
QEAgYm9vbCBDRE1GYWN0b3J5Q2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKQogQ0RNUHJpdmF0ZUNsZWFyS2V5OjpDRE1Qcml2YXRlQ2xlYXJLZXkoKSA9
IGRlZmF1bHQ7CiBDRE1Qcml2YXRlQ2xlYXJLZXk6On5DRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRl
ZmF1bHQ7CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhVHlwZShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmluZz4g
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QKIHsKLSAg
ICAvLyBga2V5aWRzYCBhbmQgJ2NlbmMnIGFyZSB0aGUgb25seSBzdXBwb3J0ZWQgaW5pdCBkYXRh
IHR5cGUuCi0gICAgcmV0dXJuIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0
YVR5cGUsICJrZXlpZHMiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0
YVR5cGUsICJjZW5jIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFU
eXBlLCAid2VibSIpKTsKKyAgICByZXR1cm4geworICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5Ojpr
ZXlpZHNOYW1lKCksCisgICAgICAgIEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCksCisgICAg
ICAgIEluaXREYXRhUmVnaXN0cnk6OndlYm1OYW1lKCksCisgICAgfTsKIH0KIAogc3RhdGljIGJv
b2wgY29udGFpbnNQZXJzaXN0ZW50TGljZW5zZVR5cGUoY29uc3QgVmVjdG9yPENETVNlc3Npb25U
eXBlPiYgdHlwZXMpCkBAIC0zMzcsNyArMzQxLDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGUK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRz
U2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUs
IGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Citi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKIHsKICAgICAvLyBPbmx5IHN1cHBv
cnQgdGhlICd0ZW1wb3JhcnknIGFuZCAncGVyc2lzdGVudC1saWNlbnNlJyBzZXNzaW9uIHR5cGVz
LgogICAgIGlmIChzZXNzaW9uVHlwZSAhPSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5ICYmIHNl
c3Npb25UeXBlICE9IENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkKQEAgLTM0NSwx
MCArMzQ5LDEwIEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNlCiAgICAgcmV0dXJuIHN1cHBvcnRz
Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJL
ZXk6OnN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0CitW
ZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0ZWRSb2J1c3RuZXNz
ZXMoKSBjb25zdAogewogICAgIC8vIE9ubHkgZW1wdHkgYHJvYnVzdG5lc3NgIHN0cmluZyBpcyBz
dXBwb3J0ZWQuCi0gICAgcmV0dXJuIHJvYnVzdG5lc3MuaXNFbXB0eSgpOworICAgIHJldHVybiB7
IGVtcHR5QXRvbSgpIH07CiB9CiAKIENETVJlcXVpcmVtZW50IENETVByaXZhdGVDbGVhcktleTo6
ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKQEAg
LTQ5OCw3ICs1MDIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0K
IAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9u
c2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNl
IHRoZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3Nv
ciBjaGVja3MgYXJlIGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDY3MDRh
ZTdhOTU3ZjMyZmUxZjg0OTgzZWQzYjNmNjUwMmE1MzE1YTIuLjRhYjlkZTBmMDJjZWViYjIwYTkz
Y2RmNjFlM2I3NzBmNWZkZTgyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNzQs
MTEgKzc0LDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0
dWFsIH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5
cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5n
PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21T
dHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMo
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYp
IGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYp
IGNvbnN0IGZpbmFsOwogICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNS
ZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVz
dHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENE
TVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlm
aWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJikgY29uc3QgZmluYWw7CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAg
IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkK
ICAgICAgICAgOiBtX3BhcmVudEluc3RhbmNlKHBhcmVudCkgeyB9CiAgICAgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAg
dm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihM
aWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9z
ZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCmluZGV4IDU3ZGZjYmY0YmM3YzQ4ODQ0ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIuLmRiMGIy
ZjhhN2UwZjI2OTZhMWQ4ZGI2ZjRkNGY0N2FhZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2NTcsMTQg
QEAgdm9pZCBNZWRpYVBsYXllcjo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0
YW5jZSYgaW5zdGFuY2UpCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRT
aG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1fc2hvdWxk
Q29udGludWVBZnRlcktleU5lZWRlZCA9IHNob3VsZDsKKyAgICBtX3ByaXZhdGUtPnNldFNob3Vs
ZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRpZgorCiBNZWRpYVRpbWUg
TWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5k
dXJhdGlvbk1lZGlhVGltZSgpOwpAQCAtMTMxMiw5ICsxMzIwLDkgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBNZWRpYVBsYXllcjo6Y2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkg
Y29uc3QKICAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChr
ZXlJZCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkK
IHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERhdGEpOwor
ICAgIGNsaWVudCgpLm1lZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKIH0KIAogU3RyaW5n
IE1lZGlhUGxheWVyOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdlNmNiOGEz
OTBkZjdmZTFhN2FhZTAxNzM5ZGM5NDhmNzc2NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBjNTY5ZTY3
YTQxZTEyMGI3NjQwZWZhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaApAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5QnVmZmVy
PiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWlu
dDhBcnJheSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
S2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXll
ck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygp
OyB9CiAjZW5kaWYKIApAQCAtMzY2LDYgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRl
bXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJik7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
ICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyAgICBib29s
IHNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQ7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBwYXVzZWQoKSBjb25z
dDsKICAgICBib29sIHNlZWtpbmcoKSBjb25zdDsKIApAQCAtNTE5LDcgKzUyNCw3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3Q7Ci0g
ICAgYm9vbCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQga2V5TmVl
ZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4g
bV9tZWRpYVN0cmVhbTsKICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJG
YWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggOWY3ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0YjBkY2Ex
Y2MxNzVhOC4uN2E4MjA0NzBmOTk5YWM5OWE2YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKQEAgLTI0Myw2ICsyNDMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3YWl0
aW5nRm9yS2V5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
dmlydHVhbCB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkgeyB9Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWly
ZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApp
bmRleCA0ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJhYmZjZGU1
YTBkNGI4MTE4ZDAzY2M5MmYxZDYxOWQ2MWQ3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI0Nyw5ICsyNDcsOSBAQCBib29sIENETUZhY3RvcnlG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZygpID0gZGVmYXVsdDsKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewotICAgIHJldHVybiB2YWxp
ZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOworICAgIHJldHVybiBjb3B5
VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5cGVzKCkpOwogfQogCiBib29sIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0zMDUsNyArMzA1LDcgQEAgYm9v
bCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhS
ZXN0cmljdGlvbnMoY29uc3QgQ0QKICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0aW9uKGNv
bmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBzZXNzaW9u
VHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29u
c3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAogewogICAg
IGlmIChzZXNzaW9uVHlwZSA9PSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAgICAgICAg
IGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6UmVx
dWlyZWQpCkBAIC0zMTYsMTMgKzMxNiwxMCBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3NpbwogICAg
IHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wg
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3Ry
aW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAgICBpZiAo
cm9idXN0bmVzcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgLy8gRklY
TUU6IERldGVybWluZSBhbiBlbnVtZXJhdGVkIGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1ZXMgc3Vw
cG9ydGVkIGJ5IEZQUy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHsgZW1wdHlBdG9t
KCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyArMzYzLDcg
QEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBj
b25zdAogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5
cGUpKQorICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBzaW5m
TmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IDUz
ODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZkMTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFkN2FmYmFl
MmQyYzU2MTJmODRiNDM0YzBmMTBmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oCkBAIC01NSwxMSArNTUsMTEgQEAgcHVibGljOgogICAgIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
ZygpOwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRh
VHlwZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9u
VHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBv
dmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVy
c1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1S
ZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0
ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0aW5jdGl2
ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
CmluZGV4IGIxMWY3MWE5YjVlMzhiZjY5OGIxMzk0OWRkZGU4NmYzZGQ5OTRjYzEuLjdmMGUyZDVh
YzAwZTYwNjJkMzViYWM0NWQ2ZTFlNzFkNDQwM2U4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
aApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lv
bgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggNzMy
Njc3NWY0N2QzODU4YjA1Zjc4NzhiNzM1NzRhNDY0N2NiOGQzMS4uZjA5YjI4OWEzM2U3ZWMwNDBm
MDRkMWY2Zjk5YWY4ZWY5MGQ5NzcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTU4
MCw3ICs1ODAsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0
dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChy
ZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8gZXhwaXJlZFNl
c3Npb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CkBAIC03MTEs
NyArNzExLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0gZWxzZQotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVl
c3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAg
ICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29u
dGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3Bv
bnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9w
cm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZD
b250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIHN0cnVj
dCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiBtZXRob2QgPSBwcm90b2NvbF9nZXRNZXRob2REZXNj
cmlwdGlvbihAcHJvdG9jb2woQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9y
KGNvbnRlbnRLZXlTZXNzaW9uOmNvbnRlbnRLZXlSZXF1ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVT
KTsKQEAgLTExNDAsNyArMTE0MCw4IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fc2Vzc2lvbklkID0gc2Vzc2lvbklkOwotICAgIG1fY2xpZW50LT5z
ZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKIH0KIAogdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omdyb3VwU2Vzc2lvbklkZW50
aWZpZXJDaGFuZ2VkKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKiBncm91cCwgTlNEYXRhICpzZXNz
aW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGIzN2M0NDExMzE0OTg4
Nzk1NDZlYzhhNTdhMGRkOGUxMWY3ODQ2OTcuLmQ3OGM3Y2FhNjAyMDgzZmEzYjgzYjMzYzc2MGRk
NGY0MTEyZDYzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTY3OCw5ICsxNjc4LDEy
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZv
ckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5n
ZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5n
dGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CiAKICAgICAgICAgYXV0byBpbml0RGF0
YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxl
bmd0aCk7Ci0gICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkp
CisgICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVl
QWZ0ZXJLZXlOZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgorI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNF
U1NJT04pCiAgICAgICAgIGlmIChtX2NkbUluc3RhbmNlKSB7CkBAIC0xNzEzLDcgKzE3MTYsOSBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigp
KSkKKyAgICAgICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisKKyAgICAg
ICAgaWYgKCFwbGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChr
ZXlJRCwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5j
cHAKaW5kZXggY2U1ZDhmN2Q2YmRmMzhiNTkyMjA5MzAyYTZlNmQ3MWIzNjk2NjMyZC4uMGE0ZDY1
NzUwYTE1NGM1ZTVlZTE5YjU4MzBjOWZiYWUwMDAxZTNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTk4LDYgKzk4LDExIEBAIHZvaWQgTW9ja0NETUZh
Y3Rvcnk6OnNldFN1cHBvcnRlZERhdGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogICAg
ICAgICBtX3N1cHBvcnRlZERhdGFUeXBlcy5hcHBlbmQodHlwZSk7CiB9CiAKK3ZvaWQgTW9ja0NE
TUZhY3Rvcnk6OnNldFN1cHBvcnRlZFJvYnVzdG5lc3MoVmVjdG9yPFN0cmluZz4mJiByb2J1c3Ru
ZXNzZXMpCit7CisgICAgbV9zdXBwb3J0ZWRSb2J1c3RuZXNzID0gcm9idXN0bmVzc2VzLm1hcChb
XSAoYXV0byYgcm9idXN0bmVzcykgLT4gQXRvbVN0cmluZyB7IHJldHVybiByb2J1c3RuZXNzOyB9
KTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IE1vY2tDRE1GYWN0b3J5OjpjcmVh
dGVDRE0oY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNPiht
YWtlV2Vha1B0cigqdGhpcykpOwpAQCAtMTA4LDExICsxMTMsMTggQEAgTW9ja0NETTo6TW9ja0NE
TShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5KQogewogfQogCi1ib29sIE1vY2tDRE06
OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29u
c3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkg
Y29uc3QKIHsKICAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5z
dXBwb3J0ZWREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwotICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIG1fZmFjdG9yeS0+c3VwcG9ydGVkRGF0YVR5cGVzKCk7Cisg
ICAgcmV0dXJuIHsgfTsKK30KKworVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06OnN1cHBvcnRl
ZFJvYnVzdG5lc3NlcygpIGNvbnN0Cit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgcmV0
dXJuIG1fZmFjdG9yeS0+c3VwcG9ydGVkUm9idXN0bmVzcygpOworICAgIHJldHVybiB7IH07CiB9
CiAKIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKQEAgLTEzOSw3ICsxNTEsNyBA
QCBib29sIE1vY2tDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
c3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1v
Y2tDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Np
b25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAogewogICAgIGlmICghbV9mYWN0b3J5IHx8ICFtX2Zh
Y3RvcnktPnN1cHBvcnRlZFNlc3Npb25UeXBlcygpLmNvbnRhaW5zKHNlc3Npb25UeXBlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ4LDEzICsxNjAsNiBAQCBib29sIE1vY2tDRE06OnN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiBz
ZXNzaW9uVAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzUm9i
dXN0bmVzcyhjb25zdCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZmFj
dG9yeSkKLSAgICAgICAgcmV0dXJuIG1fZmFjdG9yeS0+c3VwcG9ydGVkUm9idXN0bmVzcygpLmNv
bnRhaW5zKHJvYnVzdG5lc3MpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogTWVkaWFLZXlzUmVx
dWlyZW1lbnQgTW9ja0NETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9u
cyYpIGNvbnN0CiB7CiAgICAgaWYgKG1fZmFjdG9yeSkKQEAgLTE5OSw3ICsyMDQsNyBAQCBib29s
IE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogCiBib29sIE1vY2tDRE06OnN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRC
dWZmZXImIGluaXREYXRhKSBjb25zdAogewotICAgIGlmICghc3VwcG9ydHNJbml0RGF0YVR5cGUo
aW5pdERhdGFUeXBlKSkKKyAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlu
cyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBVTlVTRURfUEFS
QU0oaW5pdERhdGEpOwpAQCAtMzI1LDcgKzMzMCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21T
CiAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vu
c2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7
CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9u
c2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNl
ID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsK
QEAgLTMzMyw3ICszMzgsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmco
cmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9y
PFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9u
c2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlu
cyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2Us
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6
RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCAzOTkw
OWI5MzAzYTk0YzkzNjhlYWEwZjYyNWY0YjY3ZTUyNTA1OWYxLi42Y2I5MTVjODUwMTU1OGYxMGJi
OGZjNWIyZGE1MjgzNTA0MGYwZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5oCkBAIC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8TWVkaWFL
ZXlTZXNzaW9uVHlwZT4mIHN1cHBvcnRlZFNlc3Npb25UeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3VwcG9ydGVkU2Vzc2lvblR5cGVzOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0ZWRTZXNzaW9uVHlw
ZXMoVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+JiYgdHlwZXMpIHsgbV9zdXBwb3J0ZWRTZXNz
aW9uVHlwZXMgPSBXVEZNb3ZlKHR5cGVzKTsgfQogCi0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHN1cHBvcnRlZFJvYnVzdG5lc3MoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZFJvYnVzdG5l
c3M7IH0KLSAgICB2b2lkIHNldFN1cHBvcnRlZFJvYnVzdG5lc3MoVmVjdG9yPFN0cmluZz4mJiBy
b2J1c3RuZXNzKSB7IG1fc3VwcG9ydGVkUm9idXN0bmVzcyA9IFdURk1vdmUocm9idXN0bmVzcyk7
IH0KKyAgICBjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIHN1cHBvcnRlZFJvYnVzdG5lc3MoKSBj
b25zdCB7IHJldHVybiBtX3N1cHBvcnRlZFJvYnVzdG5lc3M7IH0KKyAgICB2b2lkIHNldFN1cHBv
cnRlZFJvYnVzdG5lc3MoVmVjdG9yPFN0cmluZz4mJik7CiAKICAgICBNZWRpYUtleXNSZXF1aXJl
bWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudDsgfQogICAgIHZvaWQgc2V0RGlzdGlu
Y3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KE1lZGlhS2V5c1JlcXVpcmVtZW50IHJlcXVpcmVt
ZW50KSB7IG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50ID0gcmVxdWlyZW1lbnQ7
IH0KQEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBt
X3BlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50IHsgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlv
bmFsIH07CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IG1fc3VwcG9ydGVkRGF0YVR5cGVzOwogICAg
IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiBtX3N1cHBvcnRlZFNlc3Npb25UeXBlczsKLSAg
ICBWZWN0b3I8U3RyaW5nPiBtX3N1cHBvcnRlZFJvYnVzdG5lc3M7CisgICAgVmVjdG9yPEF0b21T
dHJpbmc+IG1fc3VwcG9ydGVkUm9idXN0bmVzczsKICAgICBWZWN0b3I8TWVkaWFLZXlFbmNyeXB0
aW9uU2NoZW1lPiBtX3N1cHBvcnRlZEVuY3J5cHRpb25TY2hlbWVzOwogICAgIGJvb2wgbV9yZWdp
c3RlcmVkIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07
CkBAIC0xMDksMTEgKzEwOSwxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBNb2NrQ0RNSW5zdGFuY2U7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0
IEF0b21TdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9y
dGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29u
ZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5h
bDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3Qg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25z
JikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0
cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAg
ICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3Qg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25z
JikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVl
UGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYp
IGNvbnN0IGZpbmFsOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
KSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBM
b2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0
IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRh
Q2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggZTY4NmM2M2MxOGYzNTg2ZmZjYTc0ZTE3MzFjMGZmMjc3NDFiMGQz
Yi4uYzVhZjNiNWZiZTBjYWJiOGIyZGUzMGQwODZkMzNhNGY3OTQ3OTE5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTYsNiArMTYsMTAg
QEAgJChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4K
KyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTA4LDYgKzExMiw3IEBAICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIubWVzc2FnZXMuCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2Vi
RnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KKyQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAx
ZmNmN2U0MTEwN2ZiM2Y3YmUyYmM2OTk5MzY2YTA1ZjhlNjUwODI4Li5jNzNlMjg3M2Q5YmZjYTcx
NDY2Yzk0NzMxMTNiOTAwMjYwYjUxNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTEyOSw2ICsxMjksMjEgQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
MTBkMTcyNTU4NzVhMTZlYzZkM2U2YWZkMjUwNmI1MTU1NzYzNTQwNC4uMmQwMDc1ODdhNDU4NjEz
MDZmNDJkY2MzNTA4ZDY1Y2ZjYmU2MmVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMTQ2LDYgKzE0NiwxMSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyIFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
IFwKKyAgICBSZW1vdGVDRE1Qcm94eSBcCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKyAg
ICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24g
XAorICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKICAgICBS
ZW1vdGVNZWRpYVBsYXllclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBhMzk0ZTA5NDMxZTAyNzY4
ZmExMDc0N2NlY2YyYjkzZTlkZjkxNjI1Li4zOTA5YmM4Njk1N2U2MGI0MmIyMzRmOWUzM2ZhMDNm
YmJjMTRkOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01OCwxMCArNTgsMTggQEAKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJS
ZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgiCisjZW5kaWYKKworCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xODksNiArMTk3LDE3IEBAIExp
YldlYlJUQ0NvZGVjc1Byb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVEND
b2RlY3NQcm94eSgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitS
ZW1vdGVDRE1GYWN0b3J5UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3Rv
cnlQcm94eSgpCit7CisgICAgaWYgKCFtX2NkbUZhY3RvcnlQcm94eSkKKyAgICAgICAgbV9jZG1G
YWN0b3J5UHJveHkgPSBtYWtlVW5pcXVlPFJlbW90ZUNETUZhY3RvcnlQcm94eT4oKnRoaXMpOwor
CisgICAgcmV0dXJuICptX2NkbUZhY3RvcnlQcm94eTsKK30KKyNlbmRpZgorCisKIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0yMzksNiArMjU4LDI3IEBAIHZv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
UmVtb3RlQ0RNUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0
b3J5UHJveHkoKS5kaWRSZWNlaXZlQ0RNTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1JbnN0YW5j
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAg
ICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0K
IAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCkBAIC0yNTksNiArMjk5LDI3
IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5k
aWYKKyNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRS
ZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5j
Q0RNTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICNlbmRpZgogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC0yNjksNyArMzMwLDcgQEAgY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjptZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5t
ZWRpYUNhY2hlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKIH0KIAotI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQogY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9ncHVQcm9jZXNzLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IDBlYzIzOGNkMDYyNTM4MzQ3NTliZmU5NmJiYWUwYWRlYmIzNTFhN2UuLmYwMDAx
Y2U0OGFkMGU5YzBmNmYwZmNiZTBmZjNjZjg1YTE3NDEzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDUsNiAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEdQVVByb2Nlc3M7CiBjbGFzcyBMaWJX
ZWJSVENDb2RlY3NQcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKIGNsYXNzIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7
CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKQEAgLTc2LDYgKzc3LDEwIEBAIHB1
YmxpYzoKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYgc2Vzc2lv
bk1hbmFnZXIoKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlQ0RN
RmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsK
IApAQCAtMTE4LDYgKzEyMywxMCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaWJX
ZWJSVENDb2RlY3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsKICNlbmRpZgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fc2Vz
c2lvbk1hbmFnZXI7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5OworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjViNGFmZDRiNDM2Nzc3ZDFjNGQxM2Y4NzBiNDRkZDJiMzY5ODExMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHku
Y3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVkZSA8d3Rm
L0FsZ29yaXRobXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eShH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZUNETUZhY3RvcnlQcm94
eTo6flJlbW90ZUNETUZhY3RvcnlQcm94eSgpID0gZGVmYXVsdDsKKworc3RhdGljIENETUZhY3Rv
cnkqIGZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAg
YXV0byYgZmFjdG9yaWVzID0gQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAg
IGF1dG8gZm91bmRJbmRleCA9IGZhY3Rvcmllcy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiBmYWN0
b3J5KSB7IHJldHVybiBmYWN0b3J5LT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pOyB9KTsK
KyAgICBpZiAoZm91bmRJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIGZhY3Rvcmllc1tmb3VuZEluZGV4XTsKK30KKwordm9pZCBSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRp
b24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIGZhY3RvcnkgPSBmYWN0b3J5Rm9yS2V5
U3lzdGVtKGtleVN5c3RlbSk7CisgICAgaWYgKCFmYWN0b3J5KSB7CisgICAgICAgIGNvbXBsZXRp
b24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcml2YXRl
Q0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RNKGtleVN5c3RlbSk7CisgICAgaWYgKCFwcml2YXRlQ0RN
KSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byBwcm94eSA9IFJlbW90ZUNETVByb3h5OjpjcmVhdGUobWFrZVdlYWtQdHIo
dGhpcyksIFdURk1vdmUocHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90
ZUNETUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uID0gcHJveHktPmNvbmZpZ3VyYXRpb24oKTsKKyAgICBhZGRQcm94eShpZGVu
dGlmaWVyLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgY29tcGxldGlvbihXVEZNb3ZlKGlkZW50aWZp
ZXIpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihm
YWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSkpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94
aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT4oZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6
ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBtX2lu
c3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgaW5zdGFuY2UtPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NE
TU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChh
dXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RN
SWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHByb3h5
LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1
dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
ciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZl
U3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBl
bmNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9i
amVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KFJlbW90ZUNETUlkZW50aWZpZXIgaWQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoIW1fcHJveGll
cy5jb250YWlucyhpZCkpOworICAgIG1fcHJveGllcy5zZXQoaWQsIFdURk1vdmUocHJveHkpKTsK
K30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVByb3h5KFJlbW90ZUNETUlk
ZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fcHJveGllcy5jb250YWlucyhpZCkpOworICAg
IG1fcHJveGllcy5yZW1vdmUoaWQpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6
YWRkSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4mJiBpbnN0YW5jZSkKK3sKKyAgICBBU1NFUlQoIW1f
aW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9pbnN0YW5jZXMuc2V0KGlkLCBXVEZNb3Zl
KGluc3RhbmNlKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0
YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1faW5z
dGFuY2VzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9pbnN0YW5jZXMucmVtb3ZlKGlkKTsKK30KKwor
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSogUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5j
ZShjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImIGlkKQoreworICAgIHJldHVybiBt
X2luc3RhbmNlcy5nZXQoaWQpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRk
U2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+JiYgc2Vzc2lvbikKK3sKKyAgICBB
U1NFUlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwg
V1RGTW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAg
QVNTRVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShp
ZCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzliMWNjYzk1YmJk
M2ZlM2I5ZjMzNTJkODUwMDI3N2E0YmZkMzkzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5OworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CitjbGFz
cyBSZW1vdGVDRE1Qcm94eTsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFz
cyBSZW1vdGVDRE1GYWN0b3J5UHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1G
YWN0b3J5UHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vz
cyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBk
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBl
bmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNv
ZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUlu
c3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZl
U3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJv
eHkoUmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiYm
KTsKKyAgICB2b2lkIHJlbW92ZVByb3h5KFJlbW90ZUNETUlkZW50aWZpZXIpOworCisgICAgdm9p
ZCBhZGRJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmKTsKKyAgICB2b2lkIHJlbW92ZUluc3RhbmNlKFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSog
Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJik7CisKKyAgICB2
b2lkIGFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiYmKTsKKyAgICB2b2lkIHJl
bW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CisKKyAgICBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVu
dGlmaWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgc3VwcG9y
dHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eT4+IG1faW5zdGFuY2VzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5Pj4gbV9zZXNzaW9uczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDdjNWU2ZTYxYzQyMDc4MzFkYTBiZDExOGE2YWFlYjQw
ZDMzMTM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQ0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgewor
ICAgIENyZWF0ZUNETShTdHJpbmcga2V5U3lzdGVtKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JZGVu
dGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb24pIFN5bmNocm9ub3VzCisgICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3Rl
bSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZWQ5MjU0NWI3ZmQwZDRkMzJmNTEyNDI1MWY4YjAwMTVjY2E5NThl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuY3BwCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2UuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJlZjxDRE1JbnN0YW5jZT4m
JiBwcml2KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+a2V5U3lzdGVtKCksCisg
ICAgfSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5
PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHBy
aXYpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlUHJv
eHk6OlJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+
JiYgZmFjdG9yeSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1J
bnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShX
VEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pbnN0YW5jZShXVEZNb3ZlKHByaXYpKQorICAgICwg
bV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK1JlbW90ZUNE
TUluc3RhbmNlUHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVByb3h5KCkgPSBkZWZhdWx0OworCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxl
dGlvbihtX2luc3RhbmNlLT5pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlv
bikgPT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCBhbGxvd2VkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxl
dGlvbihtX2luc3RhbmNlLT5zZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChhbGxvd2Vk
KSA9PSBDRE1JbnN0YW5jZTo6U3VjY2VlZGVkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5OjpzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9p
bnN0YW5jZS0+c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChhbGxvd2VkKSA9PSBDRE1JbnN0YW5j
ZTo6U3VjY2VlZGVkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBjZXJ0aWZpY2F0
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGlm
ICghY2VydGlmaWNhdGUuYnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbihmYWxzZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPnNldFNl
cnZlckNlcnRpZmljYXRlKGNlcnRpZmljYXRlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCkpID09
IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJv
eHk6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1f
aW5zdGFuY2UtPnNldFN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KSA9PSBDRE1JbnN0YW5jZTo6
U3VjY2VlZGVkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGVTZXNz
aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllciYpPiYmIGNvbXBsZXRpb24pCit7CisgICAgYXV0byBwcml2U2Vzc2lvbiA9IG1f
aW5zdGFuY2UtPmNyZWF0ZVNlc3Npb24oKTsKKyAgICBpZiAoIXByaXZTZXNzaW9uIHx8ICFtX2Zh
Y3RvcnkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBwcml2U2Vzc2lv
bi5yZWxlYXNlTm9uTnVsbCgpLCBpZGVudGlmaWVyKTsKKyAgICBtX2ZhY3RvcnktPmFkZFNlc3Np
b24oaWRlbnRpZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY29tcGxldGlvbihpZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKFdl
YkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzIHN0YXR1cywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9pbnN0YW5jZS0+
c2V0SERDUFN0YXR1cyhzdGF0dXMpID09IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOworfQorCisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGY2ZjExMTFmNzEyMDc0Njdj
ZjNjYmI3ODA3ZWVkODkxZDRhZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtMCwwICsxLDg2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNSW5zdGFuY2UuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDRE1JbnN0YW5jZTsKK3N0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dHJ1Y3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOworY2xhc3MgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlUHJveHkgOiBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyICB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1G
YWN0b3J5UHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJik7CisgICAgflJlbW90
ZUNETUluc3RhbmNlUHJveHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5n
ZXQoKTsgfQorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1f
aW5zdGFuY2U7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9y
eVByb3h5OworICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5UHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWwgeyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0RGlzdGluY3RpdmVJZGVu
dGlmaWVyc0FsbG93ZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCBzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVNlc3Npb24oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+
JiYpOworICAgIHZvaWQgc2V0SERDUFN0YXR1cyhXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0
YXR1cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKyAgICBXZWFrUHRyPFJl
bW90ZUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5OworICAgIFJlZjxXZWJDb3JlOjpDRE1JbnN0
YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk+PiBtX3Nlc3Npb25zOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQyMTk3NDY3ZDA5NjUzZjQwZDA3ZmU3OTVjMDZm
OWQwNTQ3NjcwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IE5vdFJlZkNvdW50
ZWQgeworICAgIENyZWF0ZVNlc3Npb24oKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyIGlkKSBTeW5jaHJvbm91cworICAgIEluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworICAgIFNldERpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hy
b25vdXMKKyAgICBTZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dlZCkgLT4gKGJv
b2wgc3VjY2VzcykgU3luY2hyb25vdXMKKyAgICBTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgY2VydGlmaWNhdGUpIC0+IChib29sIHN1Y2Nlc3MpIFN5
bmNocm9ub3VzCisgICAgU2V0U3RvcmFnZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5KSAtPiAo
Ym9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworICAgIFNldEhEQ1BTdGF0dXMoV2ViQ29yZTo6Q0RN
SW5zdGFuY2U6OkhEQ1BTdGF0dXMgc3RhdHVzKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91
cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA4NTIxZDY4OGU4MGUwMWFhODQ1ZGQwOTBiMjNjODhlMTE4Y2Y3MmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuY3BwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+
JiYgZmFjdG9yeSwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uLCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0
byBzZXNzaW9uUHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk+KG5ldyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShXVEZNb3ZlKGZhY3Rvcnkp
LCBXVEZNb3ZlKHNlc3Npb24pLCBpZGVudGlmaWVyKSk7CisgICAgYXV0byBjbGllbnQgPSBtYWtl
V2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+KHNlc3Npb25Qcm94eS5n
ZXQoKSk7CisgICAgc2Vzc2lvblByb3h5LT5tX3Nlc3Npb24tPnNldENsaWVudChXVEZNb3ZlKGNs
aWVudCkpOworICAgIHJldHVybiBzZXNzaW9uUHJveHk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShXZWFrUHRyPFJlbW90
ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9zZXNzaW9u
KFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK3sKK30K
KworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWluaXREYXRhLmJ1ZmZlcigpKSB7CisgICAgICAg
IGNvbXBsZXRpb24oeyB9LCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0
RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
Y29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBzZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6
YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vu
c2UoU3RyaW5nIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlJiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNvbXBsZXRp
b24pCit7CisgICAgaWYgKCFyZXNwb25zZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9u
KHRydWUsIHsgfSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQs
IHR5cGUsICpyZXNwb25zZS5idWZmZXIoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRp
b24pXSAoYm9vbCBzZXNzaW9uQ2xvc2VkLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3Rvcj4mJiBrZXlTdGF0dXNlcywgT3B0aW9uYWw8ZG91YmxlPiYmIGV4cGlyYXRp
b25UaW1lLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwg
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAg
ICAgICAgY29tcGxldGlvbihzZXNzaW9uQ2xvc2VkLCBXVEZNb3ZlKGtleVN0YXR1c2VzKSwgV1RG
TW92ZShleHBpcmF0aW9uVGltZSksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA9PSBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5cGUsIFN0cmlu
ZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjb21wbGV0
aW9uKQoreworICAgIG1fc2Vzc2lvbi0+bG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklkLCBvcmln
aW4sIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3Vi
bGU+JiYgZXhwaXJhdGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQs
IENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUg
eworICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGly
YXRpb25UaW1lKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2VlZGVkLCBmYWlsdXJlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBDbG9zZVNlc3Npb25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5j
bG9zZVNlc3Npb24oc2Vzc2lvbklkLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbild
ICgpIG11dGFibGUgeyBjb21wbGV0aW9uKCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRp
b24pCit7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUs
IFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAo
ZXhwaXJlZFNlc3Npb25zRGF0YSkKKyAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVy
ZW5jZSA9IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vz
c2lvbnNEYXRhKSk7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdU
Rk1vdmUoZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkKQoreworICAgIG1fc2Vzc2lvbi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25J
ZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0
YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmIChtX2ZhY3Rv
cnkpCisgICAgICAgIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtl
eVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5
cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQoreworICAgIGlmIChtX2ZhY3Rv
cnkpCisgICAgICAgIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNz
YWdlKHR5cGUsIFdURk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkKQoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAgIG1fZmFjdG9yeS0+
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9p
ZGVudGlmaWVyKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjU4NDY0MDgzZGNhYzNkN2FkNWQ1NGFlYjFjZmQwY2IyMzBiZDUwNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgZmlu
YWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RN
RmFjdG9yeVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmLCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eSgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1v
dGVDRE1GYWN0b3J5UHJveHk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb24+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gVHlwZXMKKyAgICB1c2lu
ZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7
CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3I7CisgICAgdXNpbmcgTWVzc2FnZSA9IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAgICB1c2luZyBTZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTsKKyAgICB1c2luZyBM
aWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYmLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCwgYm9vbCk+Owor
ICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+JiYsIE9w
dGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wpPjsKKyAgICB1c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9w
dGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRG
YWlsdXJlKT47CisgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+OworICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBPcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGJvb2wpPjsKKyAgICB1c2luZyBTdG9yZVJlY29yZENh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKKworICAgIC8vIE1lc3NhZ2VzCisg
ICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5
cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJik7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0
cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpOworICAg
IHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKKwor
ICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAorICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVz
ZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29y
ZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkg
ZmluYWw7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwor
CisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBSZWY8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkyMzNlZTljMzE1Y2YyODlmMjdmYWY3MWEyY2RiM2JkNDlmYjExNmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2Vz
IC0+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IE5vdFJlZkNvdW50ZWQgeworCisgICAg
UmVxdWVzdExpY2Vuc2UoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0
eXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIGluaXREYXRhKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIG1lc3NhZ2Us
IFN0cmluZyBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNj
ZWVkZWQpIEFzeW5jCisgICAgVXBkYXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSByZXNwb25zZSkgLT4gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9u
YWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRL
ZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBB
c3luYworICAgIExvYWRTZXNzaW9uKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5z
ZVR5cGUgdHlwZSwgU3RyaW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbikgLT4gKE9wdGlvbmFs
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5
cywgT3B0aW9uYWw8ZG91YmxlPiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCwgZW51
bTp1aW50OF90IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJl
IGxvYWRGYWlsdXJlKSBBc3luYworICAgIENsb3NlU2Vzc2lvbihTdHJpbmcgc2Vzc2lvbklkKSAt
PiAoKSBBc3luYworICAgIFJlbW92ZVNlc3Npb25EYXRhKFN0cmluZyBzZXNzaW9uSWQsIFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSkgLT4gKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBB
c3luYworICAgIFN0b3JlUmVjb3JkT2ZLZXlVc2FnZShTdHJpbmcgc2Vzc2lvbklkKQorfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJv
eHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhhYWEzNDY3NTFhNzlkNjc2ODhmNWIyZWM4ZTIyYThlYTc5YTNk
MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkuY3BwCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisKKyNpbmNsdWRlICJSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IFJlbW90ZUNETVByb3h5OjpjcmVhdGUoV2Vha1B0
cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkNETVByaXZhdGU+JiYgcHJpdikKK3sKKyAgICBpZiAoIXByaXYpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gbWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNQ29uZmln
dXJhdGlvbiYmPih7CisgICAgICAgIHByaXYtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSwKKyAg
ICAgICAgcHJpdi0+c3VwcG9ydGVkUm9idXN0bmVzc2VzKCksCisgICAgICAgIHByaXYtPnN1cHBv
cnRzU2VydmVyQ2VydGlmaWNhdGVzKCksCisgICAgICAgIHByaXYtPnN1cHBvcnRzU2Vzc2lvbnMo
KQorICAgIH0pOworICAgIC8vIFVzZSBuZXcoKSB0byBhY2Nlc3MgQ0RNUHJpdmF0ZSdzIHByaXZh
dGUgY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94
eT4obmV3IFJlbW90ZUNETVByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUocHJpdiksIFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVBy
b3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW5pcXVl
X3B0cjxDRE1Qcml2YXRlPiYmIHByaXYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAg
ICAsIG1fcHJpdmF0ZShXVEZNb3ZlKHByaXYpKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1v
dmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK1JlbW90ZUNETVByb3h5Ojp+UmVtb3RlQ0RNUHJv
eHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlv
bihtX3ByaXZhdGUtPnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSk7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlv
bnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3Qg
Q0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c3VwcG9ydHND
b25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMp
KTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiB0eXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPnN1cHBvcnRzU2Vz
c2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbih0eXBlLCBjb25maWd1cmF0aW9uKSk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgZGF0YSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGlmICghZGF0YS5idWZmZXIoKSkg
eworICAgICAgICBjb21wbGV0aW9uKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCAqZGF0YS5idWZm
ZXIoKSkpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
UmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQ0RNUmVxdWlyZW1lbnQpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbiht
X3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25maWd1cmF0aW9u
LCByZXN0cmljdGlvbnMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6cGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQ0RNUmVxdWlyZW1lbnQpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlv
bihtX3ByaXZhdGUtPnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbmZpZ3VyYXRpb24sIHJl
c3RyaWN0aW9ucykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+ZGlz
dGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25maWd1
cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZUluc3RhbmNlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLCBSZW1vdGVDRE1J
bnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHByaXZh
dGVJbnN0YW5jZSA9IG1fcHJpdmF0ZS0+Y3JlYXRlSW5zdGFuY2UoKTsKKyAgICBpZiAoIXByaXZh
dGVJbnN0YW5jZSB8fCAhbV9mYWN0b3J5KSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gaW5zdGFuY2UgPSBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5OjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwgcHJpdmF0
ZUluc3RhbmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGluc3RhbmNlLT5jb25maWd1cmF0aW9uKCk7
CisgICAgbV9mYWN0b3J5LT5hZGRJbnN0YW5jZShpZGVudGlmaWVyLCBXVEZNb3ZlKGluc3RhbmNl
KSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsK
K30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRpYWxpemUoKQoreworICAgIG1f
cHJpdmF0ZS0+bG9hZEFuZEluaXRpYWxpemUoKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIHJl
c3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5zYW5p
dGl6ZVJlc3BvbnNlKCpyZXNwb25zZS5idWZmZXIoKSkpOworfQorCit2b2lkIFJlbW90ZUNETVBy
b3h5OjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb24pCit7CisgICAg
Y29tcGxldGlvbihtX3ByaXZhdGUtPnNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCkpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzgwZmM1MTNiYTE3ODk3YzVmMzQ2ZWY1MWE1N2FhYjkw
YjE4ZGQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNUHJpdmF0ZTsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2VudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90OworZW51bSBjbGFzcyBDRE1T
ZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CitzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsK
K3N0cnVjdCBDRE1SZXN0cmljdGlvbnM7Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFJlbW90ZUNETUluc3RhbmNlUHJveHk7CitzdHJ1Y3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uOworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUNE
TVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4m
Jik7CisgICAgflJlbW90ZUNETVByb3h5KCk7CisKKyAgICBjb25zdCBSZW1vdGVDRE1Db25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmdl
dCgpOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94
eTsKKyAgICBSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYsIFVuaXF1ZVJlZjxSZW1vdGVD
RE1Db25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisg
ICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25z
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3Jl
OjpDRE1SZXN0cmljdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3Jl
OjpDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCk+JiYpOworICAgIHZvaWQgcGVyc2lz
dGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQpPiYmKTsKKyAgICB2b2lkIGRpc3RpbmN0aXZl
SWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgY3JlYXRlSW5zdGFuY2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1v
dGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYm
KT4mJik7CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpOworICAgIHZvaWQgc2FuaXRpemVS
ZXNwb25zZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIHJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmKT4m
Jik7CisgICAgdm9pZCBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+JiYpPiYmKTsKKworICAgIFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICBVbmlxdWVSZWY8UmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjRlNTM1MzFhZTc0NGQwNDUxNzE5NDEzYjQzYmZh
YzE1Njg0MGJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
CittZXNzYWdlcyAtPiBSZW1vdGVDRE1Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTdXBwb3J0
c0NvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbikgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRz
Q29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgc3RydWN0IFdlYkNvcmU6OkNETVJlc3RyaWN0
aW9ucyByZXN0cmljdGlvbnMpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oZW51bTp1aW50OF90IFdlYkNvcmU6OkNE
TVNlc3Npb25UeXBlIHR5cGUsIHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24pIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTdXBw
b3J0c0luaXREYXRhKEF0b21TdHJpbmcgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIGRhdGEpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBEaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbiwgc3RydWN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyByZXN0
cmljdGlvbnMpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcmVzdWx0
KSBTeW5jaHJvbm91cworICAgIFBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KHN0cnVjdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIHN0cnVjdCBXZWJD
b3JlOjpDRE1SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKSAtPiAoZW51bTp1aW50OF90IFdlYkNv
cmU6OkNETVJlcXVpcmVtZW50IHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBEaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKHN0cnVjdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIC0+IChib29sIHJlc3VsdCkg
U3luY2hyb25vdXMKKyAgICBDcmVhdGVJbnN0YW5jZSgpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3VzCisgICAgTG9hZEFuZEluaXRpYWxp
emUoKQorICAgIFNhbml0aXplUmVzcG9uc2UoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
IHJlc3BvbnNlKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3VsdCkgU3lu
Y2hyb25vdXMKKyAgICBTYW5pdGl6ZVNlc3Npb25JZChTdHJpbmcgc2Vzc2lvbklkKSAtPiAoT3B0
aW9uYWw8U3RyaW5nPiByZXN1bHQpIFN5bmNocm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwCmluZGV4IDVlZmU2NjI1ZDZmMmY5MGFkZWQ3N2Q4YzU1OTdkZjNjNzg4ZjMxZGIuLjQ4
MTQ1ODQ3NTJhMTNiMGNlODUwMzQ4OTVkZjkxNDEwMGM1YWE0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1v
dGVDRE1GYWN0b3J5UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00OTAsMTcgKzQ5NSwxNiBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5
SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKQordm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVk
aWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxh
eWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFU
eXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERh
dGEtPmRhdGEoKSksIGluaXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgp
CkBAIC02ODIsNiArNjg2LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRk
ZWQoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkg
PSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgp
LmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VB
dHRhY2hlZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
ZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21h
bmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldElu
c3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VEZXRhY2hl
ZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBt
X21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdl
dEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlw
dFdpdGhJbnN0YW5jZShpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRpZgorCisK
KyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVBZnRl
cktleU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGlu
dWVBZnRlcktleU5lZWRlZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxheWVyLT5i
ZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggMTZiYjJkZGZhMjE0
NzQ3MGU4NjAwYWI3MTM5NmE1OWNkZjU0NDlmYS4uMjA4OTZiOTU1NTQ4MTBiNWNjZmRjMjVjYWQ1
NmE0ZDBhYTg2OTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTI2LDYgKzEzMSwxNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXImJik7CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFu
Y2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2
b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYKKwogICAg
IHZvaWQgYmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhE
Q1BFcnJvcigpOwogCkBAIC0xNjgsNyArMTgzLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5
ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICBib29s
IG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5
ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApAQCAt
MjUyLDYgKzI2NywxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkxheW91dFJlY3QgbV92aWRl
b0NvbnRlbnRCb3hSZWN0OwogICAgIGZsb2F0IG1fdmlkZW9Db250ZW50U2NhbGUgeyAxLjAgfTsK
IAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2Ug
fTsKKyNlbmRpZgorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2Vy
JiBtX2xvZ2dlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBjYTY2MzE0ZGZiZTZkMzFiZTA5OTUyYzVmMjgyZjEwNjE4ZmViZWJhLi4yOWQyODY5YzE2NDJk
OGZjMjY2ZTg5MWNiNjE4ZTQ4MjRiMGIyMjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNzMsOSArNzMsMTYgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSBOb3RSZWZDb3VudGVkIHsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
ICAgICAjIFNldENETVNlc3Npb24KICAgICBLZXlBZGRlZCgpCi0gICAgIyBDZG1JbnN0YW5jZUF0
dGFjaGVkCi0gICAgIyBDZG1JbnN0YW5jZURldGFjaGVkCi0gICAgIyBBdHRlbXB0VG9EZWNyeXB0
V2l0aEluc3RhbmNlCisjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
Q2RtSW5zdGFuY2VBdHRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBp
bnN0YW5jZUlkKQorICAgIENkbUluc3RhbmNlRGV0YWNoZWQoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyAgICBBdHRlbXB0VG9EZWNyeXB0V2l0aEluc3Rh
bmNlKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisjZW5k
aWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIFNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91
bGQpCiAjZW5kaWYKIAogICAgIEJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA2NzJiZWM0OGVhNzljNjgyYzEyNDVl
NTI2ZjA0ODhjNjc5OTY4MGI3Li41M2E4MDc4MTdiMmE2YjFkZGY1MTM0NTg2ZWYyZTcxMDJmNjgy
NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0xNDks
MTMgKzE0OSwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvbwogICAgIHNlbmRUb0NsaWVudChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNl
LCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9p
c0RvbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNB
Y3RpdmUoKSk7Ci0gICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyBkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisgICAgc2VuZFRvQ2xp
ZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBl
bmNvZGVkRGF0YUxlbmd0aCB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpk
aWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9ybURhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkMzNjYmZmMTA4OWNj
MTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi41MDgwMGYzNTAyMjM2MmY5NmNhMjFiNWU3ZWJk
MDdkOGQ0MmEyZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAg
LTQzLDcgKzQzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogbmFtZXNwYWNlIElQQyB7
CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CiB9CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9v
bCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lk
IGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXgg
YTc0OWFhYjg3MDA1NGNlYjY5MGU1ZjE0ZjQwNzU2M2ZmY2QwZjliOC4uODhmNGYyZmE2NDI2MzM0
OWI3YWQyMmQwNmY0M2EyN2Y3MjMzNTFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0hhbmRsZU1lc3NhZ2UuaApAQCAtOTYsMTIgKzk2LDYgQEAgc3RydWN0IENvZGluZ1R5cGUgewog
ICAgIHR5cGVkZWYgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxU
Pj4gVHlwZTsKIH07CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kaW5nVHlwZTxjb25zdCBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHR5cGVkZWYgRGF0YVJlZmVyZW5jZSBUeXBlOwot
fTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1Y3QgQ29kaW5nVHlwZTxzdGQ6OnR1
cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx0eXBlbmFtZSBDb2RpbmdUeXBl
PFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkYWQ0NjYwNDYzMmU5MjY5ZjE5
MWQxNWM4MGRkMjExZTU0ODRlN2EzLi5iZmIzMzk1NzY5NmYyZTcyYTIzNDgyMzQyMjUyYjcyYmQ3
OTQyODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yNSw0MCArMjUsNTEgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVs
dDsKKyAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKKyAg
ICB7CisgICAgfQorICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIp
KQorICAgIHsKKyAgICB9CiAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2RhdGEoYnVmZmVyKSB7IH0K
LSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQotICAgICAgICA6IG1fZGF0YShzdGQ6Om1ha2VfcGFpcihkYXRhLCBzaXplKSkgeyB9
CisgICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKKyAg
ICB7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAgICB9CisKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0K
KyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXI7IH0KKworICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CisgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+
aXNFbXB0eSgpIDogdHJ1ZTsgfQogCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICB7Ci0gICAgICAgIHN3aXRjaE9uKG1fZGF0YSwKLSAgICAgICAgICAgIFtlbmNv
ZGVyID0gJmVuY29kZXJdIChjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICB1aW50NjRfdCBidWZmZXJTaXplID0g
YnVmZmVyLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+cmVzZXJ2ZShidWZmZXJT
aXplICsgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgICAgICAgICAgICAgKmVuY29kZXIgPDwgYnVm
ZmVyU2l6ZTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZm
ZXIuZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbGVtZW50LnNlZ21lbnQtPmRh
dGEoKSksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpLCAxKTsKLSAgICAgICAgICAgIH0sIFtlbmNv
ZGVyID0gJmVuY29kZXJdIChjb25zdCBzdGQ6OnBhaXI8Y29uc3QgdWludDhfdCosIHNpemVfdD4m
IHBhaXIpIG11dGFibGUgewotICAgICAgICAgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBw
YWlyLnNlY29uZDsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5yZXNlcnZlKGJ1ZmZlclNpemUg
KyBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgICAgICAgICAqZW5jb2RlciA8PCBidWZmZXJT
aXplOwotICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUZpeGVkTGVuZ3RoRGF0YShwYWly
LmZpcnN0LCBwYWlyLnNlY29uZCwgMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7CisgICAg
ICAgIGVuY29kZXIgPDwgbV9idWZmZXI7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPFNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsK
KyAgICAgICAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGJ1ZmZlcjsK
KyAgICAgICAgZGVjb2RlciA+PiBidWZmZXI7CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSgqYnVm
ZmVyKSB9OwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBWYXJpYW50PHN0ZDo6cGFpcjxjb25zdCB1
aW50OF90Kiwgc2l6ZV90PiwgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IG1fZGF0
YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDI2MDQ5MGZiN2I1
NmE4OGNmZjBkOWI4OWMxYTcxNjhhZWQwZDE4NWMuLjcxNjRjMzczNDMxMDFmZWYwYzNkNWYwZGI2
N2M1MmNkNjE4YjVlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMjI3LDYgKzIyNyw5IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpS
ZW1vdGVDRE1JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
S2l0OjpSVENFbmNvZGVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4YzlmYTIxYWYzOGE3MTYyYzZjMjA5ZTkzOTQ2
ODkwNmEyNWMzY2EzLi5kMmRlZTlmYjZkMTAwOGI0ZTU4MjU5MjFiMjIxZjI5YWE2ZTkzNDExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTEzNCw3ICsxMzQsOCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAgZW5jb2RlciA8PCBoYW5k
bGU7CiB9CiAKLXN0YXRpYyBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQordGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBl
bmFtZS4uLj4gY2xhc3MgUj4KK3N0YXRpYyBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVy
JiBkZWNvZGVyLCBSPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICB1aW50NjRfdCBidWZm
ZXJTaXplID0gMDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNpemUpKQpAQCAtMzIw
Myw0ICszMjA0LDczIEBAIE9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvCiB9CiAjZW5kaWYKIAordm9p
ZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9
CisKK09wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlJiBtZXNzYWdlKQoreworICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJzdDsKKworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigp
OworICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlVHlwZSB0eXBlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShi
dWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gbWFrZU9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4o
eyB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSB9KTsKK30KKwordm9pZCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yJiBrZXlTdGF0dXNlcykKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihrZXlTdGF0dXNlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYga2V5U3RhdHVz
IDoga2V5U3RhdHVzZXMpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5ID0ga2V5
U3RhdHVzLmZpcnN0LmNvcHlSZWYoKTsKKyAgICAgICAgZW5jb2RlciA8PCBrZXkgPDwga2V5U3Rh
dHVzLnNlY29uZDsKKyAgICB9Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgdWludDY0X3QgZGF0YVNpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhU2l6ZSkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNlczsKKyAgICBrZXlTdGF0dXNlcy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFTaXplKTsKKworICAgIGZvciAodWludDY0X3QgaSA9
IDA7IGkgPCBkYXRhU2l6ZTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtl
eTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShrZXkpIHx8ICFrZXkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkNsaWVudDo6S2V5U3RhdHVzIHN0YXR1czsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBr
ZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBrZXkucmVsZWFzZU5vbk51bGwoKSwgc3RhdHVz
IH0pOworICAgIH0KKyAgICByZXR1cm4ga2V5U3RhdHVzZXM7Cit9CisjZW5kaWYgLy8gRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGUzODE0ZTIxZjgzMzZhYWYyZjQ0
NDMyMzJlMzQ0ZTAwNzRkYWUyYTEuLjgxMDBjOTI0M2ZhZGI4NzYxYzZlMzE3ZWEzZWYzNGIwOGEx
ZjJmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC01NSw2ICs1NSwxMSBAQAogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNBZGRpdGlvbnMuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBu
YW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC0xMDAsNiArMTA1LDcgQEAg
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsK
IGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKQEAgLTgyOSw2ICs4MzUs
MjMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlVmFsdWU+IHsKIH07CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
IGRlY29kZShEZWNvZGVyJik7Cit9OworCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpNZXNzYWdlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2UmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Im
KTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3I+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTk2NSw0ICs5ODgsMjggQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXVEZMb2dMZXZlbD4gewogICAgID47CiB9OwogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpT
ZXNzaW9uTG9hZEZhaWx1cmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNz
aW9uTG9hZEZhaWx1cmU6Ok5vbmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpT
ZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGEsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZSwKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6UXVvdGFF
eGNlZWRlZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFp
bHVyZTo6T3RoZXIKKyAgICA+OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cywKKyAgICBX
ZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6VW5rbm93biwKKyAgICBXZWJDb3JlOjpD
RE1JbnN0YW5jZTo6SERDUFN0YXR1czo6VmFsaWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkhEQ1BTdGF0dXM6Ok91dHB1dFJlc3RyaWN0ZWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkhEQ1BTdGF0dXM6Ok91dHB1dERvd25zY2FsZWQKKyAgICA+OworfTsKKworI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggYTVkMGJlMTQyNzFmNjMwNmY4MzZiOGZk
YmQ3ZDQyMGYyOTUyNDZlYS4uZWYxMWIwODEwMjY3ODg2YTY2YTY3OTMxMDRiMDEzNGIwYTBkZDEz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC0zMSw2ICszMSwxMCBAQCBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
VHJhY2tQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNw
cAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtMzksNiAr
NDMsNyBAQCBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAogCisKIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tB
dHRyaWJ1dGlvbk1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFj
a2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApA
QCAtNTM0LDYgKzUzOSwxMCBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCitXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2Uu
Y3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11bmlm
eQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpp
bmRleCA3ODk3ZTI4ZTNjOGNhMjI3NDUxZmQ1NzQxZjdkZDE1NWNjN2RlMTVmLi4zNDNiYTFiMTAz
NzMyNDI1YjYwMjc3ZThmNTgxMGYxN2Q4MWFhYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMzMsNiArMzMsNyBAQAog
I2ltcG9ydCAiUGFnZUNsaWVudC5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1w
b3J0ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NQcm94eS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgpAQCAtMTgzLDEzICsxODQs
MTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYWdDYXJldFJlY3QoY29uc3QgSW50UmVjdCYg
ZHJhZ0NhcmV0UmVjdCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2ht
ZW50PiYmIGF0dGFjaG1lbnQsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpw
bGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1l
bnQsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKICAgICBpZiAoZGF0YVJlZmVyZW5j
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgp
KTsKLSAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmls
ZVdyYXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCldKTsKKyAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRv
cHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpkYXRhUmVmZXJlbmNlLmJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5h
dXRvcmVsZWFzZSgpXSk7CiAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnBy
ZWZlcnJlZEZpbGVOYW1lXTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlV3JhcHBlcihmaWxlV3Jh
cHBlci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBmOTcxZjk2ZjRkZjgzZWJmNTA1YjJkZGM0YWUyN2U2Y2E3ZDVjYzc1Li4wZmJmMDM1MjJl
NWVmOTVhZDI3ZmM1NTE5ZDhmNmYwZmUxOTE1MjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY5MDYsMTMgKzY5MDYsMTMgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnZvaWRDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFjaygpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGNh
bGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUo
ZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7CisgICAg
Y2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSks
IGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpi
b29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTkwODEs
NyArOTA4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNv
bnN0IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmlz
aGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxi
YWNrSUQpOwogfQpAQCAtOTMxMiw3ICs5MzEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhh
dHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwg
YXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUo
ZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJl
ZEZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7
CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXA6
OmlzVmFsaWRLZXkoaWRlbnRpZmllcikpOwogCkBAIC05NDE5LDcgKzk0MTksNyBAQCBXZWJQYWdl
UHJveHk6OlNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIFdlYlBhZ2VQcm94eTo6d2ls
bFVwZGF0ZUF0dGFjaG1lbgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIzMTU0NTQ4YTA4
YjU4OGRmYjM0NjI2MWJjN2RlM2RiYjc1NGY2Y2YuLmYzMzJjNWQyMGRiYThmMWRhZjI3M2IwYzZm
MWU1YzhiMmJmZGU3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xOTMsNiArMTkzLDcgQEAgZW51bSBjbGFzcyBJbnNwZWN0b3JUYXJnZXRUeXBlIDogdWludDhf
dDsKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJl
bmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMTUwMSw3ICsxNTAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCk7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29u
c3QgV2ViQ29yZTo6TGlua0ljb24mLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwotICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQs
IGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBzZXRG
b2N1cyhib29sIGZvY3VzZWQpOwogICAgIHZvaWQgc2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0Jik7CkBAIC0yMDA1LDcgKzIwMDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKICAg
ICB2b2lkIHZvaWRDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lkIGRhdGFDYWxsYmFjayhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRhdGFDYWxs
YmFjayhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsK
ICAgICB2b2lkIGltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBD
YWxsYmFja0lEKTsKICAgICB2b2lkIGJvb2xDYWxsYmFjayhib29sIHJlc3VsdCwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsK
QEAgLTIxODMsMTIgKzIxODQsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BBbGxVUkxTY2hl
bWVUYXNrcyhXZWJQcm9jZXNzUHJveHkqID0gbnVsbHB0cik7CiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21E
YXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZv
aWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHJl
Z2lzdGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNv
bnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKTsK
IAotICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik7CisgICAgdm9pZCBwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpB
dHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHBsYXRmb3JtUmVnaXN0ZXJB
dHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
OwogICAgIHZvaWQgcGxhdGZvcm1DbG9uZUF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4m
JiBmcm9tQXR0YWNobWVudCwgUmVmPEFQSTo6QXR0YWNobWVudD4mJiB0b0F0dGFjaG1lbnQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggZTM5ZGMyNWJiZDhmOGIxNWQ2NjgxOGY2ZDZkODJhM2I1Njk5OTQ5Mi4uYTVlNmY5NjUx
MWU1MGE4MTQzZGI2ZjJhZDNlMjY0ZTkyYjlhYWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTMwLDcgKzUzMCw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkK
IAogICAgIEdldExvYWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNvcmU6OkxpbmtJY29uIGlj
b24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEZpbmlzaGVkTG9hZGluZ0lj
b24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
KTsKKyAgICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
LCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShN
QUMpCiAgICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmNjZmI2NWE4NGEyN2NmYmU3
NjViZjc1YjkxNmM2NTMxMjNmNjMyNC4uZGQyOGViZTA5NDExNWY1NmRlYmVlODExZGE4YTIzNTQx
ZjQ1MTc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNjk1LDYgKzE2OTUsNyBAQAogCQlDRDE5RDJFQTIwNDY0MDZGMDAxNzA3NEEg
LyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDE5RDJFODIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNj
cmVlblRvdWNoU2VjaGV1cmlzdGljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0QyODY1RUUyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNr
U3RhdGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0QyODY1RUMyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZl
ci5oICovOyB9OwogCQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0
ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5t
bSAqLzsgfTsKKwkJQ0Q0NjYxODMyNDAxMEE2NzAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0Q0OTFCMDgxRTcwRDA1
RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ5MUIwNjFFNzBEMDVGMDAwMDkwNjYgLyog
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCAqLzsgfTsKIAkJQ0Q0OTFCMEQxRTczMkU0RDAwMDA5
MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjBCMUU3MzJFNEQw
MDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCUNENDkxQjBFMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDQ5MUIwQzFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNz
YWdlcy5oICovOyB9OwpAQCAtMTcxNyw2ICsxNzE4LDIwIEBACiAJCUNEQTI5QTJCMUNCRUI2N0Ew
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMjcxQ0JFQjY3QTAw
OTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJ
CUNEQTkzREIwMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQ
YXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREE5M0RBRTIyRjhCQ0YzMDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGlj
UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVy
aXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQTkzREFGMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNo
ZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCAqLzsgfTsKKwkJQ0RBQzIwQjQyM0ZCNThGMjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEIyMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmggKi87IH07CisJCUNEQUMyMEMzMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQUMyMEI2MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwQzQyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREFDMjBCNzIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCAq
LzsgfTsKKwkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMy
MEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi87IH07CisJ
CUNEQUMyMEM3MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAv
KiBSZW1vdGVDRE0uaCAqLzsgfTsKKwkJQ0RBQzIwQzkyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMENBMjNGQzJGNzUw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLzsgfTsKKwkJQ0RBQzIwQ0QyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQUMyMEMwMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0
b3J5LmggKi87IH07CisJCUNEQUMyMENFMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24uaCAqLzsgfTsKKwkJQ0RBQzIwQ0YyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmgg
Ki87IH07CisJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNEQUMyMEY4MjNGQzcyNkMwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEY1MjNGQzM4M0IwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
KwkJQ0RBQzIwRjkyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQUMyMEVDMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNEQUMyMEZBMjNGQzcy
NkMwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBFRjIzRkMzODM5MDAy
MURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDREMy
ODMxRDIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMyODMxQjIwMUJENzlEMDBF
NkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi87IH07CiAJCUNEQ0E4NUM5MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYx
REYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9OwogCQlDRTExQUQ1MjFD
QkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2ln
bmluZy5oICovOyB9OwpAQCAtNDk0NSw2ICs0OTYwLDEwIEBACiAJCUNEMTlEMkU5MjA0NjQwNkYw
MDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcDsgcGF0aCA9IGlvcy9mdWxsc2Ny
ZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2Jz
ZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjg2NUVEMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzVGFz
a1N0YXRlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTdG
MjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRDQ2NjE4MDI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNENDY2MTgyMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDQ5MUIwNTFFNzBEMDVGMDAwMDkwNjYg
LyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDQ5MUIwNjFFNzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMEExRTcz
MkQxMjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDk4Niw2ICs1MDA1LDQzIEBACiAJCUNEQTI5QTI3MUNCRUI2N0EwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDREE5
M0RBRTIyRjhCQ0YzMDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1l
dGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0
ZXJzLmg7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQ
YXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQTkzREFGMjJGOEJD
RjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMu
Y3BwOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFy
YW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDc4MjNGQjFF
MjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNRmFjdG9yeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMy
MDc5MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwN0MyM0ZCMUVGOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA4MjIzRkIyMTM0
MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwODMyM0ZCMjEzNDAwMjFE
RUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETVBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwODYyM0ZCMjE1ODAw
MjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETVByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBBRDIzRkI1
ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFFMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBBRjIz
RkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMTIzRkI1OEUyMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEIzMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCNjIzRkMyRjczMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBCNzIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFu
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjgyM0ZDMkY3MzAwMjFE
RUUzIC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjBCOTIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkEyM0ZDMkY3NDAwMjFERUUz
IC8qIFJlbW90ZUNETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVD
RE0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkIyM0ZDMkY3NDAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCRTIzRkMyRjc0MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJGMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzAyM0ZDMkY3NTAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBDMTIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBDMjIzRkMyRjc1MDAyMURF
RTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVDRE1JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMEVCMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVDMjNG
QzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQUMyMEVEMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUUyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwRjAyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMy
MEYxMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3Nh
Z2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjBGMjIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYzMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1G
YWN0b3J5UHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBGNDIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY1MjNGQzM4M0IwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGNjIzRkMz
ODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVz
c2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzI4MzFCMjAx
QkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3Jl
ZW5TdGFja1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMjgzMUMyMDFC
RDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5tbTsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL1dL
RnVsbHNjcmVlblN0YWNrVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RD
MzgyRjcxNzIxMTUwNjAwOEEyRkMzIC8qIENGTmV0d29yay5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
bmFtZSA9IENGTmV0d29yay5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwpA
QCAtNTI2Niw2ICs1MzIyLDIwIEBACiAJCQkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3QjFEMDRCMjNEMzhGQ0UwMDM5OUE2
RSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDc5MjMx
NEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aCAqLywKKwkJCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmNwcCAqLywK
KwkJCQlDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi8sCisJCQkJQ0RB
QzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCAqLywKKwkJ
CQlDREFDMjBCOTIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5jcHAgKi8sCisJ
CQkJQ0RBQzIwQzAyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLywKKwkJ
CQlDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oICovLAor
CQkJCUNEQUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8s
CisJCQkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi8s
CisJCQkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbi5oICovLAorCQkJCUNEQUMyMEI2MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBCRTIzRkMyRjc0MDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCAqLywKKwkJCQlDREFDMjBCRDIzRkMyRjc0MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi8sCisJCQkJQ0Q0NjYxN0YyNDAx
MDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywK
KwkJCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oICovLAogCQkJCTA3QjkzRkY1MjNBRjBDQjgwMDM2RjhFQSAvKiBSZW1vdGVN
ZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQkwNzkyMzEzNDIzOUIz
QjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8sCkBAIC01MjkxLDYg
KzUzNjEsMTggQEAKIAkJCQkxRDBFQ0VBOTIzRkM4NEJCMDBEMTcyRjYgLyogY29jb2EgKi8sCiAJ
CQkJMDcxQkM1N0UyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAg
Ki8sCiAJCQkJMDcxQkM1N0YyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94
eS5oICovLAorCQkJCUNEQUMyMDc5MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHkuY3BwICovLAorCQkJCUNEQUMyMDc4MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCAqLywKKwkJCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEIzMjNGQjU4RjIwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjBCMjIzRkI1
OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovLAorCQkJCUNEQUMyMEIx
MjNGQjU4RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICov
LAorCQkJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwQUUyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8sCisJCQkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNE
QUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8sCisJCQkJQ0RB
QzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8sCisJCQkJQ0RBQzIw
ODYyM0ZCMjE1ODAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJ
CTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAgKi8sCiAJCQkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmggKi8sCiAJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtOTYyNSw2ICs5
NzA3LDIxIEBACiAJCQkJMUEwNDNCNUMxMjRENUU5RDAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUE4RUZBNkUxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdp
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2
N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYyMjNGQzM4M0EwMDIx
REVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJ
CUNEQUMyMEYzMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdl
cy5oICovLAorCQkJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFDMjBGNTIzRkMzODNCMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RB
QzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5o
ICovLAorCQkJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0Q0
NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2Vz
LmggKi8sCisJCQkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVDMjNGQzM4MzgwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CisJCQkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFD
MjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAorCQkJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJQ0RBQzIwRjAyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJ
CTBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXMuaCAqLywKIAkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTEwNTI0LDYgKzEw
NjIxLDE2IEBACiAJCQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAv
KiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4
RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDREFDMjBDNTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0QyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENGMjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDNDIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNEQUMyMENFMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEMzMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEI0MjNG
QjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREFDMjBDQTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDOTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0N0I1
NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmVDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxNkFFQTE2NEIzQTg4MDAy
OTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjIy
MCw2ICsxMjMyNywxMSBAQAogCQkJCUMxNUNCQjM3MjNGMzdFQ0IwMDMwMENDNyAvKiBQcmVmZXJl
bmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDU0QzMxQjIxMkY0REE2MDA0OUMx
NzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjg2NUVGMjI1
NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAq
LywKKwkJCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY4MjNGQzcyNkMw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIw
RjkyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEZBMjNGQzcyNkMwMDIxREVF
MyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyREMxOEZCNDIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3Mu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXgg
M2Y1YjYxODFlMDZlMGE4NDY4OGJkYTkxNmYxMGQ4N2E2MWQxNGJlNy4uOTJmZjc3ZWJjNzczM2E1
MWZiMTdjN2E3NjNjNzY4NzZjNjJhZWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmUHJpdmF0
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDhkZmY1MGYzMDg4ZWQ0NWM1OTBlYzgxZTJjMDlhMTM4YmE3YTUzNWYuLmM2MDI0Y2Fk
OWE5NTc0MmJmN2Q2MmIxOTI2OWE3Y2I2NmNmMDcyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMyw2ICsz
Myw4IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRD
Q29kZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1Qcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKQEAgLTQ0LDYgKzQ2LDEwIEBACiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbk1lc3NhZ2VzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtMTAxLDYgKzEwNywxMiBAQCB2b2lkIEdQVVByb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RAogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9y
eT4oKS0+ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDZmNjNiMjMwZjYyN2QxMmNjNmVjM2Vm
N2RkNmNlNmFkMTI5N2FhNmEuLjMzMGQyNmRhYTIwNGRjYTQxN2NiYjkyOGY4OWM2NmQyZTFhYTQ5
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTQ5LDYgKzQ5LDEwIEBACiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAgLTExNiwxOCArMTIwLDE3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omxv
YWQoY29uc3QgVVJMJiB1cmwsIGNvCiAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKSB7CiAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAgICAgICAgIGF1dG8gZmlsZVN5
c3RlbVBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKLSAgICAgICAgYm9vbCBjcmVhdGVkRXh0
ZW5zaW9uID0gZmFsc2U7CiAKKyAgICAgICAgYXV0byBjcmVhdGVFeHRlbnNpb24gPSBbJl0gewog
I2lmIEhBVkUoU0FOREJPWF9JU1NVRV9SRUFEX0VYVEVOU0lPTl9UT19QUk9DRVNTX0JZX0FVRElU
X1RPS0VOKQotICAgICAgICBhdXRvIGF1ZGl0VG9rZW4gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5hdWRpdFRva2VuKCk7Ci0gICAgICAgIEFTU0VSVChhdWRpdFRva2VuKTsKLSAg
ICAgICAgaWYgKGF1ZGl0VG9rZW4pCi0gICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihmaWxlU3lzdGVt
UGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpLCBoYW5kbGUpOwotICAgICAgICBlbHNlCisgICAgICAg
ICAgICBpZiAoYXV0byBhdWRpdFRva2VuID0gbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuYXVkaXRUb2tlbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGZpbGVTeXN0ZW1QYXRoLCBhdWRpdFRv
a2VuLnZhbHVlKCksIGhhbmRsZSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICNlbmRpZgotICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKGZpbGVTeXN0ZW1QYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25s
eSwgaGFuZGxlKTsKKyAgICAgICAgICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBo
YW5kbGUpOworICAgICAgICB9OwogCi0gICAgICAgIGlmICghY3JlYXRlZEV4dGVuc2lvbikgewor
ICAgICAgICBpZiAoIWNyZWF0ZUV4dGVuc2lvbigpKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIlVuYWJsZSB0byBjcmVhdGUgc2FuZGJveCBleHRlbnNpb24gaGFuZGxlIGZvciBHUFVQcm9j
ZXNzIHVybC5cbiIpOwogICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZS5uZXR3b3JrU3RhdGUgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcjsKICAgICAgICAgICAgIG1fcGxh
eWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CkBAIC04OTksMTkgKzkwMiwyMiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3Rh
bmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisg
ICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpDZG1JbnN0YW5jZUF0dGFjaGVkKGRvd25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5j
ZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW5jZSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4o
aW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFuY2VEZXRhY2hlZChkb3duY2FzdDxSZW1vdGVDRE1JbnN0
YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5j
ZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJ
bnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkF0dGVtcHRUb0Rl
Y3J5cHRXaXRoSW5zdGFuY2UoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5p
ZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKQEAgLTkxOSw2ICs5MjUsMTIgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKICAgICBtX3BsYXllci0+
d2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFU
eXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSkKK3sKKyAgICBhdXRvIGluaXREYXRh
QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNp
emUoKSk7CisgICAgbV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXRE
YXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YUJ1ZmZlcikpOworfQorCiBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKQEAgLTkyNiw2ICs5MzgsMTMgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OndhaXRpbmdGb3JLZXkoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hv
dWxkKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpTZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3VsZCksIG1faWQpOwor
fQorI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCAxMzJmMzBhYjI5YjZlNTA5ZjExMzk0OTI1ODBh
NmUzNjcxY2M3OTA5Li5mZTI5MzE4MGVkYjk1YzIzYTc2MzQ3ZjEzMGE3YzQ2YzRiOGQwNGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTEzMiw2ICsxMzIsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQgd2FpdGluZ0ZvcktleUNoYW5n
ZWQoKTsKKyAgICB2b2lkIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmlu
ZyYsIElQQzo6RGF0YVJlZmVyZW5jZSYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKQEAgLTMxNyw2ICszMTgsMTAgQEAgcHJpdmF0ZToKICAgICBib29s
IHdhaXRpbmdGb3JLZXkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBz
ZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wpIGZpbmFsOworI2VuZGlmCisKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2Vu
dGF0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bihXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCBlODg5N2I2YTEwYTEwZDRiNzAw
OTI5OGM3YWEyNzI4YmZlMTEyOTdhLi4zM2UyYTk4ZDQ3OTg3OWQyMTViNGQwNDFhZmU3YWI1MGU4
MzYyZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpA
QCAtNzUsNiArNzUsNyBAQCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90
UmVmQ291bnRlZCB7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIFdhaXRpbmdG
b3JLZXlDaGFuZ2VkKCkKKyAgICBJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChTdHJpbmcg
aW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UgaW5pdERhdGEpCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzViNWRhYThhMjli
Y2Q5OGU2MjcwOTMxNzVjOWY3MDY1YjlhNzBhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtMCwwICsxLDE3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE0u
aCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvQ0RNUmVzdHJpY3Rpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPiBSZW1vdGVDRE06OmNyZWF0ZShXZWFrUHRy
PFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETT4obmV3IFJlbW90ZUNETShXVEZNb3ZlKGZhY3RvcnkpLCBX
VEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE06OlJl
bW90ZUNETShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSWRl
bnRpZmllciYmIGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAg
ICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1v
dmUoaWQpKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7
Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK3sKKyAgICBpZiAoIW1f
ZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdXBwb3J0cyB7IGZh
bHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzQ29uZmlndXJhdGlv
bihjb25maWd1cmF0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c0NvbmZp
Z3VyYXRpb246OlJlcGx5KHN1cHBvcnRzKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3Vw
cG9ydHM7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVz
dHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24s
IGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zKSBjb25zdAoreworICAgIGlmICgh
bV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1cHBvcnRzIHsg
ZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNDb25maWd1cmF0
aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpLCBNZXNzYWdl
czo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnM6
OlJlcGx5KHN1cHBvcnRzKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9
CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNU2Vzc2lvblR5cGUmIHR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgc3VwcG9ydHMgeyBmYWxzZSB9OworICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
dHlwZSwgY29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNT
ZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uOjpSZXBseShzdXBwb3J0cyksIG1faWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImIGRhdGEpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXMu
Y29udGFpbnModHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgc3VwcG9y
dHMgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c0luaXRE
YXRhKHR5cGUsIGRhdGEpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzU2Vzc2lv
blR5cGVXaXRoQ29uZmlndXJhdGlvbjo6UmVwbHkoc3VwcG9ydHMpLCBtX2lkZW50aWZpZXIpOwor
ICAgIHJldHVybiBzdXBwb3J0czsKK30KKworQ0RNUmVxdWlyZW1lbnQgUmVtb3RlQ0RNOjpkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMp
IGNvbnN0Cit7CisgICAgQ0RNUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQgeyBDRE1SZXF1aXJlbWVu
dDo6Tm90QWxsb3dlZCB9OworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gcmVx
dWlyZW1lbnQ7CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6RGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyksIE1lc3NhZ2Vz
OjpSZW1vdGVDRE1Qcm94eTo6RGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50OjpSZXBs
eShyZXF1aXJlbWVudCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlcXVpcmVtZW50Owor
fQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IENE
TVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zKSBjb25zdAoreworICAgIENETVJlcXVpcmVtZW50
IHJlcXVpcmVtZW50IHsgQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQgfTsKKyAgICBpZiAoIW1f
ZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIHJlcXVpcmVtZW50OworCisgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlQ0RNUHJveHk6OlBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbmZpZ3VyYXRpb24sIHJl
c3RyaWN0aW9ucyksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6UGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQ6OlJlcGx5KHJlcXVpcmVtZW50KSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4g
cmVxdWlyZW1lbnQ7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
QXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgZmxhZyB7IGZhbHNlIH07CisgICAgbV9mYWN0
b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlQ0RNUHJveHk6OkRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmln
aW5BbmRDbGVhcmFibGUoY29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6
RGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZTo6UmVw
bHkoZmxhZyksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIGZsYWc7Cit9CisKK1JlZlB0cjxD
RE1JbnN0YW5jZT4gUmVtb3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSgpCit7CisgICAgaWYgKCFtX2Zh
Y3RvcnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyIGlkOworICAgIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5jZSgpLCBN
ZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkNyZWF0ZUluc3RhbmNlOjpSZXBseShpZCwgY29uZmln
dXJhdGlvbiksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUobWFrZVdlYWtQdHIo
bV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwor
fQorCit2b2lkIFJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQoreworICAgIGlmICghbV9m
YWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2Fk
QW5kSW5pdGlhbGl6ZSgpLCBtX2lkZW50aWZpZXIpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ugc2FuaXRpemVkUmVzcG9uc2U7
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlNhbml0aXplUmVzcG9uc2UocmVzcG9uc2Up
LCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlNhbml0aXplUmVzcG9uc2U6OlJlcGx5KHNhbml0
aXplZFJlc3BvbnNlKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gV1RGTW92ZShzYW5pdGl6
ZWRSZXNwb25zZS5idWZmZXIoKSk7Cit9CisKK09wdGlvbmFsPFN0cmluZz4gUmVtb3RlQ0RNOjpz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlv
bmFsPFN0cmluZz4gc2FuaXRpemVkU2Vzc2lvbklkOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVBy
b3h5OjpTYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJv
eHk6OlNhbml0aXplU2Vzc2lvbklkOjpSZXBseShzYW5pdGl6ZWRTZXNzaW9uSWQpLCBtX2lkZW50
aWZpZXIpOworICAgIHJldHVybiBzYW5pdGl6ZWRTZXNzaW9uSWQ7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZjNjMzRlZDJjMjAyM2FkZDIwYWVhODljN2RlNGE3YWMyYzRiYmU1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
aApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJS
ZW1vdGVDRE1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETVBy
aXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUmVtb3RlQ0RNIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNETVByaXZhdGUg
eworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPiBjcmVhdGUo
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90
ZUNETUNvbmZpZ3VyYXRpb24mJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNKCkgPSBkZWZhdWx0
OworCitwcml2YXRlOgorICAgIFJlbW90ZUNETShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYs
IFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKTsKKworICAg
IGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlv
bldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNE
TVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29y
ZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1S
ZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBw
ZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7
CisgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xl
YXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkg
ZmluYWw7CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKworICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KKyAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1
cmF0aW9uLnN1cHBvcnRlZFJvYnVzdG5lc3NlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJD
ZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7IH0KKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNTZXNzaW9uczsgfQorCisg
ICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBtX2NvbmZp
Z3VyYXRpb247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNjJjNDY0ZmRmZGNkOGMzNTc1NmIwZTM4ZGFkMGY4OTM5MDU4ODY3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25m
aWd1cmF0aW9uLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24geworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwor
ICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgYm9vbCBz
dXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnM7CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRlZEluaXREYXRh
VHlwZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAg
ICBlbmNvZGVyIDw8IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgICAgICBlbmNvZGVy
IDw8IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJp
bmc+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRl
ZEluaXREYXRhVHlwZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcykKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9y
PEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGRlY29kZXIgPj4g
c3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAgICBpZiAoIXN1cHBvcnRlZFJvYnVzdG5lc3Nl
cykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3Vw
cG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXJDZXJ0
aWZpY2F0ZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9w
dGlvbmFsPGJvb2w+IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9y
dHNTZXNzaW9uczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1Nlc3Npb25zKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdU
Rk1vdmUoKnN1cHBvcnRlZEluaXREYXRhVHlwZXMpLAorICAgICAgICAgICAgV1RGTW92ZSgqc3Vw
cG9ydGVkUm9idXN0bmVzc2VzKSwKKyAgICAgICAgICAgICpzdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlcywKKyAgICAgICAgICAgICpzdXBwb3J0c1Nlc3Npb25zLAorICAgICAgICB9fTsKKyAgICB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNGFmODNlMzgyOWVlYTM3M2VjYzQ2YzI2ODA1NWU2OTYyOGE5MzllCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5LmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNz
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitSZW1vdGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1GYWN0b3J5KFdlYlByb2Nlc3MmIHByb2Nlc3Mp
CisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKworUmVtb3RlQ0RNRmFjdG9yeTo6flJl
bW90ZUNETUZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6dXBk
YXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmIHNldHRpbmdzKQoreworICAg
IGlmIChzZXR0aW5ncy51c2VHUFVQcm9jZXNzRm9yTWVkaWEoKSkgeworICAgICAgICBhdXRvJiBm
YWN0b3JpZXMgPSBDRE1GYWN0b3J5OjpyZWdpc3RlcmVkRmFjdG9yaWVzKCk7CisgICAgICAgIGZh
Y3Rvcmllcy5jbGVhcigpOworICAgICAgICBmYWN0b3JpZXMuYXBwZW5kKHRoaXMpOworICAgIH0g
ZWxzZQorICAgICAgICBDRE1GYWN0b3J5OjpyZXNldEZhY3RvcmllcygpOworfQorCisKK2NvbnN0
IGNoYXIqIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4g
IlJlbW90ZUNETUZhY3RvcnkiOworfQorCitHUFVQcm9jZXNzQ29ubmVjdGlvbiYgUmVtb3RlQ0RN
RmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworICAgIHJldHVybiBtX3Byb2Nlc3Mu
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKworYm9vbCBSZW1vdGVDRE1GYWN0b3J5
OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBib29s
IHN1cHBvcnRlZCA9IGZhbHNlOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5
U3lzdGVtKGtleVN5c3RlbSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlN1cHBv
cnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOworICAgIHJldHVybiBzdXBwb3J0
ZWQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBSZW1vdGVDRE1GYWN0b3J5Ojpj
cmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgUmVtb3RlQ0RNSWRlbnRp
ZmllciBpZDsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNKGtleVN5c3RlbSksIE1lc3NhZ2VzOjpSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETTo6UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24pLCB7
IH0pOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBS
ZW1vdGVDRE06OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92ZShpZCksIFdURk1vdmUo
Y29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OmFkZFNlc3Npb24o
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCwgUmVmPFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbj4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9zZXNzaW9ucy5jb250YWlu
cyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNlc3Npb24pKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQp
KTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9y
eTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNz
aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24t
PmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2NlYmU4NGMyYjEyYWQ0MjM4MzhhMzYyN2EwNjRlZWJk
NDcwOTUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
U3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29u
bmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFJlbW90ZUNETTsKK2NsYXNzIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjsKK2NsYXNzIFdlYlByb2Nlc3M7CisKK2NsYXNzIFJlbW90ZUNETUZh
Y3RvcnkgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpDRE1GYWN0b3J5CisgICAgLCBwdWJs
aWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1v
dGVDRE1GYWN0b3J5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgUmVtb3RlQ0RNRmFjdG9yeShXZWJQcm9jZXNzJik7CisgICAgdmlydHVhbCB+
UmVtb3RlQ0RNRmFjdG9yeSgpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnRO
YW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vz
czsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKCk7
CisKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYkNvcmU6OlNldHRpbmdzJik7
CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKKyAgICB2
b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CisK
K3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IGNyZWF0
ZUNETShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPj4gbV9zZXNzaW9uczsK
KyAgICBIYXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVD
RE0+PiBtX2NkbXM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVlM2EzODE5YzE3MDdiNTU4YjNmZDlhYWE4
ODE2MzE1ODM5MmZhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNETUlkZW50aWZpZXJUeXBlIHsgfTsK
K3VzaW5nIFJlbW90ZUNETUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlk
ZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMzczOWYwM2RjNTllYWQ3MWVkN2EwZmMwM2I2Y2MxOTdkYWFk
NTM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUluc3RhbmNlPiBSZW1vdGVDRE1JbnN0
YW5jZTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
JiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDRE1J
bnN0YW5jZShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0
aW9uKSkpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZTo6UmVtb3RlQ0RNSW5zdGFuY2UoV2Vha1B0
cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQor
ICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2lkZW50aWZpZXIoV1RG
TW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkK
K3sKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pIC0+IFN1Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1
cm4gRmFpbGVkOworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIG1fZmFjdG9y
eS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25m
aWd1cmF0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbjo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAgICBy
ZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQorCithdXRvIFJlbW90ZUNE
TUluc3RhbmNlOjpzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sIGFsbG93ZWQp
IC0+IFN1Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4g
RmFpbGVkOworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OlNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGFs
bG93ZWQpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0RGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FsbG93ZWQ6OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAg
cmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworYXV0byBSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sIGFsbG93ZWQpIC0+IFN1
Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gRmFpbGVk
OworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OlNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYWxsb3dlZCksIE1lc3Nh
Z2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkOjpS
ZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNjZWVkZWQgPyBT
dWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUpIC0+
IFN1Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gRmFp
bGVkOworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OlNldFNlcnZlckNlcnRpZmljYXRlKGNlcnRpZmljYXRlLmdldCgp
KSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFNlcnZlckNlcnRpZmljYXRl
OjpSZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNjZWVkZWQg
PyBTdWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpIC0+IFN1Y2Nlc3NWYWx1ZQor
eworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gRmFpbGVkOworCisgICAgYm9v
bCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6OlNldFN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KSwgTWVzc2FnZXM6OlJlbW90ZUNETUlu
c3RhbmNlUHJveHk6OlNldFN0b3JhZ2VEaXJlY3Rvcnk6OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRl
bnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30K
KworUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2U6
OmNyZWF0ZVNlc3Npb24oKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQ7Cisg
ICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lvbigpLCBNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lvbjo6UmVwbHkoaWQpLCBt
X2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRlKG1ha2VXZWFr
UHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQpKTsKKyAgICBtX2ZhY3RvcnktPmFkZFNl
c3Npb24oaWQsIHNlc3Npb24uY29weVJlZigpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwor
YXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0SERDUFN0YXR1cyhIRENQU3RhdHVzIHN0YXR1cykg
LT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBG
YWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0SERDUFN0YXR1cyhzdGF0dXMpLCBNZXNzYWdlczo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0SERDUFN0YXR1czo6UmVwbHkoc3VjY2VlZGVkKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1ZDgyNmJhYTQxMmQ1NjBl
MGMwNjk4YTBlMmRjNWU4MGUyMDhiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5z
dGFuY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNl
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNETUluc3RhbmNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5SZW1vdGVDRE1JbnN0YW5jZSgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZUNETUluc3RhbmNlPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYp
OworCisgICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RN
SW5zdGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOworCisgICAgSW1w
bGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CisgICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJikgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNB
bGxvd2VkKGJvb2wpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3RhdGVB
bGxvd2VkKGJvb2wpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5rZXlT
eXN0ZW07IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldEhEQ1BTdGF0dXMoSERDUFN0YXR1
cykgZmluYWw7CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAg
ICBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9CisKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQ0RNX0lOU1RBTkNFKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2Us
IFdlYkNvcmU6OkNETUluc3RhbmNlOjpJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZSkKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTMy
ZDcyZTdjZTRiODUzZjJkM2I5MzQ1NWUxOTI4MWM0MTlmYTQzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24uaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uIHsKKyAgICBTdHJpbmcga2V5U3lzdGVtOworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgZW5jb2RlciA8PCBrZXlTeXN0ZW07CisgICAgfQorCisgICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZUNETUluc3RhbmNlQ29u
ZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRp
b25hbDxTdHJpbmc+IGtleVN5c3RlbTsKKyAgICAgICAgZGVjb2RlciA+PiBrZXlTeXN0ZW07Cisg
ICAgICAgIGlmICgha2V5U3lzdGVtKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUoKmtleVN5c3RlbSksCisg
ICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmZmRlNjkxYzNlODk1
Yjg4NTllNjIwNWE3MWUxMTVmYTliNGZlMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBl
PjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNWNjYmUyMzk2ZjliMmY4NmM5YzZiMjZmMzNlMWJhMjM1
YjAxNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWY8
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmNyZWF0
ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllciYmIGlkKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSkpOworfQor
CitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFr
UHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllciYmIGlkKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAg
LCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNh
bGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWls
ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0
YVR5cGUsIFdURk1vdmUoaW5pdERhdGEpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgICAgIGlmICghbWVzc2FnZS5idWZmZXIoKSkgeworICAgICAgICAgICAg
Y2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZh
aWxlZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2so
bWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBzZXNzaW9uSWQsIG5lZWRzSW5kaXZp
ZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAgfSwgbV9p
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQor
eworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpVcGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwgV1RGTW92ZShyZXNwb25z
ZSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3Nl
ZCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3Vi
bGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9v
bCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhzZXNzaW9uV2FzQ2xvc2Vk
LCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1v
dmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAgfSwgbV9p
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICgh
bV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQsIEZhaWxlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OkxvYWRTZXNzaW9uKHR5cGUsIHNlc3Npb25JZCwgb3JpZ2luKSwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+
JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0
aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlIGxvYWRGYWlsdXJlKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFu
Z2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
dWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQsIGxvYWRGYWlsdXJlKTsKKyAgICB9LCBtX2lk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y2xvc2VTZXNz
aW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmIGNhbGxi
YWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OkNsb3NlU2Vzc2lvbihzZXNzaW9uSWQpLCBbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
fSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBl
LCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2Zh
Y3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSks
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5U3RhdHVzVmVjdG9yJiYgY2hhbmdl
ZEtleXMsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mJiBtZXNzYWdl
LCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRC
dWZmZXI+PiByZWFsTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgaWYgKG1lc3NhZ2Ug
JiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQorICAgICAgICAgICAgcmVhbE1lc3NhZ2UgPSBt
ZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQg
PyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlN0b3JlUmVjb3JkT2ZL
ZXlVc2FnZShzZXNzaW9uSWQpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3Rh
dHVzZXMpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dXBkYXRlS2V5
U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6c2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUgdHlwZSwgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSkKK3sKKyAgICBpZiAobV9jbGll
bnQgJiYgbWVzc2FnZS5idWZmZXIoKSkKKyAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKHR5
cGUsIG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNlc3Npb25JZENo
YW5nZWQoc2Vzc2lvbklkKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY0OTg3OWY0ODM3ZmMzMjJmMWQxMTViNjg4MTA0OTk1ZGQwOTZjZGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKworbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIGZpbmFsIDogcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgIHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bigpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFj
dG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYpOworCisgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2
b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKTsKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJik7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOworCisK
KyAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNs
aWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KKyAg
ICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KKyAgICB2
b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBsb2FkU2Vzc2lvbihM
aWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgZmluYWw7CisKKyAgICBX
ZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRyPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOGMyMzkyZTdlZjg2MjA0NjIxZDI4NDE0MzhiNWVkZjRkMzgxNTM2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMiBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFVwZGF0ZUtleVN0YXR1c2VzKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKQorICAg
IFNlbmRNZXNzYWdlKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSB0eXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2FnZSkKKyAgICBTZXNzaW9uSWRDaGFu
Z2VkKFN0cmluZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODZhY2QxMjY1YWYwYzg0NjM4OGUy
M2Y5Y2NhMTZkOTAyMzM4ZmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgKQEAg
LTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyQ2FjaGVkU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNGYwZGUxMGQ4
ODZmZjljZDEzNGZmZWI3MTg5MjdhY2JmODc4MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyQ2FjaGVkU3RhdGUu
aApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckVudW1zLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVRpbWVSYW5nZXMuaD4KKyNpbmNsdWRlIDx3dGYv
TWVkaWFUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlTWVkaWFQ
bGF5ZXJDYWNoZWRTdGF0ZSB7CisgICAgTWVkaWFUaW1lIGN1cnJlbnRUaW1lOworICAgIE1lZGlh
VGltZSBkdXJhdGlvbjsKKyAgICBNZWRpYVRpbWUgbWluVGltZVNlZWthYmxlOworICAgIE1lZGlh
VGltZSBtYXhUaW1lU2Vla2FibGU7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzIGJ1
ZmZlcmVkUmFuZ2VzOworICAgIGJvb2wgcGF1c2VkIHsgdHJ1ZSB9OworICAgIGJvb2wgbG9hZGlu
Z1Byb2dyZXNzZWQgeyBmYWxzZSB9OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5j
b2RlciA8PCBjdXJyZW50VGltZTsKKyAgICAgICAgZW5jb2RlciA8PCBkdXJhdGlvbjsKKyAgICAg
ICAgZW5jb2RlciA8PCBtaW5UaW1lU2Vla2FibGU7CisgICAgICAgIGVuY29kZXIgPDwgbWF4VGlt
ZVNlZWthYmxlOworICAgICAgICBlbmNvZGVyIDw8IGJ1ZmZlcmVkUmFuZ2VzOworICAgICAgICBl
bmNvZGVyIDw8IHBhdXNlZDsKKyAgICAgICAgZW5jb2RlciA8PCBsb2FkaW5nUHJvZ3Jlc3NlZDsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9u
YWw8UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CisgICAgeworICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGN1cnJlbnRUaW1lOworICAgICAg
ICBkZWNvZGVyID4+IGN1cnJlbnRUaW1lOworICAgICAgICBpZiAoIWN1cnJlbnRUaW1lKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxNZWRpYVRp
bWU+IGR1cmF0aW9uOworICAgICAgICBkZWNvZGVyID4+IGR1cmF0aW9uOworICAgICAgICBpZiAo
IWR1cmF0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBP
cHRpb25hbDxNZWRpYVRpbWU+IG1pblRpbWVTZWVrYWJsZTsKKyAgICAgICAgZGVjb2RlciA+PiBt
aW5UaW1lU2Vla2FibGU7CisgICAgICAgIGlmICghbWluVGltZVNlZWthYmxlKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IG1h
eFRpbWVTZWVrYWJsZTsKKyAgICAgICAgZGVjb2RlciA+PiBtYXhUaW1lU2Vla2FibGU7CisgICAg
ICAgIGlmICghbWF4VGltZVNlZWthYmxlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZl
cmVkUmFuZ2VzOworICAgICAgICBkZWNvZGVyID4+IGJ1ZmZlcmVkUmFuZ2VzOworICAgICAgICBp
ZiAoIWJ1ZmZlcmVkUmFuZ2VzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICBPcHRpb25hbDxib29sPiBwYXVzZWQ7CisgICAgICAgIGRlY29kZXIgPj4gcGF1c2Vk
OworICAgICAgICBpZiAoIXBhdXNlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gbG9hZGluZ1Byb2dyZXNzZWQ7CisgICAgICAgIGRl
Y29kZXIgPj4gbG9hZGluZ1Byb2dyZXNzZWQ7CisgICAgICAgIGlmICghbG9hZGluZ1Byb2dyZXNz
ZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisKKyAgICAgICAgcmV0dXJu
IHt7IFdURk1vdmUoKmN1cnJlbnRUaW1lKSwgV1RGTW92ZSgqZHVyYXRpb24pLCBXVEZNb3ZlKCpt
aW5UaW1lU2Vla2FibGUpLCBXVEZNb3ZlKCptYXhUaW1lU2Vla2FibGUpLCBXVEZNb3ZlKCpidWZm
ZXJlZFJhbmdlcyksIFdURk1vdmUoKnBhdXNlZCksIFdURk1vdmUoKmxvYWRpbmdQcm9ncmVzc2Vk
KSB9fTsKKyAgICB9CisKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmNwcAppbmRleCBhZTAxNjFhYWQ5NDc0ZDZiMGYxZjkwMGIwNTQ0ZjU5ODBkMzY5OGZmLi5i
OWY0ZDJhN2UzMjdlYmUzMjBkNTdlNzU4YmFiMDNlNTdhNmFkNjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90
ZVZpZGVvU2FtcGxlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggMDlkNzk4NzFmNWI2ZjM4N2Q0ZjVmYjY1NTFlZjlhMDQ2N2M0NjNiOC4uNDhjYTlkZTk5
YWJjMGIwOTUyMTE4ZWRkNmExOWEyZWI5MTg4YmNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTg5LDE3
ICsxODksMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICBtX2NvcmVMb2FkZXItPmRp
ZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+
dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQg
bm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAg
ICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAg
ICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZm
ZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9s
bGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5n
dGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAgICAgICAg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAg
ICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggNTgzZTM3
OWM4OWVjZmE5NTMwYjBhYmZhMWM2OWZlYTlkNTM5NjZmYi4uMjY5MDhlODIzZDc5MjQ0ZTU3ODZk
YjA0YTU5NjllZjFmYzY1ODA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERhdGFSZWZlcmVuY2U7
CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CiB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlJiYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cAppbmRleCAzNGU4NmMxMWUyNDg2YzdhMTYwMzZkN2I0NjhmYjc4ZDI3NThmZDYxLi5jNTBmNTVh
ZTkyNjNjMTE2ODE0MWFhNDU3MGEyZGRlYzYxNjY0MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFyKiBkYXRh
LCBzaXplCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVj
ZWl2ZURhdGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXpl
IH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZFJlY2VpdmVEYXRhIHsgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKSB9LCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOThiMTViODdmYzEzZGEyZGJmNDQz
YmE5OGE0ZDg2ZDdhOWQzNTQxOS4uM2UxOTljOWFmOThjNWQ0YmQ4ODlkYTk3MjUwMzUyZDRiMmQx
YjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xOTE0LDkgKzE5MTQs
OSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcgogICAgIGF1dG8gY2FsbGJhY2tJRCA9IENhbGxi
YWNrSUQ6OmZyb21JbnRlZ2VyKGNhbGxiYWNrSWRlbnRpZmllcik7CiAgICAgaWYgKFdlYlBhZ2Uq
IHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdlKCkgfSkgewogICAgICAgICBpZiAoZGF0YSkKLSAgICAg
ICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2Fk
aW5nSWNvbihjYWxsYmFja0lELCB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9KSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwg
eyAqZGF0YSB9KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7IG51
bGxwdHIsIDAgfSkpOworICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgfSkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBl
NDU4Mzc0OWI2Zjk2YjVjMWRlZDFlMDZhNDMwYWFjODkxNTg3YmZkLi44ZmJjNzQzMWJlNzdhMGM5
NjI1YWQzMTg0N2ZhZTM2Y2E5MDgzYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzIwLDYgKzMyMCw5IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjZW5k
aWYKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM1MDAsNyArMzUwMyw3IEBAIHZv
aWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVu
Y2UgPSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4o
Q0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBkYXRhUmVmZXJlbmNlID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5kaWYKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lE
KSk7CiB9CkBAIC0zNTgxLDcgKzM1ODQsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxiYWNrSQogICAg
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRh
dGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExl
bmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2VuZGlmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQpAQCAt
MzY4NSw2ICszNjg4LDkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVD
RE1GYWN0b3J5PigpLT51cGRhdGVQcmVmZXJlbmNlcyhzZXR0aW5ncyk7CisjZW5kaWYKICNlbmRp
ZgogfQogCkBAIC00OTE5LDcgKzQ5MjUsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERG
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbwogewog
ICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFn
ZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VEYXRh
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayh7IENGRGF0
YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0
YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpIH0sIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayh7IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHBkZlBhZ2VEYXRhLmdldCgpKSB9LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmlu
dEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQpAQCAtNjU2MywxMiArNjU2OSwxMiBA
QCB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NAogICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UodGFza0lkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cmxT
Y2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2
NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lk
IFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRl
bnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVy
VG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsKICAgICBB
U1NFUlQoaGFuZGxlcik7CiAKLSAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lk
ZW50aWZpZXIsIGRhdGEuc2l6ZSgpLCBkYXRhLmRhdGEoKSk7CisgICAgaGFuZGxlci0+dGFza0Rp
ZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90ICo+KGRhdGEuZGF0YSgpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJs
U2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRf
dCB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC02NzkwLDcg
KzY3OTYsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdl
Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9w
dGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2lu
Z0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVp
bnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGVuY2xv
c2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvIGF0
dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7
CiAgICAgICAgIGF0dGFjaG1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzdjZjM4YzViYmEyMDFj
ZWQ3ODhjZDAzZDVhMjA0ZDRhY2E0ZjJhNy4uNzNjNTkyY2M4NGY3NDhjMmY0ODk5NTg2N2JlNmUy
ZTlhZWVhYzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTU1LDYgKzE1NSw3IEBAIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsK
IGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExOTQsNyAr
MTE5NSw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+
JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxs
YmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpAQCAtMTY3NCw3ICsxNjc1
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVj
dGlvbih1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBoYW5k
bGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCB1cmxTY2hl
bWVUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRh
c2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lk
IHNldElzU3VzcGVuZGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IDQ3YzljMDhhZGVlNDU4NWQ5MTMzNDZiMWFiZGVlODY3YzVmMWNiNTcuLmJmMjRh
MjljM2UwYWIwNDI0MzM3ZTAzZmJiMjM5YzQ4MTE5MzViNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE3NCw2ICsxNzQsMTAgQEAKICNpbmNsdWRlICJMaWJX
ZWJSVENDb2RlY3MuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNp
bmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjZW5kaWYKKwogI2RlZmluZSBSRUxFQVNFX0xP
R19TRVNTSU9OX0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgpIDogMCkK
ICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFT
RV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtzZXNz
aW9uSUQ9JSIgUFJJdTY0ICJdIFdlYlByb2Nlc3M6OiIgZm10LCB0aGlzLCBSRUxFQVNFX0xPR19T
RVNTSU9OX0lELCAjI19fVkFfQVJHU19fKQogCkBAIC0yNDAsNiArMjQ0LDEwIEBAIFdlYlByb2Nl
c3M6OldlYlByb2Nlc3MoKQogICAgIGFkZFN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyPigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGFkZFN1
cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZv
cmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391467</attachid>
            <date>2020-02-22 14:24:05 -0800</date>
            <delta_ts>2020-02-22 21:06:47 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208090-20200222142404.patch</filename>
            <type>text/plain</type>
            <size>267452</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE2ZGIxODY4MmIxZTRh
YzUyYzAyNWVmYmYwZWYxNTc0OGEzZWQ4NC4uZTNhYmRjNzRjYzU3OWY4ZDVmYTNjZDZiZjBiYTc0
YjAxMmI2NWNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5OjpyZXNldEZhY3Rvcmll
cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVxdWlyZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Up
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZFJvYnVzdG5lc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NETTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5z
ZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRlZFJvYnVzdG5lc3MgY29uc3QpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0xNCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIFFUS2l0IGZv
ciByZW5kZXJpbmcgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gY29udHJvbHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTYx
MDJiY2M4OGNhYjdiMDY4YjRmNGUyYjU5OTJmMDc3ZGQ0YmUzMC4uODk0MDM3MTdiNDA5MTcyZWQ1
MGU0MWYyZjNiMTJiYWRkOTkwNDcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMjcgQEAKKzIwMjAt
MDItMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBd
IEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90ZUNETUluc3Rh
bmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAgb2YgdGhlaXIg
YXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBleGlzdGluZyBD
RE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5IGJ5IGV4cGxpY2l0bHkgY2xlYXJp
bmcgb3V0IGFsbCB0aGUgZXhpc3RpbmcgCisgICAgICAgIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlz
IGVuYWJsZWQsIGFuZCByZXNldHRpbmcgdGhvc2UgZmFjdG9yaWVzIHRvIGRlZmF1bHQgd2hlbiB0
aGUgR1BVIHByb2Nlc3MgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGlzIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgdXNpbmcgdGhlIHNhbWUgZW5j
b2RlL2RlY29kZSBwYXRoIGFzIGlzIHVzZWQgaW4KKyAgICAgICAgV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzOiB0aGUgU2hhcmVkQnVmZmVyIGlzIGNvcGllZCBpbnRvIHNoYXJlZCBtZW1vcnksIGFuZCBv
bmx5IGEgaGFuZGxlIGlzIHBhc3NlZCBhY3Jvc3MKKyAgICAgICAgdGhlIFhQQyBib3VuZGFyeS4g
VGhpcyByZXF1aXJlcyBleGlzdGluZyB1c2VycyB0byBoYW5kbGUgcmVjZWl2aW5nIGEgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhSGFuZGxlIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBvZiB0aGUg
WFBDIGJvdW5kYXJ5LCBidXQgdGhpcyBpcyB0cml2aWFsLCBhbmQgbWFueSBjYWxsIHNpdGVzIHJl
cXVpcmUgYSBTaGFyZWRCdWZmZXIgb24gdGhlCisgICAgICAgIHJlbW90ZSBzaWRlIGluIHRoZSBm
aXJzdCBwbGFjZS4gVGhpcyBjb2RlIGNvdWxkIGJlIGltcHJvdmVkIGJ5IGFsbG93aW5nIHRoZSBT
aGFyZWRNZW1vcnkgb2JqZWN0IGJlIGFkb3B0ZWQKKyAgICAgICAgYnkgdGhlIFNoYXJlZEJ1ZmZl
ciBvYmplY3QgYXQgY3JlYXRpb24gdGltZSwgbGVhZGluZyB0byB6ZXJvLWNvcHkgZGVjb2Rpbmcs
IGJ1dCBpcyBub3QgZG9uZSBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RN
SW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3Rh
bmNlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlk
UmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmFkZEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOiAKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNvbmZpZ3VyYXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjppbnN0YW5j
ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c3RvcmVS
ZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
UHJveHk6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETVByb3h5OjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVl
UGVyT3JpZ2luQW5kQ2xlYXJhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6
OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRB
bmRJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXpl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNz
aW9uSWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmlu
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSk6Cisg
ICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlcik6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAo
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtUmVnaXN0ZXJBdHRhY2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFu
Y2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0
ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OlJlbW90ZUNETSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rp
b25zIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06
OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRp
c3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmln
aW5BbmRDbGVhcmFibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0
ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQgY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJZGVudGlm
aWVyc0FsbG93ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0UGVy
c2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2U6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZTo6c2V0SERDUFN0YXR1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2UuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJl
Y29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUJsb2JDaHVuayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorCiAyMDIwLTAyLTIxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFwcC1ib3VuZCBkb21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5l
dHdvcmsgU2Vzc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFkNGY3MWQ3YzRiNDk2OTEwMzIx
NjMzY2FhZmMzOGQ2MGY2MmNmMWQuLjA3MjBhZGU4ODA1ZGEwMDAyNmY5MTNmOTlmMWNiYjAzNTdk
NjQ5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTE4MSw2ICsxMTgxLDIwIEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAogCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorICAg
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisgICAgcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TU1lc3NhZ2VUeXBlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgK
KyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisgICAgcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVJlc3RyaWN0aW9ucy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lv
blR5cGUuaAorCiAgICAgcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5oCiAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCA0YmJiMmJjZTYx
ODc0YjdlZTE0OGE0MTY4NTUwYTZiMTU2NDM5MmEwLi5jNGUxNDI2YTBjM2ZmYjVhYTgxMGQ0YzVk
MGE2OGJkMDdlOWZlZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgT3B0aW9uYWw8TWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0aW9uPiBDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWEK
ICAgICAgICAgICAgIGlmIChpbml0RGF0YVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAobV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3Vw
cG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkKKyAgICAgICAgICAgIGlmIChtX3ByaXZh
dGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERh
dGFUeXBlKSkKICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBlbmQoaW5pdERhdGFU
eXBlKTsKICAgICAgICAgfQogCkBAIC00NjAsNyArNDYwLDcgQEAgT3B0aW9uYWw8VmVjdG9yPE1l
ZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRp
ZXNGb3IKICAgICAgICAgLy8gMy4xMS4gSWYgY29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBh
IGF1ZGlvL3ZpZGVvIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KICAgICAg
ICAgLy8gMy4xMi4gSWYgcm9idXN0bmVzcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29u
dGFpbnMgYW4gdW5yZWNvZ25pemVkIHZhbHVlIG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQog
ICAgICAgICAvLyAgICAgICBpbXBsZW1lbnRhdGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRl
cmF0aW9uLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAgICAgICAgaWYg
KCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRlLT5zdXBwb3J0c1JvYnVzdG5lc3Mo
cm9idXN0bmVzcykpCisgICAgICAgIGlmICghcm9idXN0bmVzcy5pc0VtcHR5KCkgJiYgIW1fcHJp
dmF0ZS0+c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkuY29udGFpbnMocm9idXN0bmVzcykpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNlciBhZ2VudCBh
bmQgaW1wbGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9mIGVuY3J5cHRl
ZCBtZWRpYSBkYXRhIGZvciB0aGUKQEAgLTYxMiw3ICs2MTIsNyBAQCBib29sIENETTo6c3VwcG9y
dHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0
ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBlKGluaXREYXRhVHlwZSk7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5j
b250YWlucyhpbml0RGF0YVR5cGUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNh
bml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGRhMTliYmZmMmM3Y2U4
MmJlZmE4MDM1YWQ3NTQyZTNlOWYyMmE2OWQuLjI5ZmFiNDk5MDY4MjU4MzJhNWFkZGQ5OWE4MGU4
ZjM0ZDhkMzA4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAvLyA2LjUuIExldCBzZXNzaW9uIGNsb3NlZCBi
ZSBmYWxzZS4KICAgICAgICAgLy8gNi42LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVw
cmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8v
IDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9u
VHlwZSwgKnNhbml0aXplZFJlc3BvbnNlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2Vk
LCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Np
b24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIHNhbml0aXplZFJl
c3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXNDbG9zZWQs
IE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRL
ZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPENETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1
Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MGIwMTFlMzU1YmRjYjdhMzQ3Y2Uw
Mjk3ZGIxYzQyZDg4Zjk0NjNiLi5mODczYjdjZjFkOTY4ZmZkMjI1MGVlZDBkYmJjYmJkZmJmZjk1
ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC00MDY1LDYgKzQwNjUsMTkgQEAKIAkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQy
IC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDNBNDk1NjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCAqLzsgfTsK
IAkJQ0QzQTQ5NjIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5RDAxQjAwMjc0
RTQyIC8qIFNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFCMDAyNzRFNDIg
LyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3Qu
aCAqLzsgfTsKKwkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJBMDFEIC8qIENETUVuY3J5cHRpb25TY2hl
bWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjc1
NjlCMjE1QzIzQTQwMEVGQ0I1MCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRjkyNDAxQUFEOTAw
NEJBMDFEIC8qIENETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEOTRBNUQyMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0b3J5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkEy
NDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUgLyogQ0RNSW5z
dGFuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlDRDNDRTBGQjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlEMzc1QTIxNTE2M0U0
MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZEMjQwMUFBRDkw
MDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRDFGNzFDQjY5MDBGNTI1QzUgLyog
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZFMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1NZWRp
YUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEOTRBNUQzMUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNhcGFiaWxpdHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGRjI0
MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ2MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1N
ZXNzYWdlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFGNzFDQjZBMDBG
NTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNEM0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1Q0YxRjcx
Q0I2MTAwRjUyNUM1IC8qIENETVByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDIyNDAxQUFEQTAwNEJBMDFEIC8qIENETVJlcXVp
cmVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVxdWlyZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMzI0MDFBQURBMDA0
QkEwMUQgLyogQ0RNUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEMDFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNUmVzdHJpY3Rp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QzQ0UxMDQyNDAxQUFEQTAwNEJBMDFEIC8qIENETVNlc3Npb25UeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVENTFGNzFDQjZEMDBGNTI1
QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJV
dGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QzRTIxREIyMTgzM0Y1MTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjUx
QzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQXJl
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
M0UyNTI0MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNFMjUyMjE4MDQ2
QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oICovOyB9OwpAQCAtNDE5
Niw3ICs0MjA5LDcgQEAKIAkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDBG
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggKi87IH07CiAJCUNERjRCNzEyMUUwMDg3
QUUwMEUyMzVBMiAvKiBMZWdhY3lDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEgLyogTGVnYWN5
Q0RNU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTMxRTAwQjdFNTAwRTIzNUEy
IC8qIENETS5jcHAgKi87IH07Ci0JCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE0MUUw
MEI3RTUwMEUyMzVBMiAvKiBDRE0uaCAqLzsgfTsKKwkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEy
IC8qIENETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjRCNzE4MUUwMUNCOTEwMEUyMzVBMiAvKiBN
ZWRpYUtleXNSZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERjRCNzE3MUUwMUNCOTEwMEUyMzVBMiAvKiBNZWRpYUtleXNSZXN0cmlj
dGlvbnMuaCAqLzsgfTsKIAkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vz
c2lvblR5cGUuaWRsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RGNEI3MTkxRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5cGUuaWRsICov
OyB9OwogCQlDREY0QjcxRTFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0Qjcx
QzFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBlLmggKi87IH07CkBAIC0y
OTI2Myw5ICsyOTI3NiwyMiBAQAogCQkJCTY1NTBCNjlFMDk5REYwMjcwMDkwRDc4MSAvKiBDREFU
QVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAv
KiBDRE0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOTRBNURFMUY3MkY1N0IwMEY1MjVDNSAvKiBD
RE1DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEY4MjQwMUFBRDkwMDRCQTAxRCAv
KiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGOTI0MDFB
QUQ5MDA0QkEwMUQgLyogQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RCNzA0NUEx
Rjc0NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQbGF5U3RyZWFtaW5nLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRDNDRTBGQTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZVNlc3Npb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZDMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZEMjQwMUFBRDkwMDRCQTAxRCAvKiBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGRTI0
MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDRDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDMxODYyMzE5OUYxRTJBMDAzMEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJB
MDFEIC8qIENETVByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwMjI0MDFBQURBMDA0
QkEwMUQgLyogQ0RNUmVxdWlyZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAzMjQw
MUFBREEwMDRCQTAxRCAvKiBDRE1SZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwNDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lv
blR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVGQTkwNENBMTc4RTYxRjUwMDRDOEEyRCAvKiBD
ZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjhGMEI1MjE5NTNENjUwMDBD
MkIwMCAvKiBDZXJ0aWZpY2F0ZUluZm9CYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM2RkQx
NTE2Qzc4MjY1MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggOWU3YTk2NDg0NDQ5
OTBlNzFiNDNkNmY3NDQ3NzEzZDMyZmQwYjIwMy4uMTFlMjcyYjczZGNkODc0YzcwZTkzYzJmNWJj
MDNkMWQ0YmMzMGI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0yNTYxLDE1ICsyNTYxLDI1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKIH0KIAogI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCkKK3sKKyAg
ICBpZiAoIW1fcGxheWVyKQorICAgICAgICByZXR1cm47CisgICAgYm9vbCBzaG91bGRDb250aW51
ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVka2V5IikgfHwgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkgJiYg
IWRvY3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2VuRW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0UXVp
cmsoKSk7CisgICAgbV9wbGF5ZXItPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hv
dWxkQ29udGludWUpOworfQorI2VuZGlmCisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlk
KSBjb25zdAogewogICAgIHJldHVybiBtX3dlYktpdE1lZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFL
ZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBudWxscHRyOwogfQogCi1ib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBp
bml0RGF0YSkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFoYXNFdmVudExpc3RlbmVycygid2Vi
a2l0bmVlZGtleSIpCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKQEAgLTI1ODAsMTQgKzI1
OTAsMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50
OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgKSB7CiAgICAgICAgIG1fZXJyb3IgPSBNZWRpYUVy
cm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJSX0VOQ1JZUFRFRCk7CiAgICAgICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOwotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVk
aWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQs
IGluaXREYXRhKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwotCi0gICAgcmV0dXJuIHRydWU7
CiB9CiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdApAQCAtNTEyOSw2ICs1MTM3LDEwIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKCkKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSgpOwogI2VuZGlmCisK
KyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKyAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlmCiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCkKQEAg
LTU4OTEsNiArNTkwMywxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQo
RXZlbnQmIGV2ZW50KQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5l
ciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CisjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
aWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50KQorICAgICAg
ICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlmCisKICAgICBpZiAo
ZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0
eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucyk7CiAKQEAgLTU5MTIsNiArNTkyOSwx
MSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0
cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyJiBsaXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogeworI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
ICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCkKKyAg
ICAgICAgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgorCiAgICAg
aWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFi
aWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjpyZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCmluZGV4IGU3MTU2M2NmZjYxYTUxNDU1NjcyNGRmZDNjYTcwYjAxMDlm
ZmY1NjAuLmNhMzc0OWJkZGI2ZTBiNmYxYzRmMTg2MzAxOWJkNjQ5Njc5NTFkNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC02ODIsNyArNjgyLDcgQEAgcHJpdmF0
ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlk
KSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkq
KSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5h
bDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3QgZmluYWw7CiAjZW5kaWYKIApAQCAtNjk2LDYgKzY5NiwxMCBAQCBwcml2YXRlOgogICAgIC8v
IENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5l
Y2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHVwZGF0ZVNob3VsZENv
bnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJn
ZXRJc1dpcmVsZXNzQ2hhbmdlZChib29sKSBmaW5hbDsKQEAgLTExNjgsNiArMTE3Miw3IEBAIHBy
aXZhdGU6CiAgICAgTWVkaWFQcm92aWRlciBtX21lZGlhUHJvdmlkZXI7CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBib29sIG1faGFzTmVlZGtleUxpc3RlbmVyIHsg
ZmFsc2UgfTsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFLZXlzPiBtX3dlYktpdE1lZGlhS2V5czsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKaW5kZXggNzRiM2FhN2Q3YmRiMDBhMjY3
NTZhMDIzNjU2NmYzNjg4MTJiY2UzYi4uMWE3YTU2MjdkYmNhNjQxYjQ5Y2U3ZTU2ZTY3MTZlMzE4
YTk4OGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaApAQCAtMjcsMTMgKzI3LDI3IEBACiAK
ICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETUVuY3J5cHRpb25TY2hlbWUg
eworZW51bSBjbGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIDogdWludDhfdCB7CiAgICAgY2VuYywK
ICAgICBjYmNzLAogfTsKIAogfQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVt
ZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2VuYywKKyAgICAgICAg
V2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2JjcworICAgID47Cit9OworCit9CisKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1GYWN0b3J5LmNwcAppbmRleCA0YmI1OTlmYTgwNzNkM2I4NTVkODQ2MTc4NjE5ZGJjMDI2MTA1
OGYyLi42NjFkNWI0ZWI3NTJlYTU1YWEyZDhlNGY5ZWVkNjM4NmVkZGFjNWYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNw
cApAQCAtNTcsNiArNTcsMTEgQEAgdm9pZCBDRE1GYWN0b3J5Ojp1bnJlZ2lzdGVyRmFjdG9yeShD
RE1GYWN0b3J5JiBmYWN0b3J5KQogICAgIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKS5yZW1vdmVBbGwo
JmZhY3RvcnkpOwogfQogCit2b2lkIENETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKCkKK3sKKyAg
ICBwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKHJlZ2lzdGVyZWRGYWN0b3JpZXMoKSk7Cit9CisK
ICNpZiAhVVNFKEdTVFJFQU1FUikgJiYgIVVTRShBVkZPVU5EQVRJT04pCiB2b2lkIENETUZhY3Rv
cnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoVmVjdG9yPENETUZhY3RvcnkqPiYpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0
b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5
LmgKaW5kZXggNDRlYWFiMDdlNzU3YWZlNThiNTM2MWY1YWYxMmIyNDc3NmEwMzUyZS4uZTFhZTYw
NDIxNmE5NzU5MmYzM2NiODM2MmZjMmMyMWEyYjA4OGI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaApAQCAtNDIsNyArNDIs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3Jl
YXRlQ0RNKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlT
eXN0ZW0oY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5
Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVj
dG9yPENETUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHJlc2V0RmFjdG9yaWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJGYWN0b3J5KENETUZhY3RvcnkmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyRmFjdG9yeShDRE1GYWN0b3J5Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmlu
ZGV4IDhmOWYzZWI4NzQ1YzM1MjAyODMxNGM2MDZkMjg5ZDRlM2Y3MWEwNDguLjdmZTA5ZjBhZjNm
ZDczMDM2MjM1YzIyNzdiYWNkZWJhMDY0OWIxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaApAQCAtNTIsNiArNTIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIE1vY2ssCiAgICAgICAgIENsZWFyS2V5LAogICAgICAgICBGYWly
UGxheVN0cmVhbWluZywKKyAgICAgICAgUmVtb3RlLAogICAgIH07CiAgICAgdmlydHVhbCBJbXBs
ZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgPSAwOwogCkBAIC02OCw3
ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpID0gMDsKIAotICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyB7CisgICAgZW51bSBj
bGFzcyBIRENQU3RhdHVzIDogdWludDhfdCB7CiAgICAgICAgIFVua25vd24sCiAgICAgICAgIFZh
bGlkLAogICAgICAgICBPdXRwdXRSZXN0cmljdGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAppbmRl
eCA4NzI1YTMxZDhiYjNlMjJiZTIxZGYwN2UzMjBiMzZlNzUwMzg2ZTFhLi5kNDY0Yjc0ZDFjNzIw
MmE5YTMzOWRmZjY1ZDA2ZTA4MjA4OTY5ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAt
NzIsOSArNzIsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7CiAgICAgdXNpbmcgTWVzc2FnZSA9
IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNzaW9u
V2FzQ2xvc2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlv
bmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNz
YWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRC
dWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYp
ID0gMDsKIAotICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIHsKKyAgICBlbnVtIGNs
YXNzIFNlc3Npb25Mb2FkRmFpbHVyZSA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLAogICAgICAg
ICBOb1Nlc3Npb25EYXRhLAogICAgICAgICBNaXNtYXRjaGVkU2Vzc2lvblR5cGUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1cy5o
CmluZGV4IGFkOTY5NjIzNjA0Y2QxNDcwNTVhMjdiNzMzNmY2NzdjMGIzYWYyYzQuLmNjNWU3MTg2
Zjc0ZWY4ZTgxNGNiM2FmNzU1ZTE2MWE2NWMyMDg4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1cy5oCkBAIC0zMCw5ICsz
MCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBDRE1LZXlTdGF0
dXMgeworZW51bSBjbGFzcyBDRE1LZXlTdGF0dXMgOiB1aW50OF90IHsKICAgICBVc2FibGUsCiAg
ICAgRXhwaXJlZCwKICAgICBSZWxlYXNlZCwKQEAgLTQ0LDQgKzQ2LDIwIEBAIGVudW0gY2xhc3Mg
Q0RNS2V5U3RhdHVzIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RG
IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1LZXlTdGF0dXM+
IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6OkNETUtleVN0
YXR1cywKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlVzYWJsZSwKKyAgICBXZWJDb3JlOjpD
RE1LZXlTdGF0dXM6OkV4cGlyZWQsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpSZWxlYXNl
ZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6Ok91dHB1dFJlc3RyaWN0ZWQsCisgICAgV2Vi
Q29yZTo6Q0RNS2V5U3RhdHVzOjpPdXRwdXREb3duc2NhbGVkLAorICAgIFdlYkNvcmU6OkNETUtl
eVN0YXR1czo6U3RhdHVzUGVuZGluZywKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OkludGVy
bmFsRXJyb3IKKyAgICA+OworfTsKKworfQogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKaW5kZXggNjEyZDY0NWZhYTUy
NDhmNzFmMWMxNTY3ZjQ1MDdlODlmM2IzMWNlNS4uODUyNTg3Y2VkYTA1MTIxNDQ3OTUyMmZhYzM4
ZTRjMGZiOTg3NDlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaApAQCAt
NDgsNiArNDgsNjcgQEAgc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gewogICAgIENE
TVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllciB7IENETVJlcXVpcmVtZW50OjpPcHRp
b25hbCB9OwogICAgIENETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZSB7IENETVJlcXVpcmVt
ZW50OjpPcHRpb25hbCB9OwogICAgIFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4gc2Vzc2lvblR5cGVz
OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBsYWJlbDsKKyAgICAg
ICAgZW5jb2RlciA8PCBpbml0RGF0YVR5cGVzOworICAgICAgICBlbmNvZGVyIDw8IGF1ZGlvQ2Fw
YWJpbGl0aWVzOworICAgICAgICBlbmNvZGVyIDw8IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAg
ICBlbmNvZGVyIDw8IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKKyAgICAgICAgZW5jb2RlciA8PCBw
ZXJzaXN0ZW50U3RhdGU7CisgICAgICAgIGVuY29kZXIgPDwgc2Vzc2lvblR5cGVzOworICAgIH0K
KworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7Cisg
ICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbGFiZWw7CisgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7
CisgICAgICAgIGlmICghbGFiZWwpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBpbml0RGF0YVR5cGVzOworICAgICAg
ICBkZWNvZGVyID4+IGluaXREYXRhVHlwZXM7CisgICAgICAgIGlmICghaW5pdERhdGFUeXBlcykK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVj
dG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IGF1ZGlvQ2FwYWJpbGl0aWVzOworICAgICAgICBkZWNv
ZGVyID4+IGF1ZGlvQ2FwYWJpbGl0aWVzOworICAgICAgICBpZiAoIWF1ZGlvQ2FwYWJpbGl0aWVz
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gdmlkZW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGRl
Y29kZXIgPj4gdmlkZW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRp
ZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFs
PENETVJlcXVpcmVtZW50PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGRlY29kZXIg
Pj4gZGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBpZiAoIWRpc3RpbmN0aXZlSWRlbnRp
ZmllcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIAorICAgICAg
ICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4gcGVyc2lzdGVudFN0YXRlOworICAgICAgICBkZWNv
ZGVyID4+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgaWYgKCFwZXJzaXN0ZW50U3RhdGUpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3Rv
cjxDRE1TZXNzaW9uVHlwZT4+IHNlc3Npb25UeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBzZXNz
aW9uVHlwZXM7CisgICAgICAgIGlmICghc2Vzc2lvblR5cGVzKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUo
KmxhYmVsKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmluaXREYXRhVHlwZXMpLAorICAgICAgICAg
ICAgV1RGTW92ZSgqYXVkaW9DYXBhYmlsaXRpZXMpLAorICAgICAgICAgICAgV1RGTW92ZSgqdmlk
ZW9DYXBhYmlsaXRpZXMpLAorICAgICAgICAgICAgKmRpc3RpbmN0aXZlSWRlbnRpZmllciwKKyAg
ICAgICAgICAgICpwZXJzaXN0ZW50U3RhdGUsCisgICAgICAgICAgICBXVEZNb3ZlKCpzZXNzaW9u
VHlwZXMpLAorICAgICAgICB9fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1N
ZWRpYUNhcGFiaWxpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETU1lZGlhQ2FwYWJpbGl0eS5oCmluZGV4IDkwMWI1NGZmMDUwOGVkYTliYmI4OGM1YzFkYjg2
NTM4ZGNlMTQyODIuLmY4NGEwZDEyYWI0Y2Q1MjBlM2YwZTA0ZDY0ZWJlZmM2MzE2MjU4N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lZGlh
Q2FwYWJpbGl0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETU1lZGlhQ2FwYWJpbGl0eS5oCkBAIC0zOSw2ICszOSwzOSBAQCBzdHJ1Y3QgQ0RNTWVkaWFD
YXBhYmlsaXR5IHsKICAgICBTdHJpbmcgY29udGVudFR5cGU7CiAgICAgU3RyaW5nIHJvYnVzdG5l
c3M7CiAgICAgT3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNjaGVtZT4gZW5jcnlwdGlvblNjaGVtZTsK
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgY29udGVudFR5cGU7Cisg
ICAgICAgIGVuY29kZXIgPDwgcm9idXN0bmVzczsKKyAgICAgICAgZW5jb2RlciA8PCBlbmNyeXB0
aW9uU2NoZW1lOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0
YXRpYyBPcHRpb25hbDxDRE1NZWRpYUNhcGFiaWxpdHk+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKKyAgICAgICAg
ZGVjb2RlciA+PiBjb250ZW50VHlwZTsKKyAgICAgICAgaWYgKCFjb250ZW50VHlwZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBy
b2J1c3RuZXNzOworICAgICAgICBkZWNvZGVyID4+IHJvYnVzdG5lc3M7CisgICAgICAgIGlmICgh
cm9idXN0bmVzcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
T3B0aW9uYWw8T3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNjaGVtZT4+IGVuY3J5cHRpb25TY2hlbWU7
CisgICAgICAgIGRlY29kZXIgPj4gZW5jcnlwdGlvblNjaGVtZTsKKyAgICAgICAgaWYgKCFlbmNy
eXB0aW9uU2NoZW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAg
ICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUoKmNvbnRlbnRUeXBlKSwKKyAgICAgICAg
ICAgIFdURk1vdmUoKnJvYnVzdG5lc3MpLAorICAgICAgICAgICAgV1RGTW92ZSgqZW5jcnlwdGlv
blNjaGVtZSksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TU1lc3NhZ2VUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1NZXNzYWdlVHlwZS5oCmluZGV4IGU1Zjc5NmE5ZTBlMDc1MWFhMDI3ODJiOWI2NjZjYTIzMWVm
N2U2MDkuLjk1YmYyOGMyYWE5NGEzZGE1MDQ1YjVlYzAwZjM1OGNkMjZkOTVjYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2Fn
ZVR5cGUuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgeworZW51bSBjbGFzcyBDRE1NZXNzYWdlVHlwZSA6IHVp
bnQ4X3QgewogICAgIExpY2Vuc2VSZXF1ZXN0LAogICAgIExpY2Vuc2VSZW5ld2FsLAogICAgIExp
Y2Vuc2VSZWxlYXNlLApAQCAtNDEsNCArNDMsMTggQEAgZW51bSBjbGFzcyBDRE1NZXNzYWdlVHlw
ZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0LAorICAg
ICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsCisgICAgICAgIFdl
YkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVsZWFzZSwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNTWVzc2FnZVR5cGU6OkluZGl2aWR1YWxpemF0aW9uUmVxdWVzdAorICAgID47Cit9OworCit9
CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IDI1Zjc4MTZh
MmZlMWRhNmY5MGMyZmVmNzc3NTUxNDA2YWEwZjRhMDMuLjc0OWZjZGYyZmMzN2E1ZTlmZTYyNWQ1
M2EzZTAxMWM3MWM0YWVkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTQxLDExICs0MSwxMSBAQCBjbGFzcyBDRE1Q
cml2YXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlKCkgPSBkZWZhdWx0Owog
Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5p
dERhdGFUeXBlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBDRE1SZXF1aXJl
bWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIENETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJP
cmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVJlcXVpcmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1SZXF1aXJlbWVudC5oCmluZGV4IDY5YWMxMmQzMTZiZjY2NTdiYjBhMjRkYWY3YWU0ZmEw
ZmQ0ZjFjOTguLjViMGI3NzgwZDI3ZGZlYjE5M2RjZTZlY2RhNzE3ODUyOGY3Y2Q1OTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVx
dWlyZW1lbnQuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgeworZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6
IHVpbnQ4X3QgewogICAgIFJlcXVpcmVkLAogICAgIE9wdGlvbmFsLAogICAgIE5vdEFsbG93ZWQK
QEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgewogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6OkNETVJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQsCisgICAgICAgIFdl
YkNvcmU6OkNETVJlcXVpcmVtZW50OjpSZXF1aXJlZCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVx
dWlyZW1lbnQ6Ok9wdGlvbmFsLAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudDo6Tm90
QWxsb3dlZAorICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUmVzdHJpY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1SZXN0cmljdGlvbnMuaAppbmRleCBjNTJlMjgyYTEyZTkxYTQ4ODEwYmQxOGI4N2ViNmFk
NjM4ZjIxMGE4Li45Y2EyYWM1OWU4YjEzNTQ2M2E1MmRiNDVlODA3MzFmNTBjNjk0ZjNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmlj
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1S
ZXN0cmljdGlvbnMuaApAQCAtMzYsNiArMzYsMzkgQEAgc3RydWN0IENETVJlc3RyaWN0aW9ucyB7
CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgcGVyc2lzdGVudFN0YXRlRGVuaWVkIHsgZmFsc2UgfTsKICAgICBIYXNoU2V0PENETVNlc3Np
b25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNo
VHJhaXRzPENETVNlc3Npb25UeXBlPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQ7
CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlRGVuaWVkOworICAgICAgICBlbmNv
ZGVyIDw8IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNUmVzdHJpY3Rpb25zPiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3RpbmN0aXZl
SWRlbnRpZmllckRlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJEZW5pZWQ7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBw
ZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudFN0YXRl
RGVuaWVkOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZURlbmllZCkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8SGFzaFNldDxDRE1TZXNz
aW9uVHlwZSwgV1RGOjpJbnRIYXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFz
aFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAgICAgIGRl
Y29kZXIgPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworICAgICAgICBpZiAoIWRlbmllZFNlc3Npb25U
eXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJu
IHt7CisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkLAorICAgICAgICAg
ICAgKnBlcnNpc3RlbnRTdGF0ZURlbmllZCwKKyAgICAgICAgICAgIFdURk1vdmUoKmRlbmllZFNl
c3Npb25UeXBlcyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVNlc3Npb25UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1TZXNzaW9uVHlwZS5oCmluZGV4IDYwNTc0YTVhNjkzYTk2YzQ5ZjQ5ZmI3MzQ5NmVkNzVi
N2UxZTZmYmIuLmUwN2MzMDAyNzkzMDVmNzc0M2YyMmZjZjU0MDZmMmNmYTY4MWRlMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25U
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vz
c2lvblR5cGUuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgeworZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6
IHVpbnQ4X3QgewogICAgIFRlbXBvcmFyeSwKICAgICBQZXJzaXN0ZW50VXNhZ2VSZWNvcmQsCiAg
ICAgUGVyc2lzdGVudExpY2Vuc2UKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3MgQ0RNU2Vz
c2lvblR5cGUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVNlc3Npb25UeXBlPiB7
CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vz
c2lvblR5cGUsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpUZW1wb3JhcnksCisg
ICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQsCisg
ICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZQorICAgID47
Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDQ1MTExZGM3NWI1NTA4MGNlZjRlNWZiMzhhZTI2MzNi
MzllYTcyMzMuLjg2NGQ2ZTNkZTgzYjAyYzNiMWMwZDNhZGI1NjU3YjNjZTdiNjE5ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ0RNUmVzdHJpY3Rpb25zLmgi
CiAjaW5jbHVkZSAiQ0RNU2Vzc2lvblR5cGUuaCIKKyNpbmNsdWRlICJJbml0RGF0YVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI5MCwxMCArMjkxLDEzIEBAIGJvb2wgQ0RNRmFjdG9yeUNs
ZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIENETVBy
aXZhdGVDbGVhcktleTo6Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogQ0RNUHJpdmF0
ZUNsZWFyS2V5Ojp+Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1ib29sIENETVBy
aXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVDbGVhcktleTo6
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7Ci0gICAgLy8gYGtleWlkc2AgYW5kICdj
ZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgotICAgIHJldHVybiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIpIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgIndlYm0iKSk7CisgICAg
cmV0dXJuIHsKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6a2V5aWRzTmFtZSgpLAorICAgICAg
ICBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpLAorICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5
Ojp3ZWJtTmFtZSgpLAorICAgIH07CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zUGVyc2lzdGVu
dExpY2Vuc2VUeXBlKGNvbnN0IFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4mIHR5cGVzKQpAQCAtMzM3
LDcgKzM0MSw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0NvbmZpZ3VyYXRp
b25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlQ2xlYXJL
ZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9u
VHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24pIGNvbnN0CiB7CiAgICAgLy8gT25seSBzdXBwb3J0IHRoZSAndGVtcG9yYXJ5JyBh
bmQgJ3BlcnNpc3RlbnQtbGljZW5zZScgc2Vzc2lvbiB0eXBlcy4KICAgICBpZiAoc2Vzc2lvblR5
cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSAmJiBzZXNzaW9uVHlwZSAhPSBDRE1TZXNz
aW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2UpCkBAIC0zNDUsMTAgKzM0OSwxMCBAQCBib29sIENE
TVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENE
TVNlc3Npb25UeXBlJiBzZQogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmln
dXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1JvYnVzdG5l
c3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENE
TVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKICAgICAv
LyBPbmx5IGVtcHR5IGByb2J1c3RuZXNzYCBzdHJpbmcgaXMgc3VwcG9ydGVkLgotICAgIHJldHVy
biByb2J1c3RuZXNzLmlzRW1wdHkoKTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSB9OwogfQog
CiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlQ2xlYXJLZXk6OmRpc3RpbmN0aXZlSWRlbnRpZmll
cnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RN
UmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0CkBAIC00OTgsNyArNTAyLDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICNpZiBMT0dfRElTQUJMRUQKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9uIElEIGZvciBk
ZWJ1ZyBsb2dnaW5nLiBUaGUgdmVyYm9zZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFyZSBiZWNhdXNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCA2NzA0YWU3YTk1N2YzMmZlMWY4NDk4M2Vk
M2IzZjY1MDJhNTMxNWEyLi40YWI5ZGUwZjAyY2VlYmIyMGE5M2NkZjYxZTNiNzcwZjVmZGU4MjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTc0LDExICs3NCwxMSBAQCBwdWJsaWM6
CiAgICAgQ0RNUHJpdmF0ZUNsZWFyS2V5KCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUNsZWFy
S2V5KCk7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
KSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFU
eXBlcygpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1
c3RuZXNzZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBz
dXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKLSAgICBi
b29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYs
IGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKLSAgICBib29s
IHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBib29s
IHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlw
ZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBD
RE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZp
bmFsOwogICAgIENETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmln
aW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZp
bmFsOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleShDRE1JbnN0YW5jZUNsZWFyS2V5JiBwYXJlbnQpCiAgICAgICAgIDogbV9wYXJlbnRJ
bnN0YW5jZShwYXJlbnQpIHsgfQogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA1N2RmY2JmNGJj
N2M0ODg0NGQzODFjYjM1ZWNjNjQzYzFhYWI0YjkyLi5kYjBiMmY4YTdlMGYyNjk2YTFkOGRiNmY0
ZDRmNDdhYWVjOGViZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02NTcsNiArNjU3LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXI6
OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogCiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQordm9pZCBNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktl
eU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVk
ZWQgPSBzaG91bGQ7CisgICAgbV9wcml2YXRlLT5zZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKHNob3VsZCk7Cit9CisjZW5kaWYKKwogTWVkaWFUaW1lIE1lZGlhUGxheWVyOjpkdXJhdGlv
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZHVyYXRpb25NZWRpYVRpbWUoKTsK
QEAgLTEzMTIsOSArMTMyMCw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gTWVkaWFQbGF5ZXI6OmNh
Y2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0CiAgICAgcmV0dXJuIGNs
aWVudCgpLm1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpOwogfQogCi1ib29sIE1l
ZGlhUGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIE1lZGlhUGxh
eWVyOjprZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCiB7Ci0gICAgcmV0dXJuIGNsaWVu
dCgpLm1lZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKKyAgICBjbGllbnQoKS5tZWRpYVBs
YXllcktleU5lZWRlZChpbml0RGF0YSk7CiB9CiAKIFN0cmluZyBNZWRpYVBsYXllcjo6bWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA3ZTZjYjhhMzkwZGY3ZmUxYTdhYWUwMTczOWRj
OTQ4Zjc3NjYyMWVlLi5hZWYzY2VlNGFhYjllYTIwYzU2OWU2N2E0MWUxMjBiNzY0MGVmYTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAg
LTIwMCw3ICsyMDAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKICAgICB2aXJ0dWFsIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAg
dmlydHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5
KikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogI2VuZGlmCiAKQEAgLTM2
Niw2ICszNjYsMTEgQEAgcHVibGljOgogICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0
YW5jZShDRE1JbnN0YW5jZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisgICAgYm9vbCBzaG91bGRDb250aW51ZUFmdGVy
S2V5TmVlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVk
OyB9CisjZW5kaWYKKwogICAgIGJvb2wgcGF1c2VkKCkgY29uc3Q7CiAgICAgYm9vbCBzZWVraW5n
KCkgY29uc3Q7CiAKQEAgLTUxOSw3ICs1MjQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGNhY2hlZEtleUZv
cktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0OwotICAgIGJvb2wga2V5TmVlZGVkKFVp
bnQ4QXJyYXkqIGluaXREYXRhKTsKKyAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICNl
bmRpZgogCkBAIC02NjUsNiArNjcwLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IG1fbWVkaWFTdHJlYW07CiAjZW5k
aWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICBib29sIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCB7IGZhbHNl
IH07CisjZW5kaWYKIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmlu
ZGV4IDlmN2Y2ZTZiMDJkM2JlYmUwOTBlYmNjMzJhNGIwZGNhMWNjMTc1YTguLjdhODIwNDcwZjk5
OWFjOTlhNmE5OWQ4ZjM0Mjc2YzlmNDU1OTBhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0yNDMsNiArMjQz
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91
bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wpIHsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50
YXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggNGZjNjc4N2RkOGQ5MDdj
YWQ2YTI3N2YzOWIxZWQzMmVkNjc5YTZkOC4uYjZiYWJmY2RlNWEwZDRiODExOGQwM2NjOTJmMWQ2
MTlkNjFkNzdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CkBAIC0yNDcsOSArMjQ3LDkgQEAgYm9vbCBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OnN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKSA9IGRlZmF1bHQ7CiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6On5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmco
KSA9IGRlZmF1bHQ7CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0
c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CitWZWN0
b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0ZWRJbml0
RGF0YVR5cGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdmFsaWRJbml0RGF0YVR5cGVzKCkuY29u
dGFpbnMoaW5pdERhdGFUeXBlKTsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKHZhbGlkSW5pdERh
dGFUeXBlcygpKTsKIH0KIAogYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBv
cnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKSBjb25zdApAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENE
CiAgICAgcmV0dXJuIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKIH0KIAot
Ym9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRo
Q29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Citib29sIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKIHsKICAgICBpZiAoc2Vzc2lvblR5cGUgPT0g
Q0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSkgewogICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5w
ZXJzaXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKQpAQCAtMzE2LDEzICsz
MTYsMTAgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lv
blR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW8KICAgICByZXR1cm4gc3VwcG9ydHNDb25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29u
c3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBv
cnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHJvYnVzdG5lc3MuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIC8vIEZJWE1FOiBEZXRlcm1pbmUgYW4gZW51
bWVyYXRlZCBsaXN0IG9mIHJvYnVzdG5lc3MgdmFsdWVzIHN1cHBvcnRlZCBieSBGUFMuCi0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiB7IGVtcHR5QXRvbSgpIH07CiB9CiAKIENETVJlcXVp
cmVtZW50IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZGlzdGluY3RpdmVJZGVudGlmaWVy
c1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1S
ZXN0cmljdGlvbnMmKSBjb25zdApAQCAtMzY2LDcgKzM2Myw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKIAogYm9vbCBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewotICAg
IGlmICghc3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkKKyAgICBpZiAoIXZhbGlk
SW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gc2luZk5hbWUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCA1Mzg2OTY5Zjk0OTc2ZjM4MzY4MDE4
NzQxYmFmZDEyNTUxZTI4Yjg1Li4zODdiOWY5MjVhZDdhZmJhZTJkMmM1NjEyZjg0YjQzNGMwZjEw
ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNTUsMTEg
KzU1LDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKICAg
ICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKIAotICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0
aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c1Nl
c3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c1Jv
YnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0
c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQo
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1
ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCBiMTFmNzFhOWI1ZTM4
YmY2OThiMTM5NDlkZGRlODZmM2RkOTk0Y2MxLi43ZjBlMmQ1YWMwMGU2MDYyZDM1YmFjNDVkNmUx
ZTcxZDQ0MDNlODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTEyMCw3ICsxMjAsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KICAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYs
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExp
Y2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3Nl
U2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29u
c3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IDczMjY3NzVmNDdkMzg1OGIwNWY3ODc4
YjczNTc0YTQ2NDdjYjhkMzEuLmYwOWIyODlhMzNlN2VjMDQwZjA0ZDFmNmY5OWFmOGVmOTBkOTc3
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC01ODAsNyArNTgwLDcgQEAgc3RhdGlj
IGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7
CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9l
eHBpcmVkU2Vzc2lvbnMuaXNFbXB0eSgpICYmIGlzRXF1YWwocmVzcG9uc2VEYXRhLCAiYWNrbm93
bGVkZ2VkIl9zKSkgewogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwpAQCAtNzExLDcgKzcxMSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAg
ICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3ND
b250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNv
bnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNw
b25zZURhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVl
c3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BB
TDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhG
YWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXV07CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0
YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1
cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KICAgICBzdHJ1Y3Qgb2JqY19tZXRob2RfZGVzY3Jp
cHRpb24gbWV0aG9kID0gcHJvdG9jb2xfZ2V0TWV0aG9kRGVzY3JpcHRpb24oQHByb3RvY29sKEFW
Q29udGVudEtleVNlc3Npb25EZWxlZ2F0ZSksIEBzZWxlY3Rvcihjb250ZW50S2V5U2Vzc2lvbjpj
b250ZW50S2V5UmVxdWVzdERpZFN1Y2NlZWQ6KSwgTk8sIFlFUyk7CkBAIC0xMTQwLDcgKzExNDAs
OCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vz
c2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0YQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nl
c3Npb25JZCA9IHNlc3Npb25JZDsKLSAgICBtX2NsaWVudC0+c2Vzc2lvbklkQ2hhbmdlZChtX3Nl
c3Npb25JZCk7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c2Vzc2lvbklk
Q2hhbmdlZChtX3Nlc3Npb25JZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpncm91cFNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChBVkNvbnRl
bnRLZXlSZXBvcnRHcm91cCogZ3JvdXAsIE5TRGF0YSAqc2Vzc2lvbklkZW50aWZpZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQppbmRleCBiMzdjNDQxMTMxNDk4ODc5NTQ2ZWM4YTU3YTBkZDhlMTFm
Nzg0Njk3Li5kNzhjN2NhYTYwMjA4M2ZhM2I4M2IzM2M3NjBkZDRmNDExMmQ2M2IwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KQEAgLTE2NzgsOSArMTY3OCwxMiBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShB
VkFzc2V0UgogICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2UoU3RyaW5nVmlldyhrZXlVUkkp
LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXplb2YodW5zaWdu
ZWQgY2hhciksIDApOwogCiAgICAgICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVh
dGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwotICAgICAgICBpZiAo
IXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBwbGF5ZXIoKS0+
a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKTsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
ICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgICAgICBpZiAo
bV9jZG1JbnN0YW5jZSkgewpAQCAtMTcxMyw3ICsxNzE2LDkgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZB
c3NldFIKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlm
ICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCisgICAgICAgIHBsYXllcigp
LT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworCisgICAgICAgIGlmICghcGxheWVyKCktPnNo
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICBtX2tleVVSSVRvUmVxdWVzdE1hcC5zZXQoa2V5SUQsIGF2UmVxdWVzdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IGNlNWQ4ZjdkNmJk
ZjM4YjU5MjIwOTMwMmE2ZTZkNzFiMzY5NjYzMmQuLjBhNGQ2NTc1MGExNTRjNWU1ZWUxOWI1ODMw
YzlmYmFlMDAwMWUzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwCkBAIC05OCw2ICs5OCwxMSBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWRE
YXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykKICAgICAgICAgbV9zdXBwb3J0ZWREYXRh
VHlwZXMuYXBwZW5kKHR5cGUpOwogfQogCit2b2lkIE1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0
ZWRSb2J1c3RuZXNzKFZlY3RvcjxTdHJpbmc+JiYgcm9idXN0bmVzc2VzKQoreworICAgIG1fc3Vw
cG9ydGVkUm9idXN0bmVzcyA9IHJvYnVzdG5lc3Nlcy5tYXAoW10gKGF1dG8mIHJvYnVzdG5lc3Mp
IC0+IEF0b21TdHJpbmcgeyByZXR1cm4gcm9idXN0bmVzczsgfSk7Cit9CisKIHN0ZDo6dW5pcXVl
X3B0cjxDRE1Qcml2YXRlPiBNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsK
QEAgLTEwOCwxMSArMTEzLDE4IEBAIE1vY2tDRE06Ok1vY2tDRE0oV2Vha1B0cjxNb2NrQ0RNRmFj
dG9yeT4gZmFjdG9yeSkKIHsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlw
ZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmlu
Zz4gTW9ja0NETTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7CiAgICAgaWYgKG1f
ZmFjdG9yeSkKLSAgICAgICAgcmV0dXJuIG1fZmFjdG9yeS0+c3VwcG9ydGVkRGF0YVR5cGVzKCku
Y29udGFpbnMoaW5pdERhdGFUeXBlKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpOworICAgIHJldHVybiB7IH07Cit9CisK
K1ZlY3RvcjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25z
dAoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnN1cHBv
cnRlZFJvYnVzdG5lc3MoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBib29sIE1vY2tDRE06OnN1
cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0xMzksNyArMTUxLDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBw
b3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUs
IGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0Citib29sIE1vY2tDRE06
OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVNlc3Np
b25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QKIHsKICAgICBpZiAoIW1fZmFjdG9yeSB8fCAhbV9mYWN0b3J5LT5zdXBwb3J0ZWRTZXNz
aW9uVHlwZXMoKS5jb250YWlucyhzZXNzaW9uVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTE0OCwxMyArMTYwLDYgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblQKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5n
JiByb2J1c3RuZXNzKSBjb25zdAotewotICAgIGlmIChtX2ZhY3RvcnkpCi0gICAgICAgIHJldHVy
biBtX2ZhY3RvcnktPnN1cHBvcnRlZFJvYnVzdG5lc3MoKS5jb250YWlucyhyb2J1c3RuZXNzKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIE1lZGlhS2V5c1JlcXVpcmVtZW50IE1vY2tDRE06OmRp
c3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdAogewogICAgIGlm
IChtX2ZhY3RvcnkpCkBAIC0xOTksNyArMjA0LDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nl
c3Npb25zKCkgY29uc3QKIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29u
c3QKIHsKLSAgICBpZiAoIXN1cHBvcnRzSW5pdERhdGFUeXBlKGluaXREYXRhVHlwZSkpCisgICAg
aWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVU5VU0VEX1BBUkFNKGluaXREYXRhKTsKQEAgLTMy
NSw3ICszMzAsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwogICAgIGNhbGxiYWNrKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwgc2Vzc2lv
bklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tDRE1J
bnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3Rv
cnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMzMsNyArMzM4LDcgQEAg
dm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZl
Y3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVz
cG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVj
dG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcg
Jyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZv
cm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggMzk5MDliOTMwM2E5NGM5MzY4ZWFhMGY2
MjVmNGI2N2U1MjUwNTlmMS4uNmNiOTE1Yzg1MDE1NThmMTBiYjhmYzViMmRhNTI4MzUwNDBmMGVi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtNTIsOCArNTIs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+JiBzdXBw
b3J0ZWRTZXNzaW9uVHlwZXMoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZFNlc3Npb25UeXBl
czsgfQogICAgIHZvaWQgc2V0U3VwcG9ydGVkU2Vzc2lvblR5cGVzKFZlY3RvcjxNZWRpYUtleVNl
c3Npb25UeXBlPiYmIHR5cGVzKSB7IG1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzID0gV1RGTW92ZSh0
eXBlcyk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdXBwb3J0ZWRSb2J1c3RuZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOyB9Ci0gICAgdm9pZCBzZXRT
dXBwb3J0ZWRSb2J1c3RuZXNzKFZlY3RvcjxTdHJpbmc+JiYgcm9idXN0bmVzcykgeyBtX3N1cHBv
cnRlZFJvYnVzdG5lc3MgPSBXVEZNb3ZlKHJvYnVzdG5lc3MpOyB9CisgICAgY29uc3QgVmVjdG9y
PEF0b21TdHJpbmc+JiBzdXBwb3J0ZWRSb2J1c3RuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBw
b3J0ZWRSb2J1c3RuZXNzOyB9CisgICAgdm9pZCBzZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKFZlY3Rv
cjxTdHJpbmc+JiYpOwogCiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQ7IH0KICAgICB2b2lkIHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudChNZWRpYUtleXNSZXF1aXJlbWVudCByZXF1aXJlbWVudCkgeyBtX2Rpc3RpbmN0aXZl
SWRlbnRpZmllcnNSZXF1aXJlbWVudCA9IHJlcXVpcmVtZW50OyB9CkBAIC05MCw3ICs5MCw3IEBA
IHByaXZhdGU6CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgbV9wZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudCB7IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbCB9OwogICAgIFZlY3RvcjxB
dG9tU3RyaW5nPiBtX3N1cHBvcnRlZERhdGFUeXBlczsKICAgICBWZWN0b3I8TWVkaWFLZXlTZXNz
aW9uVHlwZT4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9z
dXBwb3J0ZWRSb2J1c3RuZXNzOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBtX3N1cHBvcnRlZFJv
YnVzdG5lc3M7CiAgICAgVmVjdG9yPE1lZGlhS2V5RW5jcnlwdGlvblNjaGVtZT4gbV9zdXBwb3J0
ZWRFbmNyeXB0aW9uU2NoZW1lczsKICAgICBib29sIG1fcmVnaXN0ZXJlZCB7IHRydWUgfTsKICAg
ICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1ZSB9OwpAQCAtMTA5LDExICsxMDksMTEg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTW9ja0NETUluc3RhbmNlOwog
Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qg
ZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBj
b25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2Vz
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0
c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwotICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lv
blR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsK
LSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRp
YUtleVNlc3Npb25UeXBlJiwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29u
c3QgZmluYWw7CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVy
c1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1l
ZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIE1lZGlhS2V5c1JlcXVpcmVt
ZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJs
ZShjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGU2
ODZjNjNjMThmMzU4NmZmY2E3NGUxNzMxYzBmZjI3NzQxYjBkM2IuLmM1YWYzYjVmYmUwY2FiYjhi
MmRlMzBkMDg2ZDMzYTRmNzk0NzkxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE2LDYgKzE2LDEwIEBAICQoSkFWQVNDUklQVENPUkVf
UFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVBy
b2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9t
YWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiskKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmlu
CiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVz
c2FnZXMuaW4KQEAgLTEwOCw2ICsxMTIsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMWZjZjdlNDExMDdmYjNmN2JlMmJj
Njk5OTM2NmEwNWY4ZTY1MDgyOC4uYzczZTI4NzNkOWJmY2E3MTQ2NmM5NDczMTEzYjkwMDI2MGI1
MTc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CkBAIC0xMjksNiArMTI5LDIxIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFj
dG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDEwZDE3MjU1ODc1YTE2ZWM2ZDNl
NmFmZDI1MDZiNTE1NTc2MzU0MDQuLjJkMDA3NTg3YTQ1ODYxMzA2ZjQyZGNjMzUwOGQ2NWNmY2Jl
NjJlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE0Niw2ICsxNDYsMTEgQEAg
TUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciBc
CiAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCisgICAgUmVtb3RlQ0RNUHJv
eHkgXAorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eSBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIFwKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eSBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKICAgICBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggYTM5NGUwOTQzMWUwMjc2OGZhMTA3NDdjZWNmMmI5M2U5ZGY5
MTYyNS4uMzkwOWJjODY5NTdlNjBiNDJiMjM0ZjllMzNmYTAzZmJiYzE0ZDljMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtNTgsMTAgKzU4LDE4IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCi0KICNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KIAorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHlN
ZXNzYWdlcy5oIgorI2VuZGlmCisKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtMTg5LDYgKzE5NywxNyBAQCBMaWJXZWJSVENDb2RlY3NQcm94eSYg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUHJveHkoKQogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorUmVtb3RlQ0RNRmFjdG9yeVByb3h5
JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjZG1GYWN0b3J5UHJveHkoKQoreworICAgIGlm
ICghbV9jZG1GYWN0b3J5UHJveHkpCisgICAgICAgIG1fY2RtRmFjdG9yeVByb3h5ID0gbWFrZVVu
aXF1ZTxSZW1vdGVDRE1GYWN0b3J5UHJveHk+KCp0aGlzKTsKKworICAgIHJldHVybiAqbV9jZG1G
YWN0b3J5UHJveHk7Cit9CisjZW5kaWYKKworCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewpAQCAtMjM5LDYgKzI1OCwyNyBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAg
IGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2
ZUNETU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBj
ZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgp
LmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYgcmVwbHlFbmNvZGVyKQpAQCAtMjU5LDYgKzI5OSwyNyBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3RpbwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisjZW5kaWYKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJv
bVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAg
ICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3Rv
cnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFj
dG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAj
ZW5kaWYKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjY5LDcgKzMzMCw3IEBAIGNv
bnN0IFN0cmluZyYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFDYWNoZURpcmVjdG9y
eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZ3B1UHJvY2Vzcy0+bWVkaWFDYWNoZURpcmVjdG9yeSht
X3Nlc3Npb25JRCk7CiB9CiAKLSNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKIGNvbnN0IFN0cmluZyYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZ3B1UHJvY2Vzcy0+bWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeShtX3Nlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAwZWMyMzhjZDA2
MjUzODM0NzU5YmZlOTZiYmFlMGFkZWJiMzUxYTdlLi5mMDAwMWNlNDhhZDBlOWMwZjZmMGZjYmUw
ZmYzY2Y4NWExNzQxMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CiBj
bGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CitjbGFzcyBS
ZW1vdGVDRE1GYWN0b3J5UHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTsKIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXI7CkBAIC03Niw2ICs3NywxMCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIHNlc3Npb25NYW5hZ2VyKCk7CiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSYgY2RtRmFj
dG9yeVByb3h5KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTExOCw2ICsxMjMsMTAg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDQ29kZWNzUHJveHk+IG1f
bGliV2ViUlRDQ29kZWNzUHJveHk7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3Nlc3Npb25NYW5hZ2VyOworCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNRmFj
dG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YjRhZmQ0YjQzNjc3N2QxYzRk
MTNmODcwYjQ0ZGQyYjM2OTgxMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApAQCAtMCwwICsxLDE2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpSZW1vdGVDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25u
ZWN0aW9uKQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6On5SZW1vdGVDRE1GYWN0b3J5
UHJveHkoKSA9IGRlZmF1bHQ7CisKK3N0YXRpYyBDRE1GYWN0b3J5KiBmYWN0b3J5Rm9yS2V5U3lz
dGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIGF1dG8mIGZhY3RvcmllcyA9IENE
TUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBhdXRvIGZvdW5kSW5kZXggPSBm
YWN0b3JpZXMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgZmFjdG9yeSkgeyByZXR1cm4gZmFjdG9y
eS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKTsgfSk7CisgICAgaWYgKGZvdW5kSW5kZXgg
PT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBmYWN0b3Jp
ZXNbZm91bmRJbmRleF07Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpjcmVhdGVD
RE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3Rl
Q0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24p
Cit7CisgICAgYXV0byBmYWN0b3J5ID0gZmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0ZW0pOwor
ICAgIGlmICghZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcHJpdmF0ZUNETSA9IGZhY3RvcnktPmNyZWF0
ZUNETShrZXlTeXN0ZW0pOworICAgIGlmICghcHJpdmF0ZUNETSkgeworICAgICAgICBjb21wbGV0
aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcHJveHkg
PSBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBXVEZNb3ZlKHByaXZh
dGVDRE0pKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOworICAgIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IHByb3h5
LT5jb25maWd1cmF0aW9uKCk7CisgICAgYWRkUHJveHkoaWRlbnRpZmllciwgV1RGTW92ZShwcm94
eSkpOworICAgIGNvbXBsZXRpb24oV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShjb25maWd1
cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24oZmFjdG9yeUZvcktleVN5c3RlbShr
ZXlTeXN0ZW0pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVD
RE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElk
ZW50aWZpZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgp
KSkpCisgICAgICAgIHByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5j
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVz
dGluYXRpb25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJl
Y2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9z
ZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Np
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hp
ZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPihkZWNv
ZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZh
Y3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IG1faW5z
dGFuY2VzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpbnN0YW5jZS0+ZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRQ
cm94eShSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJv
eHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAg
ICBtX3Byb3hpZXMuc2V0KGlkLCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpyZW1vdmVQcm94eShSZW1vdGVDRE1JZGVudGlmaWVyIGlkKQoreworICAg
IEFTU0VSVChtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMucmVtb3ZlKGlk
KTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZEluc3RhbmNlKFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNl
UHJveHk+JiYgaW5zdGFuY2UpCit7CisgICAgQVNTRVJUKCFtX2luc3RhbmNlcy5jb250YWlucyhp
ZCkpOworICAgIG1faW5zdGFuY2VzLnNldChpZCwgV1RGTW92ZShpbnN0YW5jZSkpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhpZCkp
OworICAgIG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlUHJv
eHkqIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlkKTsK
K30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5PiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNv
bnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOwor
fQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNv
bnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZh
Y3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZh
Y3RvcnlQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YjFjY2M5NWJiZDNmZTNiOWYzMzUyZDg1MDAyNzdh
NGJmZDM5MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTsKK2NsYXNz
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OworY2xhc3MgUmVtb3RlQ0RNUHJveHk7Citz
dHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbjsKKworY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5IGZpbmFsIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeVByb3h5KCk7CisKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21X
ZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KKyAgICB2b2lkIGRp
ZFJlY2VpdmVDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAg
IHZvaWQgZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETUluc3RhbmNl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+Jik7CisKKyAgICB2b2lkIGFkZFByb3h5KFJlbW90ZUNETUlkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVQ
cm94eShSZW1vdGVDRE1JZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkSW5zdGFuY2UoUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eT4mJik7CisgICAgdm9pZCByZW1vdmVJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXIpOworICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjsKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWwg
eyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAg
IC8vIE1lc3NhZ2VzCisgICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiYpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsK
KyAgICBIYXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVD
RE1Qcm94eT4+IG1fcHJveGllczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+PiBtX2luc3RhbmNl
czsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lvbnM7Cit9
OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDQ3YzVlNmU2MWM0MjA3ODMxZGEwYmQxMThhNmFhZWI0MGQzMzEzNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJv
eHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJl
bW90ZUNETUZhY3RvcnlQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVDRE0oU3RyaW5n
IGtleVN5c3RlbSkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllciBpZCwgc3RydWN0IFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5jaHJvbm91cwor
ICAgIFN1cHBvcnRzS2V5U3lzdGVtKFN0cmluZyBrZXlTeXN0ZW0pIC0+IChib29sIHJlc3VsdCkg
U3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVk
OTI1NDViN2ZkMGQ0ZDMyZjUxMjQyNTFmOGIwMDE1Y2NhOTU4ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNw
cApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJv
eHk+IFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rv
cnlQcm94eT4mJiBmYWN0b3J5LCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdikKK3sKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24sIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
biYmPih7CisgICAgICAgIHByaXYtPmtleVN5c3RlbSgpLAorICAgIH0pOworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4obmV3IFJlbW90ZUNETUluc3Rh
bmNlUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2KSwgV1RGTW92ZShjb25maWd1
cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJlZjxDRE1J
bnN0YW5jZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAg
ICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp+UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9pbnN0YW5jZS0+aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pID09IENETUluc3RhbmNlOjpT
dWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9pbnN0YW5jZS0+c2V0
RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYWxsb3dlZCkgPT0gQ0RNSW5zdGFuY2U6OlN1
Y2NlZWRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0UGVyc2lzdGVu
dFN0YXRlQWxsb3dlZChib29sIGFsbG93ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPnNldFBlcnNpc3Rl
bnRTdGF0ZUFsbG93ZWQoYWxsb3dlZCkgPT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgY2VydGlmaWNhdGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWNlcnRpZmljYXRlLmJ1ZmZl
cigpKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjZXJ0
aWZpY2F0ZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpKSA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vl
ZGVkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5zZXRTdG9yYWdl
RGlyZWN0b3J5KGRpcmVjdG9yeSkgPT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJiBjb21w
bGV0aW9uKQoreworICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNz
aW9uKCk7CisgICAgaWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9mYWN0b3J5KSB7CisgICAgICAgIGNv
bXBsZXRpb24oeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAg
IGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjcmVhdGUobWFr
ZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwgcHJpdlNlc3Npb24ucmVsZWFzZU5vbk51bGwoKSwg
aWRlbnRpZmllcik7CisgICAgbV9mYWN0b3J5LT5hZGRTZXNzaW9uKGlkZW50aWZpZXIsIFdURk1v
dmUoc2Vzc2lvbikpOworICAgIGNvbXBsZXRpb24oaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0SERDUFN0YXR1cyhXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
SERDUFN0YXR1cyBzdGF0dXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPnNldEhEQ1BTdGF0dXMoc3RhdHVz
KSA9PSBDRE1JbnN0YW5jZTo6U3VjY2VlZGVkKTsKK30KKworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2RmNmYxMTExZjcxMjA3NDY3Y2YzY2JiNzgwN2VlZDg5MWQ0YWVh
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisjaW5j
bHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ0RNSW5zdGFuY2U7CitzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Owor
CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciAgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBSZWY8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYpOworICAgIH5SZW1vdGVDRE1JbnN0YW5jZVByb3h5KCk7
CisKKyAgICBjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KKyAgICBXZWJDb3Jl
OjpDRE1JbnN0YW5jZSYgaW5zdGFuY2UoKSB7IHJldHVybiBtX2luc3RhbmNlOyB9CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBSZWY8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3Vy
YXRpb24+JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsIHsgfQor
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBN
ZXNzYWdlcworICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2ws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0UGVyc2lzdGVu
dFN0YXRlQWxsb3dlZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldFN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBjcmVhdGVTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYpPiYmKTsKKyAgICB2b2lkIHNldEhE
Q1BTdGF0dXMoV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+
IG1fZmFjdG9yeTsKKyAgICBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IG1faW5zdGFuY2U7Cisg
ICAgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0
aW9uOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRkMjE5NzQ2N2QwOTY1M2Y0MGQwN2ZlNzk1YzA2ZjlkMDU0NzY3MDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMg
LT4gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVTZXNz
aW9uKCkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCkg
U3luY2hyb25vdXMKKyAgICBJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgLT4gKGJvb2wgc3Vj
Y2VzcykgU3luY2hyb25vdXMKKyAgICBTZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChi
b29sIGFsbG93ZWQpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAgU2V0UGVyc2lz
dGVudFN0YXRlQWxsb3dlZChib29sIGFsbG93ZWQpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9u
b3VzCisgICAgU2V0U2VydmVyQ2VydGlmaWNhdGUoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIGNlcnRpZmljYXRlKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworICAgIFNldFN0
b3JhZ2VEaXJlY3RvcnkoU3RyaW5nIGRpcmVjdG9yeSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hy
b25vdXMKKyAgICBTZXRIRENQU3RhdHVzKFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVz
IHN0YXR1cykgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODUyMWQ2ODhlODBlMDFhYTg0
NWRkMDkwYjIzYzg4ZTExOGNmNzJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtMCww
ICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJlZjxXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0gc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShzZXNzaW9uKSwg
aWRlbnRpZmllcikpOworICAgIGF1dG8gY2xpZW50ID0gbWFrZVdlYWtQdHI8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50PihzZXNzaW9uUHJveHkuZ2V0KCkpOworICAgIHNlc3Npb25Q
cm94eS0+bV9zZXNzaW9uLT5zZXRDbGllbnQoV1RGTW92ZShjbGllbnQpKTsKKyAgICByZXR1cm4g
c2Vzc2lvblByb3h5OworfQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYg
ZmFjdG9yeSwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2ZhY3Rv
cnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQor
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKQoreworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7Cisg
ICAgaWYgKCFpbml0RGF0YS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1w
dHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5i
dWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlv
bildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vz
c1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZSht
ZXNzYWdlKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0g
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIGlmICghcmVz
cG9uc2UuYnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbih0cnVlLCB7IH0sIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX3Nlc3Npb24tPnVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCAqcmVzcG9uc2UuYnVm
ZmVyKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKGJvb2wgc2Vzc2lvbkNs
b3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5
U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0aW9uYWw8Q0RN
SW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb24oc2Vz
c2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJhdGlvblRpbWUp
LCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcg
b3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBtX3Nlc3Np
b24tPmxvYWRTZXNzaW9uKHR5cGUsIHNlc3Npb25JZCwgb3JpZ2luLCBbY29tcGxldGlvbiA9IFdU
Rk1vdmUoY29tcGxldGlvbildIChPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1
c1ZlY3Rvcj4mJiBrZXlTdGF0dXNlcywgT3B0aW9uYWw8ZG91YmxlPiYmIGV4cGlyYXRpb25UaW1l
LCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkLCBDRE1JbnN0YW5jZVNlc3Npb246
OlNlc3Npb25Mb2FkRmFpbHVyZSBmYWlsdXJlKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlv
bihXVEZNb3ZlKGtleVN0YXR1c2VzKSwgV1RGTW92ZShleHBpcmF0aW9uVGltZSksIFdURk1vdmUo
bWVzc2FnZSksIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCwgZmFp
bHVyZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJh
Y2smJiBjb21wbGV0aW9uKQoreworICAgIG1fc2Vzc2lvbi0+Y2xvc2VTZXNzaW9uKHNlc3Npb25J
ZCwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoKSBtdXRhYmxlIHsgY29tcGxl
dGlvbigpOyB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUs
IFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIG1fc2Vzc2lv
bi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdURk1v
dmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtl
eVN0YXR1c2VzLCBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNE
YXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUg
eworICAgICAgICBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGV4cGly
ZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKKyAgICAgICAgaWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEp
CisgICAgICAgICAgICBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UoV1RGTW92ZSgqZXhwaXJlZFNlc3Npb25zRGF0YSkpOworICAgICAg
ICBjb21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyZWRTZXNzaW9u
RGF0YVJlZmVyZW5jZSksIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRl
ZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnN0
b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBtX3Nl
c3Npb24tPnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShzZXNzaW9uSWQpOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJiBrZXlTdGF0dXNlcykKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAgICBtX2ZhY3Rv
cnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtl
eVN0YXR1c2VzKSksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSkKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAgICBtX2ZhY3Rv
cnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBlLCBXVEZNb3ZlKG1l
c3NhZ2UpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAg
ICBpZiAobV9mYWN0b3J5KQorICAgICAgICBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpTZXNzaW9uSWRDaGFuZ2VkKHNlc3Npb25JZCksIG1faWRlbnRpZmllcik7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1ODQ2NDA4
M2RjYWMzZDdhZDVkNTRhZWIxY2ZkMGNiMjMwYmQ1MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
aApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3Mg
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IGZpbmFsIDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgUmVm
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHko
KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5Owor
ICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmLCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKKworICAgIC8vIFR5cGVzCisgICAgdXNpbmcgTGljZW5zZVR5cGUgPSBXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlOworICAgIHVzaW5nIEtleVN0YXR1
c1ZlY3RvciA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yOwor
ICAgIHVzaW5nIE1lc3NhZ2UgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U7
CisgICAgdXNpbmcgU2Vzc2lvbkxvYWRGYWlsdXJlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU7CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wsIGJvb2wpPjsKKyAgICB1c2luZyBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIE9wdGlvbmFsPEtleVN0
YXR1c1ZlY3Rvcj4mJiwgT3B0aW9uYWw8ZG91YmxlPiYmLCBPcHRpb25hbDxNZXNzYWdlPiYmLCBi
b29sKT47CisgICAgdXNpbmcgTG9hZFNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+JiYsIE9w
dGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wsIFNlc3Npb25Mb2FkRmFpbHVyZSk+OworICAgIHVzaW5n
IENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKKyAgICB1
c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChL
ZXlTdGF0dXNWZWN0b3ImJiwgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
PiYmLCBib29sKT47CisgICAgdXNpbmcgU3RvcmVSZWNvcmRDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT47CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgcmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpOworICAgIHZvaWQg
dXBkYXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlJiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKTsK
KyAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJp
bmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgY2xvc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKTsKKyAgICB2
b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKTsKKyAgICB2b2lkIHN0b3JlUmVjb3JkT2ZL
ZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKKyAgICAvLyBDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQKKyAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYm
KSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2Vz
c2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjMzZWU5YzMxNWNmMjg5ZjI3
ZmFmNzFhMmNkYjNiZDQ5ZmIxMTZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eSBOb3RSZWZDb3VudGVkIHsKKworICAgIFJlcXVlc3RMaWNlbnNlKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZyBpbml0
RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpbml0RGF0YSkgLT4gKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBTdHJpbmcgc2Vzc2lvbklkLCBi
b29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wgc3VjY2VlZGVkKSBBc3luYworICAgIFVw
ZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgcmVzcG9u
c2UpIC0+IChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91Ymxl
PiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpNZXNzYWdlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBMb2FkU2Vzc2lv
bihXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIFN0cmluZyBz
ZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4pIC0+IChPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4g
Y2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQsIGVudW06dWludDhfdCBXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBsb2FkRmFpbHVyZSkgQXN5bmMK
KyAgICBDbG9zZVNlc3Npb24oU3RyaW5nIHNlc3Npb25JZCkgLT4gKCkgQXN5bmMKKyAgICBSZW1v
dmVTZXNzaW9uRGF0YShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246OkxpY2Vuc2VUeXBlIHR5cGUpIC0+IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBTdG9yZVJlY29y
ZE9mS2V5VXNhZ2UoU3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NGQ4MGJhYTMzNzAwYWIxMjkzZWY2Mjc2ZjBiMjY0Mzc1OTA3ZTEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApAQCAt
MCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE1Qcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETVByaXZhdGUu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IFJlbW90ZUNETVByb3h5OjpjcmVhdGUoV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OkNETVByaXZhdGU+JiYgcHJpdikKK3sKKyAgICBpZiAoIXByaXYpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gbWFrZVVuaXF1ZVJlZldp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbiYmPih7CisgICAgICAgIHByaXYtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSwK
KyAgICAgICAgcHJpdi0+c3VwcG9ydGVkUm9idXN0bmVzc2VzKCksCisgICAgICAgIHByaXYtPnN1
cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCksCisgICAgICAgIHByaXYtPnN1cHBvcnRzU2Vzc2lv
bnMoKQorICAgIH0pOworICAgIC8vIFVzZSBuZXcoKSB0byBhY2Nlc3MgQ0RNUHJpdmF0ZSdzIHBy
aXZhdGUgY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Q
cm94eT4obmV3IFJlbW90ZUNETVByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUocHJpdiks
IFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNE
TVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW5p
cXVlX3B0cjxDRE1Qcml2YXRlPiYmIHByaXYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0
aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkK
KyAgICAsIG1fcHJpdmF0ZShXVEZNb3ZlKHByaXYpKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK1JlbW90ZUNETVByb3h5Ojp+UmVtb3RlQ0RN
UHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzQ29uZmln
dXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxl
dGlvbihtX3ByaXZhdGUtPnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSk7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmlj
dGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c3VwcG9y
dHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiB0eXBlLCBjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPnN1cHBvcnRz
U2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbih0eXBlLCBjb25maWd1cmF0aW9uKSk7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgZGF0YSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGlmICghZGF0YS5idWZmZXIo
KSkgeworICAgICAgICBjb21wbGV0aW9uKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCAqZGF0YS5i
dWZmZXIoKSkpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQ0RNUmVxdWlyZW1lbnQpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlv
bihtX3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25maWd1cmF0
aW9uLCByZXN0cmljdGlvbnMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6cGVyc2lzdGVu
dFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQ0RNUmVxdWlyZW1lbnQpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxl
dGlvbihtX3ByaXZhdGUtPnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbmZpZ3VyYXRpb24s
IHJlc3RyaWN0aW9ucykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25m
aWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZUluc3RhbmNlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLCBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHBy
aXZhdGVJbnN0YW5jZSA9IG1fcHJpdmF0ZS0+Y3JlYXRlSW5zdGFuY2UoKTsKKyAgICBpZiAoIXBy
aXZhdGVJbnN0YW5jZSB8fCAhbV9mYWN0b3J5KSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gaW5zdGFuY2UgPSBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5OjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwgcHJp
dmF0ZUluc3RhbmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGluc3RhbmNlLT5jb25maWd1cmF0aW9u
KCk7CisgICAgbV9mYWN0b3J5LT5hZGRJbnN0YW5jZShpZGVudGlmaWVyLCBXVEZNb3ZlKGluc3Rh
bmNlKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRpYWxpemUoKQoreworICAg
IG1fcHJpdmF0ZS0+bG9hZEFuZEluaXRpYWxpemUoKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94
eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
IHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5z
YW5pdGl6ZVJlc3BvbnNlKCpyZXNwb25zZS5idWZmZXIoKSkpOworfQorCit2b2lkIFJlbW90ZUNE
TVByb3h5OjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgY29tcGxldGlvbihtX3ByaXZhdGUtPnNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCkpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGQwYWI5MDU1NDg2ZTdjOTQ2Y2I1YzMzMjk4NzQy
OWYxZTRhZGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDRE1Q
cml2YXRlOworY2xhc3MgU2hhcmVkQnVmZmVyOworZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6
IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIDogdWludDhfdDsKK3N0cnVjdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworc3RydWN0IENETVJlc3RyaWN0aW9uczsKK30KKwor
bmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTsKK3N0cnVj
dCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmln
dXJhdGlvbjsKKworY2xhc3MgUmVtb3RlQ0RNUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVBy
b3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYsIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmKTsKKyAgICB+UmVtb3RlQ0RNUHJveHkoKTsKKwor
ICAgIGNvbnN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJlbW90ZUNETVByb3h5KFdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJp
dmF0ZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+JiYpOworCisgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgc3VwcG9y
dHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzQ29u
ZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29y
ZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1S
ZXN0cmljdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNETVJlcXVpcmVt
ZW50KT4mJik7CisgICAgdm9pZCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJp
Y3Rpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCk+
JiYpOworICAgIHZvaWQgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFu
ZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjcmVhdGVJbnN0YW5jZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgUmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmKTsKKyAgICB2b2lkIGxvYWRBbmRJbml0aWFs
aXplKCk7CisgICAgdm9pZCBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYpPiYmKTsKKyAgICB2b2lkIHNhbml0aXplU2Vzc2lvbklk
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4mJik+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1f
ZmFjdG9yeTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4gbV9wcml2
YXRlOworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRp
b247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NGU1
MzUzMWFlNzQ0ZDA0NTE3MTk0MTNiNDNiZmFjMTU2ODQwYmUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETVByb3h5IE5v
dFJlZkNvdW50ZWQgeworICAgIFN1cHBvcnRzQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSAtPiAoYm9vbCByZXN1bHQp
IFN5bmNocm9ub3VzCisgICAgU3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhz
dHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBz
dHJ1Y3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucykgLT4gKGJvb2wgcmVz
dWx0KSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUgdHlwZSwgc3RydWN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgLT4gKGJvb2wgcmVz
dWx0KSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzSW5pdERhdGEoQXRvbVN0cmluZyB0eXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5j
aHJvbm91cworICAgIERpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChzdHJ1Y3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBzdHJ1Y3QgV2Vi
Q29yZTo6Q0RNUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucykgLT4gKGVudW06dWludDhfdCBXZWJD
b3JlOjpDRE1SZXF1aXJlbWVudCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgUGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQoc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbiwgc3RydWN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyByZXN0cmljdGlv
bnMpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcmVzdWx0KSBTeW5j
aHJvbm91cworICAgIERpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRD
bGVhcmFibGUoc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIENyZWF0ZUluc3RhbmNl
KCkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hy
b25vdXMKKyAgICBMb2FkQW5kSW5pdGlhbGl6ZSgpCisgICAgU2FuaXRpemVSZXNwb25zZShJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgcmVzcG9uc2UpIC0+IChJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIFNhbml0aXplU2Vzc2lvbklk
KFN0cmluZyBzZXNzaW9uSWQpIC0+IChPcHRpb25hbDxTdHJpbmc+IHJlc3VsdCkgU3luY2hyb25v
dXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggNWVmZTY2MjVkNmYyZjkwYWRl
ZDc3ZDhjNTU5N2RmM2M3ODhmMzFkYi4uNDgxNDU4NDc1MmExM2IwY2U4NTAzNDg5NWRmOTE0MTAw
YzVhYTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKQEAg
LTQ3LDYgKzQ4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ5MCwx
NyArNDk1LDE2IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLWJvb2wgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQo
VWludDhBcnJheSopCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5
TmVlZGVkKFVpbnQ4QXJyYXkqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkKGNvbnN0IFN0cmluZyYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJikKK3ZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJl
ZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGluaXRE
YXRhKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpJbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihpbml0RGF0YS0+ZGF0YSgpKSwgaW5pdERhdGEtPmJ5dGVMZW5n
dGgoKSkpLCBtX2lkKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcldhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKQEAgLTY4Miw2ICs2ODYsMzQgQEAgdm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjprZXlBZGRlZCgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNl
QXR0YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAg
ICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCkuZ2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAg
ICAgIG1fcGxheWVyLT5jZG1JbnN0YW5jZUF0dGFjaGVkKGluc3RhbmNlUHJveHktPmluc3RhbmNl
KCkpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlRGV0YWNo
ZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAo
YXV0byogaW5zdGFuY2VQcm94eSA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCkuY2RtRmFjdG9yeVByb3h5KCkuZ2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1f
cGxheWVyLT5jZG1JbnN0YW5jZURldGFjaGVkKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOwor
fQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5z
dGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBp
ZiAoYXV0byogaW5zdGFuY2VQcm94eSA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkuY2RtRmFjdG9yeVByb3h5KCkuZ2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAg
IG1fcGxheWVyLT5hdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKGluc3RhbmNlUHJveHktPmlu
c3RhbmNlKCkpOworfQorI2VuZGlmCisKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAg
IG1fcGxheWVyLT5zZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3VsZCk7Cit9Cisj
ZW5kaWYKKwogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpiZWdpblNpbXVsYXRlZEhEQ1BF
cnJvcigpCiB7CiAgICAgbV9wbGF5ZXItPmJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaAppbmRleCAxNmJiMmRkZmEyMTQ3NDcwZTg2MDBhYjcxMzk2YTU5Y2RmNTQ0OWZhLi4y
MDg5NmI5NTU1NDgxMGI1Y2NmZGMyNWNhZDU2YTRkMGFhODY5N2ZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgK
QEAgLTQ2LDYgKzQ2LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNl
UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7
CiB9CkBAIC0xMjYsNiArMTMxLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGtleUFkZGVkKCk7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBjZG1JbnN0YW5j
ZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGNkbUlu
c3RhbmNlRGV0YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYpOworICAgIHZvaWQg
YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIm
Jik7CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5l
ZWRlZChib29sKTsKKyNlbmRpZgorCiAgICAgdm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigp
OwogICAgIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCk7CiAKQEAgLTE2OCw3ICsxODMsNyBA
QCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJh
eSopIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZp
bmFsOwogICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdCBmaW5hbDsKICNlbmRpZgogCkBAIC0yNTIsNiArMjY3LDEwIEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6TGF5b3V0UmVjdCBtX3ZpZGVvQ29udGVudEJveFJlY3Q7CiAgICAgZmxvYXQgbV92
aWRlb0NvbnRlbnRTY2FsZSB7IDEuMCB9OwogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgYm9vbCBtX3Nob3VsZENvbnRp
bnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxzZSB9OworI2VuZGlmCisKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIG1fbG9nZ2VyOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGNhNjYzMTRkZmJlNmQzMWJlMDk5NTJjNWYyODJm
MTA2MThmZWJlYmEuLjI5ZDI4NjljMTY0MmQ4ZmMyNjZlODkxY2I2MThlNDgyNGIwYjIyOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC03Myw5ICs3MywxNiBAQCBtZXNz
YWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewogI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICMgU2V0Q0RNU2Vzc2lvbgogICAgIEtleUFk
ZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0YWNoZWQKLSAgICAjIENkbUluc3RhbmNlRGV0YWNo
ZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UKKyNlbmRpZgorCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBDZG1JbnN0YW5jZUF0dGFjaGVkKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisgICAgQ2RtSW5zdGFuY2VEZXRh
Y2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5jZUlkKQorICAg
IEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgU2V0U2hvdWxkQ29udGlu
dWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKICNlbmRpZgogCiAgICAgQmVnaW5TaW11bGF0
ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmlu
ZGV4IDY3MmJlYzQ4ZWE3OWM2ODJjMTI0NWU1MjZmMDQ4OGM2Nzk5NjgwYjcuLjUzYTgwNzgxN2Iy
YTZiMWRkZjUxMzQ1ODZlZjJlNzEwMmY2ODI0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5jcHAKQEAgLTE0OSwxMyArMTQ5LDEzIEBAIHZvaWQgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgYm9vCiAgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWRE
YXRhTGVuZ3RoKQogewogICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
QVNTRVJUKCFtX3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICBzZW5kVG9DbGllbnQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9LCBlbmNvZGVkRGF0
YUxlbmd0aCB9KTsKKyAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0pOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oCmluZGV4IGQzM2NiZmYxMDg5Y2MxMDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQuLjUw
ODAwZjM1MDIyMzYyZjk2Y2EyMWI1ZTdlYmQwN2Q4ZDQyYTJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29k
ZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCBhNzQ5YWFiODcwMDU0Y2ViNjkwZTVmMTRmNDA3NTYz
ZmZjZDBmOWI4Li44OGY0ZjJmYTY0MjYzMzQ5YjdhZDIyZDA2ZjQzYTI3ZjcyMzM1MWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC05NiwxMiArOTYs
NiBAQCBzdHJ1Y3QgQ29kaW5nVHlwZSB7CiAgICAgdHlwZWRlZiBzdGQ6OnJlbW92ZV9jb25zdF90
PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsKIAotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBDb2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7Ci0gICAgdHlw
ZWRlZiBEYXRhUmVmZXJlbmNlIFR5cGU7Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4K
IHN0cnVjdCBDb2RpbmdUeXBlPHN0ZDo6dHVwbGU8VHMuLi4+PiB7CiAgICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPHR5cGVuYW1lIENvZGluZ1R5cGU8VHM+OjpUeXBlLi4uPiBUeXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
CmluZGV4IGRhZDQ2NjA0NjMyZTkyNjlmMTkxZDE1YzgwZGQyMTFlNTQ4NGU3YTMuLmJmYjMzOTU3
Njk2ZjJlNzJhMjM0ODIzNDIyNTJiNzJiZDc5NDI4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKQEAgLTI1LDQw
ICsyNSw1MSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCiBj
bGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9i
dWZmZXIoV1RGTW92ZShidWZmZXIpKQorICAgIHsKKyAgICB9CisgICAgU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgeworICAgIH0KICAgICBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAg
ICAgICA6IG1fZGF0YShidWZmZXIpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKHN0ZDo6
bWFrZV9wYWlyKGRhdGEsIHNpemUpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQorICAgIHsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChi
dWZmZXIpOworICAgIH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZm
ZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorCisgICAgY29u
c3QgY2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEo
KSA6IG51bGxwdHI7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKICAgICB2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgc3dpdGNoT24o
bV9kYXRhLAotICAgICAgICAgICAgW2VuY29kZXIgPSAmZW5jb2Rlcl0gKGNvbnN0IFJlZjxjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIG11dGFibGUgewotICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICAgICAgICAgICAg
ICBlbmNvZGVyLT5yZXNlcnZlKGJ1ZmZlclNpemUgKyBzaXplb2YodWludDY0X3QpKTsKLSAgICAg
ICAgICAgICAgICAqZW5jb2RlciA8PCBidWZmZXJTaXplOwotICAgICAgICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCks
IDEpOwotICAgICAgICAgICAgfSwgW2VuY29kZXIgPSAmZW5jb2Rlcl0gKGNvbnN0IHN0ZDo6cGFp
cjxjb25zdCB1aW50OF90Kiwgc2l6ZV90PiYgcGFpcikgbXV0YWJsZSB7Ci0gICAgICAgICAgICAg
ICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgICAgIGVu
Y29kZXItPnJlc2VydmUoYnVmZmVyU2l6ZSArIHNpemVvZih1aW50NjRfdCkpOwotICAgICAgICAg
ICAgICAgICplbmNvZGVyIDw8IGJ1ZmZlclNpemU7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLCAxKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgKTsKKyAgICAgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKKyAgICB9
CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4gYnVmZmVyOworICAgICAgICBkZWNvZGVyID4+IGJ1ZmZlcjsKKyAg
ICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4geyBXVEZNb3ZlKCpidWZmZXIpIH07CiAgICAgfQogCiBwcml2YXRlOgotICAg
IFZhcmlhbnQ8c3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Q+LCBSZWY8Y29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggMjYwNDkwZmI3YjU2YTg4Y2ZmMGQ5Yjg5YzFhNzE2OGFlZDBkMTg1Yy4u
NzE2NGMzNzM0MzEwMWZlZjBjM2Q1ZjBkYjY3YzUyY2Q2MThiNWU5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMjcsNiArMjI3LDkgQEAgZGVmIHR5cGVz
X3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6TURO
U1JlZ2lzdGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpNZWRpYVJlY29yZGVySWRlbnRp
ZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXInLAorICAgICAgICAn
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSVENEZWNvZGVy
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDhj
OWZhMjFhZjM4YTcxNjJjNmMyMDllOTM5NDY4OTA2YTI1YzNjYTMuLmQyZGVlOWZiNmQxMDA4YjRl
NTgyNTkyMWIyMjFmMjlhYTZlOTM0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTM0LDcgKzEzNCw4IEBAIHN0YXRpYyB2b2lkIGVu
Y29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAotc3RhdGljIGJvb2wgZGVjb2RlU2hh
cmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
Cit0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVuYW1lLi4uPiBjbGFzcyBSPgorc3RhdGljIGJvb2wg
ZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFI8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogewogICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSAwOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYnVmZmVyU2l6ZSkpCkBAIC0zMjAzLDQgKzMyMDQsNzMgQEAgT3B0aW9uYWw8U2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRQbGF0Zm8KIH0KICNlbmRpZgogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIo
ZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworT3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2UmIG1lc3NhZ2UpCit7CisgICAgZW5jb2RlciA8
PCBtZXNzYWdlLmZpcnN0OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEg
PSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CisgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsK
K30KKworT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiAgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1l
c3NhZ2VUeXBlIHR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBtYWtlT3B0aW9uYWw8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPih7IHR5cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
IH0pOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImIGtleVN0YXR1c2VzKQorewor
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGtleVN0YXR1c2VzLnNpemUoKSk7
CisgICAgZm9yIChhdXRvJiBrZXlTdGF0dXMgOiBrZXlTdGF0dXNlcykgeworICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXkgPSBrZXlTdGF0dXMuZmlyc3QuY29weVJlZigpOworICAgICAg
ICBlbmNvZGVyIDw8IGtleSA8PCBrZXlTdGF0dXMuc2Vjb25kOworICAgIH0KK30KKworT3B0aW9u
YWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICB1aW50NjRfdCBkYXRhU2l6ZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGFTaXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0
YXR1c2VzOworICAgIGtleVN0YXR1c2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGF0YVNpemUp
OworCisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyArK2kpIHsKKyAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGtleSkgfHwgIWtleSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXMgc3RhdHVzOwor
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXR1cykpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIGtleVN0YXR1c2VzLnVuY2hlY2tlZEFwcGVuZCh7IGtl
eS5yZWxlYXNlTm9uTnVsbCgpLCBzdGF0dXMgfSk7CisgICAgfQorICAgIHJldHVybiBrZXlTdGF0
dXNlczsKK30KKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCiB9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
aW5kZXggZTM4MTRlMjFmODMzNmFhZjJmNDQ0MzIzMmUzNDRlMDA3NGRhZTJhMS4uODEwMGM5MjQz
ZmFkYjg3NjFjNmUzMTdlYTNlZjM0YjA4YTFmMmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTU1LDYgKzU1LDExIEBACiAjaW5jbHVkZSA8
V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0FkZGl0aW9ucy5oPgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5z
dGFuY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorI2VuZGlm
CisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRS
aWdodDsKQEAgLTEwMCw2ICsxMDUsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBj
bGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENv
bnN0cmFpbnRzOwpAQCAtODI5LDYgKzgzNSwyMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsKICNl
bmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBPcHRpb25hbDxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1l
c3NhZ2U+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gZGVjb2RlKERlY29kZXImKTsK
K307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
OTY1LDQgKzk4OCwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdURkxvZ0xldmVs
PiB7CiAgICAgPjsKIH07CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordGVtcGxhdGUg
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9u
TG9hZEZhaWx1cmU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwKKyAgICBXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSwKKyAgICBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSwKKyAgICBXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0
YSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6
TWlzbWF0Y2hlZFNlc3Npb25UeXBlLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
U2Vzc2lvbkxvYWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkLAorICAgIFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcgorICAgID47Cit9OworCit0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1
cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkNETUlu
c3RhbmNlOjpIRENQU3RhdHVzLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVz
OjpVbmtub3duLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpWYWxpZCwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0UmVzdHJpY3RlZCwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0RG93bnNjYWxlZAor
ICAgID47Cit9OworCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCBhNWQwYmUxNDI3MWY2MzA2ZjgzNmI4ZmRiZDdkNDIwZjI5NTI0NmVhLi5lZjExYjA4MTAyNjc4
ODZhNjZhNjc5MzEwNGIwMTM0YjBhMGRkMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTMxLDYgKzMxLDEw
IEBAIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2UuY3BwCkBAIC0zOSw2ICs0Myw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFj
a1Byb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwCiAK
KwogTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuY3BwCkBAIC01MzQsNiArNTM5LDEwIEBAIFdlYlByb2Nlc3Mv
TWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9B
dWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAK
K1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCitXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TUlNRVR5cGVDYWNoZS5jcHAgQG5vLXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDc4OTdlMjhlM2M4Y2EyMjc0NTFmZDU3NDFm
N2RkMTU1Y2M3ZGUxNWYuLjM0M2JhMWIxMDM3MzI0MjViNjAyNzdlOGY1ODEwZjE3ZDgxYWFiNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQYWdlQ2xpZW50LmgiCiAjaW1wb3J0
ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKKyNp
bXBvcnQgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNz
YWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0
YVN0b3JlLmgiCkBAIC0xODMsMTMgKzE4NCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJh
Z0NhcmV0UmVjdChjb25zdCBJbnRSZWN0JiBkcmFnQ2FyZXRSZWN0KQogCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJB
dHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgY29uc3QgU3RyaW5n
JiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJl
bmNlKQordm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxB
UEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxl
TmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNl
KQogewogICAgIGlmIChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRh
dGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwotICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBhZG9w
dE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKV0pOwor
ICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3Jh
cHBlckluc3RhbmNlKCkgaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGFSZWZlcmVuY2Uu
YnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCldKTsKICAgICBbZmlsZVdyYXBw
ZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6cHJlZmVycmVkRmlsZU5hbWVdOwogICAgIGF0dGFjaG1l
bnQtPnNldEZpbGVXcmFwcGVyKGZpbGVXcmFwcGVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGY5NzFmOTZmNGRmODNlYmY1MDViMmRkYzRh
ZTI3ZTZjYTdkNWNjNzUuLjBmYmYwMzUyMmU1ZWY5NWFkMjdmYzU1MTlkOGY2ZjBmZTE5MTUyNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjkwNiwxMyAr
NjkwNiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVm
ZXJlbmNlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNh
bGxiYWNrKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxi
YWNrcy50YWtlPERhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVy
ZW5jZS5zaXplKCkpLnB0cigpKTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJl
dHVyblZhbHVlKEFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJvb2xDYWxsYmFjayhib29sIHJlc3VsdCwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQpAQCAtOTA4MSw3ICs5MDgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENh
bGxiYWMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmZpbmlzaGVkTG9hZGluZ0lj
b24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihDYWxsYmFja0lEIGNhbGxi
YWNrSUQsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAg
ICBkYXRhQ2FsbGJhY2soZGF0YSwgY2FsbGJhY2tJRCk7CiB9CkBAIC05MzEyLDcgKzkzMTIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJ
OjpBdHRhY2htZW50JiBhdHRhY2htZW50LAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2ht
ZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFj
aG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSwgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21E
YXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJG
cm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcywg
SWRlbnRpZmllclRvQXR0YWNobWVudE1hcDo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CiAKQEAg
LTk0MTksNyArOTQxOSw3IEBAIFdlYlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMgV2ViUGFnZVByb3h5Ojp3aWxsVXBkYXRlQXR0YWNobWVuCiAKICNpZiAhUExBVEZP
Uk0oQ09DT0EpCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVu
dChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKQordm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50
KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYjMxNTQ1NDhhMDhiNTg4ZGZiMzQ2MjYxYmM3ZGUzZGJiNzU0ZjZjZi4u
ZjMzMmM1ZDIwZGJhOGYxZGFmMjczYjBjNmYxZTVjOGIyYmZkZTc3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE5Myw2ICsxOTMsNyBAQCBlbnVtIGNsYXNzIElu
c3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90OwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNv
ZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTAxLDcgKzE1MDIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAogICAgIHZvaWQg
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdlYktpdDo6
Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJh
Y2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlJik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBz
ZXRXaW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKQEAgLTIwMDUsNyArMjAw
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVl
VHlwZSwgYm9vbCBoYW5kbGVkKTsKIAogICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQp
OwotICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxi
YWNrSUQpOworICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgYm9vbENhbGxi
YWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNv
bnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwpAQCAtMjE4MywxMiArMjE4NCwxMiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3RvcEFsbFVSTFNjaGVtZVRhc2tzKFdlYlByb2Nlc3NQcm94eSogPSBudWxs
cHRyKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCByZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
RnJvbURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbUZpbGVQ
YXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVk
RGF0YShWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsKICAgICB2
b2lkIGNsb25lQXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5nJiBmcm9tSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiB0b0lkZW50aWZpZXIpOwogCi0gICAgdm9pZCBwbGF0Zm9ybVJlZ2lzdGVyQXR0
YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZp
bGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHBsYXRmb3JtUmVn
aXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYgcHJl
ZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwog
ICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4m
JiwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCBwbGF0Zm9ybUNsb25lQXR0YWNo
bWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGZyb21BdHRhY2htZW50LCBSZWY8QVBJOjpBdHRh
Y2htZW50PiYmIHRvQXR0YWNobWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMzlkYzI1YmJkOGY4YjE1ZDY2ODE4ZjZk
NmQ4MmEzYjU2OTk5NDkyLi5hNWU2Zjk2NTExZTUwYTgxNDNkYjZmMmFkM2UyNjRlOTJiOWFhYWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC01MzAsNyArNTMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBE
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCiAgICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihz
dHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCi0gICAgRmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpOworICAgIEZpbmlzaGVkTG9hZGluZ0ljb24oV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRIYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyY2NmYjY1YTg0YTI3Y2ZiZTc2NWJmNzViOTE2YzY1MzEyM2Y2MzI0Li5kZDI4ZWJl
MDk0MTE1ZjU2ZGViZWU4MTFkYThhMjM1NDFmNDUxNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OTUsNiArMTY5NSw3IEBACiAJ
CUNEMTlEMkVBMjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTlEMkU4
MjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDI4NjVFRTIyNTU1
NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcg
LyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi87IH07CiAJCUNEMjg2NUVGMjI1NTU2MjAw
MDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyog
UHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovOyB9OworCQlDRDQ2NjE4MzI0MDEwQTY3MDA0
N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDY2MTgxMjQwMTA1
NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwogCQlDRDQ5MUIwODFFNzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NDkxQjA2MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovOyB9
OwogCQlDRDQ5MUIwRDFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q0OTFCMEIxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2
IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjBDMUU3MzJFNEQwMDAwOTA2NiAvKiBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CkBAIC0xNzE3LDYgKzE3MTgs
MjAgQEAKIAkJQ0RBMjlBMkIxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJQ0RBOTNEQjAyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1
bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBG
dWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5
IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUYyMkY4QkNGNDAwNDkw
QTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovOyB9Owor
CQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjIyM0ZC
NThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAqLzsgfTsKKwkJQ0RBQzIw
QzMyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjYyM0ZDMkY3
MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovOyB9OworCQlDREFD
MjBDNDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEI3MjNGQzJGNzMwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovOyB9OworCQlDREFDMjBDNTIzRkMyRjc1MDAyMURF
RTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKKwkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBQzIwQkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETS5oICovOyB9OworCQlDREFDMjBD
OTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkMy
M0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAq
LzsgfTsKKwkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
QzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovOyB9
OworCQlDREFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzAyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLzsgfTsKKwkJQ0RBQzIwQ0UyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzEyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovOyB9OworCQlDREFDMjBD
RjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUz
IC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFE
RUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBGMjIzRkMzODNBMDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
KwkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRUMyM0ZDMzgzODAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKKwkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCUNEQzI4MzFEMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxz
Y3JlZW5TdGFja1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcu
aCAqLzsgfTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLmggKi87IH07CiAJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTEx
Q0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi87IH07CkBAIC00OTQ1LDYgKzQ5NjAs
MTAgQEAKIAkJQ0QxOUQyRTkyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hl
dXJpc3RpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0
aWMuY3BwOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGlj
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUMyMjU1NTYyMDAwNjA2
QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNz
VGFza1N0YXRlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1
RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgwMjQwMTA1
NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENDkxQjA1MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkxQjA2MUU3MEQwNUYw
MDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDQ5MUIwQTFFNzMyRDEyMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTg2LDYgKzUwMDUsNDMgQEAK
IAkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQy
L1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCUNEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZ1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1
bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNl
Y2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxs
c2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnlQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3QzIzRkIxRUY5MDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQUMyMEFEMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUUy
M0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIx
MjNGQjU4RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3Rh
bmNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjMyM0ZCNThG
MjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEI2MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI3MjNGQzJG
NzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Db25maWd1cmF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBCQjIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEJFMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkYyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUQyM0ZDMzgzODAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRTIzRkMzODM5
MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRjIzRkMzODM5
MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMDIzRkMzODM5MDAyMURF
RTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjEyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBs
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYyMjNGQzM4M0EwMDIx
REVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjMyM0ZD
MzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAv
KiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0
YWNrVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaDsgcGF0aCA9
IGlvcy9mdWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREMyODMxQzIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3Rh
Y2tWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1t
OyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDREMzODJGNzE3MjExNTA2MDA4QTJGQzMgLyogQ0ZOZXR3
b3JrLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ0ZOZXR3b3JrLmZyYW1ld29yazsgcGF0
aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcms7IHNvdXJj
ZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC01MjY2LDYgKzUzMjIsMjAgQEAKIAkJCQkwNzky
MzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJ
CQkJMDdCMUQwNEIyM0QzOEZDRTAwMzk5QTZFIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbiAqLywKIAkJCQkwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4RTIgLyogTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJGMjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE0uY3BwICovLAorCQkJCUNEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAv
KiBSZW1vdGVDRE0uaCAqLywKKwkJCQlDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbi5oICovLAorCQkJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5LmNwcCAqLywKKwkJCQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNRmFjdG9yeS5oICovLAorCQkJCUNEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkIyM0ZDMkY3NDAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlLmNwcCAqLywKKwkJCQlDREFDMjBCNzIzRkMyRjczMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2UuaCAqLywKKwkJCQlDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjYyM0ZD
MkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovLAorCQkJCUNE
QUMyMEJFMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICov
LAorCQkJCUNEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uaCAqLywKKwkJCQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8sCiAJCQkJMDdCOTNGRjUy
M0FGMENCODAwMzZGOEVBIC8qIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oICovLAog
CQkJCTA3OTIzMTMwMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
Y3BwICovLAogCQkJCTA3OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuaCAqLywKQEAgLTUyOTEsNiArNTM2MSwxOCBAQAogCQkJCTFEMEVDRUE5MjNGQzg0
QkIwMEQxNzJGNiAvKiBjb2NvYSAqLywKIAkJCQkwNzFCQzU3RTIzQ0E1REIxMDA2ODBEN0MgLyog
UmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwNzFCQzU3RjIzQ0E1REIxMDA2ODBE
N0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmggKi8sCisJCQkJQ0RBQzIwNzkyM0ZCMUUyMTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwNzgyM0ZC
MUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5oICovLAorCQkJCUNEQUMyMDdD
MjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8s
CisJCQkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwICovLAorCQkJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmggKi8sCisJCQkJQ0RBQzIwQjEyM0ZCNThFMjAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCAqLywKKwkJCQlDREFDMjBBRTIz
RkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLywKKwkJ
CQlDREFDMjBBRDIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwODMyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90
ZUNETVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjA4MjIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3Rl
Q0RNUHJveHkuaCAqLywKKwkJCQlDREFDMjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RN
UHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcyNUVGQUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLywKIAkJCQkwNzI1RUZBQzIzOUFFMzg1
MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQkwNzI1
RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4gKi8sCkBAIC05NjI1LDYgKzk3MDcsMjEgQEAKIAkJCQkxQTA0M0I1QzEyNEQ1RTlE
MDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkxQThFRkE2
RTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAog
CQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggKi8s
CisJCQkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRjMyM0ZDMzgzQTAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRUUyM0ZDMzgzOTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJ
CUNEQUMyMEY1MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlD
RDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLywKKwkJCQlDRDQ2NjE4MDI0MDEwNTY0MDA0
N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8sCisJ
CQkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMy
MEYxMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3Nh
Z2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVD
RE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFE
RUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMDIzRkMzODM5
MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkwRkYy
NEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTA3OTIzMTQz
MjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLApAQCAtMTA1MjQsNiArMTA2MjEsMTYgQEAKIAkJCQk4MzA0OEFFNjFBQ0E0NURD
MDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RkQzMTgyMjJCMzUxNUUwMDhEMEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlv
blNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM3MjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE0uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBD
RDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBQzIwQ0YyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUNEQUMyMEM0MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIw
QzMyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0RBQzIwQjQyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM5
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRG
NUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKQEAgLTEyMjIwLDYgKzEyMzI3LDExIEBACiAJCQkJQzE1Q0JCMzcy
M0YzN0VDQjAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTJENTRDMzFCMjEyRjREQTYwMDQ5QzE3NCAvKiBQcm9jZXNzTGF1bmNoZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3Rh
dGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q0NjYxODMyNDAxMEE2
NzAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJE
MTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4
RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCAzZjViNjE4MWUwNmUwYTg0Njg4YmRhOTE2ZjEwZDg3
YTYxZDE0YmU3Li45MmZmNzdlYmM3NzMzYTUxZmIxN2M3YTc2M2M3Njg3NmM2MmFlY2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNTdHJpbmdSZWZQcml2YXRlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
T3BhcXVlSlNTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOGRmZjUwZjMwODhlZDQ1YzU5MGVjODFl
MmMwOWExMzhiYTdhNTM1Zi4uYzYwMjRjYWQ5YTk1NzQyYmY3ZDYyYjE5MjY5YTdjYjY2Y2YwNzIz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJMaWJXZWJSVENDb2Rl
Y3MuaCIKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpA
QCAtNDQsNiArNDYsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMDEsNiArMTA3
LDEyIEBAIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpECiAgICAgICAgIHJldHVybjsKICAgICB9CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c3VwcGxlbWVudDxSZW1vdGVDRE1GYWN0b3J5PigpLT5kaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5k
ZXggNmY2M2IyMzBmNjI3ZDEyY2M2ZWMzZWY3ZGQ2Y2U2YWQxMjk3YWE2YS4uMzMwZDI2ZGFhMjA0
ZGNhNDE3Y2JiOTI4Zjg5YzY2ZDJlMWFhNDkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcApAQCAtNDksNiArNDksMTAgQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGV4dGVybiBXVEZMb2dDaGFubmVsIExvZ01lZGlh
OwpAQCAtMTE2LDE4ICsxMjAsMTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY28KICAgICBpZiAo
dXJsLmlzTG9jYWxGaWxlKCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhh
bmRsZTsKICAgICAgICAgYXV0byBmaWxlU3lzdGVtUGF0aCA9IHVybC5maWxlU3lzdGVtUGF0aCgp
OwotICAgICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBmYWxzZTsKIAorICAgICAgICBhdXRv
IGNyZWF0ZUV4dGVuc2lvbiA9IFsmXSB7CiAjaWYgSEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhU
RU5TSU9OX1RPX1BST0NFU1NfQllfQVVESVRfVE9LRU4pCi0gICAgICAgIGF1dG8gYXVkaXRUb2tl
biA9IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKTsKLSAgICAg
ICAgQVNTRVJUKGF1ZGl0VG9rZW4pOwotICAgICAgICBpZiAoYXVkaXRUb2tlbikKLSAgICAgICAg
ICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JS
ZWFkQnlBdWRpdFRva2VuKGZpbGVTeXN0ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCksIGhhbmRs
ZSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChhdXRvIGF1ZGl0VG9rZW4gPSBtX21h
bmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5hdWRpdFRva2VuKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9r
ZW4oZmlsZVN5c3RlbVBhdGgsIGF1ZGl0VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCi0gICAgICAgIGNyZWF0ZWRFeHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBoYW5kbGUpOworICAgICAgICAgICAgcmV0dXJu
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlU3lzdGVtUGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGhhbmRsZSk7CisgICAgICAgIH07CiAKLSAgICAgICAg
aWYgKCFjcmVhdGVkRXh0ZW5zaW9uKSB7CisgICAgICAgIGlmICghY3JlYXRlRXh0ZW5zaW9uKCkp
IHsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVW5hYmxlIHRvIGNyZWF0ZSBzYW5kYm94IGV4
dGVuc2lvbiBoYW5kbGUgZm9yIEdQVVByb2Nlc3MgdXJsLlxuIik7CiAgICAgICAgICAgICBtX2Nh
Y2hlZFN0YXRlLm5ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1h
dEVycm9yOwogICAgICAgICAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKQEAg
LTg5OSwxOSArOTAyLDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRl
ZCgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5j
ZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3Rl
Q0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNkbUluc3RhbmNlQXR0YWNoZWQoZG93bmNhc3Q8
UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5z
dGFuY2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNo
ZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
aWYgKGlzPFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZURldGFj
aGVkKGRvd25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwg
bV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNy
eXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4o
aW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6QXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShkb3duY2FzdDxSZW1v
dGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtOTE5
LDYgKzkyNSwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0Zvcktl
eUNoYW5nZWQoKQogICAgIG1fcGxheWVyLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwogfQogCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSYmIGluaXRE
YXRhKQoreworICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGlu
aXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKTsKKyAgICBtX3BsYXllci0+aW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhQnVmZmVy
KSk7Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkg
Y29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtOTI2LDYgKzkzOCwxMyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRp
bnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91bGQpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoc2hvdWxkKSwgbV9pZCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc1RleHRUcmFja1Jl
cHJlc2VudGF0aW9uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDEz
MmYzMGFiMjliNmU1MDlmMTEzOTQ5MjU4MGE2ZTM2NzFjYzc5MDkuLmZlMjkzMTgwZWRiOTVjMjNh
NzYzNDdmMTMwYTdjNDZjNGI4ZDA0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAt
MTMyLDYgKzEzMiw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAg
ICAgdm9pZCB3YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOworICAgIHZvaWQgaW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiwgSVBDOjpEYXRhUmVmZXJlbmNlJiYpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMzE3LDYgKzMx
OCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IGZpbmFsOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQo
Ym9vbCkgZmluYWw7CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29s
IHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0
aW9uKikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmlu
CmluZGV4IGU4ODk3YjZhMTBhMTBkNGI3MDA5Mjk4YzdhYTI3MjhiZmUxMTI5N2EuLjMzZTJhOThk
NDc5ODc5ZDIxNWI0ZDA0MWFmZTdhYjUwZTgzNjJkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC03NSw2ICs3NSw3IEBAIG1lc3NhZ2VzIC0+IE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBOb3RSZWZDb3VudGVkIHsKIAogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAgICAgV2FpdGluZ0ZvcktleUNoYW5nZWQoKQorICAgIEluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkKFN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5j
ZSBpbml0RGF0YSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NWI1ZGFhOGEyOWJjZDk4ZTYyNzA5MzE3NWM5ZjcwNjViOWE3MGExCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE0uY3BwCkBAIC0wLDAgKzEsMTc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DRE1SZXN0cmljdGlvbnMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+
IFJlbW90ZUNETTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBS
ZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPihuZXcgUmVt
b3RlQ0RNKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7Cit9CisKK1JlbW90ZUNETTo6UmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkp
CisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRz
Q29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBib29sIHN1cHBvcnRzIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Q
cm94eTo6U3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVt
b3RlQ0RNUHJveHk6OlN1cHBvcnRzQ29uZmlndXJhdGlvbjo6UmVwbHkoc3VwcG9ydHMpLCBtX2lk
ZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0czsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1
cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmlj
dGlvbnMpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGJvb2wgc3VwcG9ydHMgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNE
TVByb3h5OjpTdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbmZpZ3VyYXRp
b24sIHJlc3RyaWN0aW9ucyksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNDb25m
aWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9uczo6UmVwbHkoc3VwcG9ydHMpLCBtX2lkZW50aWZpZXIp
OworICAgIHJldHVybiBzdXBwb3J0czsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vz
c2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYgdHlwZSwgY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK3sKKyAg
ICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdXBw
b3J0cyB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzU2Vz
c2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbih0eXBlLCBjb25maWd1cmF0aW9uKSwgTWVzc2FnZXM6
OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb246OlJl
cGx5KHN1cHBvcnRzKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisK
K2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKK3sKKyAgICBpZiAoIW1f
ZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2NvbmZpZ3VyYXRp
b24uc3VwcG9ydGVkSW5pdERhdGFUeXBlcy5jb250YWlucyh0eXBlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYm9vbCBzdXBwb3J0cyB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlQ0RNUHJveHk6OlN1cHBvcnRzSW5pdERhdGEodHlwZSwgZGF0YSksIE1lc3NhZ2VzOjpSZW1v
dGVDRE1Qcm94eTo6U3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uOjpSZXBseShz
dXBwb3J0cyksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitDRE1S
ZXF1aXJlbWVudCBSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBDRE1S
ZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKK3sKKyAgICBDRE1SZXF1aXJlbWVudCBy
ZXF1aXJlbWVudCB7IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkIH07CisgICAgaWYgKCFtX2Zh
Y3RvcnkpCisgICAgICAgIHJldHVybiByZXF1aXJlbWVudDsKKworICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUNETVByb3h5OjpEaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uZmlndXJhdGlv
biwgcmVzdHJpY3Rpb25zKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpEaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQ6OlJlcGx5KHJlcXVpcmVtZW50KSwgbV9pZGVudGlmaWVyKTsK
KyAgICByZXR1cm4gcmVxdWlyZW1lbnQ7Cit9CisKK0NETVJlcXVpcmVtZW50IFJlbW90ZUNETTo6
cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNv
bnN0Cit7CisgICAgQ0RNUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQgeyBDRE1SZXF1aXJlbWVudDo6
Tm90QWxsb3dlZCB9OworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gcmVxdWly
ZW1lbnQ7CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6UGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSwgTWVzc2FnZXM6OlJlbW90ZUNE
TVByb3h5OjpQZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudDo6UmVwbHkocmVxdWlyZW1lbnQpLCBt
X2lkZW50aWZpZXIpOworICAgIHJldHVybiByZXF1aXJlbWVudDsKK30KKworYm9vbCBSZW1vdGVD
RE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUo
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK3sK
KyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBm
bGFnIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6RGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25maWd1cmF0aW9uKSwg
TWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpEaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVl
UGVyT3JpZ2luQW5kQ2xlYXJhYmxlOjpSZXBseShmbGFnKSwgbV9pZGVudGlmaWVyKTsKKyAgICBy
ZXR1cm4gZmxhZzsKK30KKworUmVmUHRyPENETUluc3RhbmNlPiBSZW1vdGVDRE06OmNyZWF0ZUlu
c3RhbmNlKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWQ7CisgICAgUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6OkNyZWF0ZUluc3RhbmNlKCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6Q3JlYXRl
SW5zdGFuY2U6OlJlcGx5KGlkLCBjb25maWd1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKKyAgICBp
ZiAoIWlkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gUmVtb3RlQ0RNSW5z
dGFuY2U6OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBXVEZNb3ZlKGlkKSwg
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5p
dGlhbGl6ZSgpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0aWFsaXplKCksIG1faWRlbnRpZmllcik7
Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBzYW5pdGl6ZWRSZXNwb25zZTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6
U2FuaXRpemVSZXNwb25zZShyZXNwb25zZSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2Fu
aXRpemVSZXNwb25zZTo6UmVwbHkoc2FuaXRpemVkUmVzcG9uc2UpLCBtX2lkZW50aWZpZXIpOwor
ICAgIHJldHVybiBXVEZNb3ZlKHNhbml0aXplZFJlc3BvbnNlLmJ1ZmZlcigpKTsKK30KKworT3B0
aW9uYWw8U3RyaW5nPiBSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZWRTZXNzaW9uSWQ7
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25J
ZCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2FuaXRpemVTZXNzaW9uSWQ6OlJlcGx5KHNh
bml0aXplZFNlc3Npb25JZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHNhbml0aXplZFNl
c3Npb25JZDsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmM2MzNGVkMmMyMDIzYWRkMjBhZWE4
OWM3ZGU0YTdhYzJjNGJiZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE0gZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6Q0RNUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE0+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJl
bW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2aXJ0
dWFsIH5SZW1vdGVDRE0oKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVD
RE1Db25maWd1cmF0aW9uJiYpOworCisgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29u
c3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rp
b25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAg
IFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1S
ZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmll
cnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1J
bnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRBbmRJbml0aWFs
aXplKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBP
cHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZp
bmFsOworCisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBl
czsgfQorICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkUm9idXN0bmVzc2VzOyB9
CisgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsgfQorICAgIGJv
b2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlv
bi5zdXBwb3J0c1Nlc3Npb25zOyB9CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1f
ZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1v
dGVDRE1Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNv
bmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MmM0NjRmZGZkY2Q4YzM1NzU2YjBlMzhk
YWQwZjg5MzkwNTg4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDg0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiB7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+
IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRl
ZFJvYnVzdG5lc3NlczsKKyAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9uczsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cisg
ICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVu
Y29kZXIgPDwgc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBw
b3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydHNTZXJ2ZXJDZXJ0
aWZpY2F0ZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydHNTZXNzaW9uczsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7Cisg
ICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAgaWYgKCFz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZFJvYnVzdG5l
c3NlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAg
IGlmICghc3VwcG9ydGVkUm9idXN0bmVzc2VzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRl
czsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAg
ICAgaWYgKCFzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcykKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXNzaW9uczsK
KyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nlc3Npb25zOworICAgICAgICBpZiAoIXN1cHBv
cnRzU2Vzc2lvbnMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVkSW5pdERhdGFUeXBlcyks
CisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMpLAorICAgICAgICAg
ICAgKnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzLAorICAgICAgICAgICAgKnN1cHBvcnRzU2Vz
c2lvbnMsCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0YWY4M2UzODI5ZWVhMzczZWNjNDZj
MjY4MDU1ZTY5NjI4YTkzOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCkBAIC0wLDAgKzEsMTA3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZh
Y3RvcnkoV2ViUHJvY2VzcyYgcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQorewor
fQorCitSZW1vdGVDRE1GYWN0b3J5Ojp+UmVtb3RlQ0RNRmFjdG9yeSgpID0gZGVmYXVsdDsKKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5Ojp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJDb3JlOjpT
ZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgaWYgKHNldHRpbmdzLnVzZUdQVVByb2Nlc3NGb3JN
ZWRpYSgpKSB7CisgICAgICAgIGF1dG8mIGZhY3RvcmllcyA9IENETUZhY3Rvcnk6OnJlZ2lzdGVy
ZWRGYWN0b3JpZXMoKTsKKyAgICAgICAgZmFjdG9yaWVzLmNsZWFyKCk7CisgICAgICAgIGZhY3Rv
cmllcy5hcHBlbmQodGhpcyk7CisgICAgfSBlbHNlCisgICAgICAgIENETUZhY3Rvcnk6OnJlc2V0
RmFjdG9yaWVzKCk7Cit9CisKKworY29uc3QgY2hhciogUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxl
bWVudE5hbWUoKQoreworICAgIHJldHVybiAiUmVtb3RlQ0RNRmFjdG9yeSI7Cit9CisKK0dQVVBy
b2Nlc3NDb25uZWN0aW9uJiBSZW1vdGVDRE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbigp
Cit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwor
fQorCitib29sIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKQoreworICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7CisgICAgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSwgTWVzc2FnZXM6OlJl
bW90ZUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW06OlJlcGx5KHN1cHBvcnRlZCks
IHsgfSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPENETVBy
aXZhdGU+IFJlbW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKK3sKKyAgICBSZW1vdGVDRE1JZGVudGlmaWVyIGlkOworICAgIFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE0o
a2V5U3lzdGVtKSwgTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNOjpS
ZXBseShpZCwgY29uZmlndXJhdGlvbiksIHsgfSk7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFJlbW90ZUNETTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRo
aXMpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVt
b3RlQ0RNRmFjdG9yeTo6YWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyIGlkLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24pCit7CisgICAg
QVNTRVJUKCFtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5zZXQoaWQs
IFdURk1vdmUoc2Vzc2lvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OnJlbW92ZVNl
c3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NF
UlQobV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsK
K30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlv
bklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjY2ViZTg0
YzJiMTJhZDQyMzgzOGEzNjI3YTA2NGVlYmQ0NzA5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApAQCAtMCww
ICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1J
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTZXR0aW5nczsKK30KKwor
bmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOworY2xhc3Mg
UmVtb3RlQ0RNOworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOworY2xhc3MgV2ViUHJv
Y2VzczsKKworY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeSBmaW5hbAorICAgIDogcHVibGljIFdlYkNv
cmU6OkNETUZhY3RvcnkKKyAgICAsIHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudAorICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVDRE1GYWN0b3J5KFdl
YlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0b3J5KCk7CisKKyAgICBzdGF0
aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKyAgICBXZWJQcm9jZXNzJiBwcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzOyB9CisKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlv
biYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMo
Y29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVNlc3Npb25N
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCisgICAgdm9pZCBhZGRT
ZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIFJlZjxSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNo
TWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIFJlZjxSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24+PiBtX3Nlc3Npb25zOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmll
ciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4+IG1fY2RtczsKKyAgICBXZWJQcm9jZXNzJiBt
X3Byb2Nlc3M7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ZWUzYTM4MTljMTcwN2I1NThiM2ZkOWFhYTg4MTYzMTU4MzkyZmFkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVy
LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8
d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVt
b3RlQ0RNSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3RlQ0RNSWRlbnRpZmllciA9IE9i
amVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNzM5ZjAzZGM1
OWVhZDcxZWQ3YTBmYzAzYjZjYzE5N2RhYWQ1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtMCww
ICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWY8UmVtb3Rl
Q0RNSW5zdGFuY2U+IFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1G
YWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlkLCBSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZUNETUluc3RhbmNlKFdURk1vdmUoZmFjdG9yeSksIFdURk1v
dmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNl
OjpSZW1vdGVDRE1JbnN0YW5jZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwg
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5
KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKKyAgICAsIG1fY29uZmlndXJhdGlv
bihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCithdXRvIFJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRl
ZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOjpSZXBseShzdWNjZWVk
ZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBG
YWlsZWQ7Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFuY2U6OnNldERpc3RpbmN0aXZlSWRlbnRp
ZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCkgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFt
X2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7
IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0RGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYWxsb3dlZCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjpTZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZDo6UmVwbHkoc3VjY2Vl
ZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDog
RmFpbGVkOworfQorCithdXRvIFJlbW90ZUNETUluc3RhbmNlOjpzZXRQZXJzaXN0ZW50U3RhdGVB
bGxvd2VkKGJvb2wgYWxsb3dlZCkgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3Rv
cnkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNl
IH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0UGVyc2lzdGVudFN0
YXRlQWxsb3dlZChhbGxvd2VkKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNl
dFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ6OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7
CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworYXV0byBS
ZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSkgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2Zh
Y3RvcnkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZh
bHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U2VydmVyQ2Vy
dGlmaWNhdGUoY2VydGlmaWNhdGUuZ2V0KCkpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6U2V0U2VydmVyQ2VydGlmaWNhdGU6OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworYXV0
byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeSkgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3Rv
cnkpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U3RvcmFnZURpcmVjdG9y
eTo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VjY2VlZGVk
ID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQorCitSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgaWYgKCFt
X2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciBpZDsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5OjpDcmVhdGVTZXNzaW9uKCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpD
cmVhdGVTZXNzaW9uOjpSZXBseShpZCksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShp
ZCkpOworICAgIG1fZmFjdG9yeS0+YWRkU2Vzc2lvbihpZCwgc2Vzc2lvbi5jb3B5UmVmKCkpOwor
ICAgIHJldHVybiBzZXNzaW9uOworfQorCithdXRvIFJlbW90ZUNETUluc3RhbmNlOjpzZXRIRENQ
U3RhdHVzKEhEQ1BTdGF0dXMgc3RhdHVzKSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1f
ZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsg
ZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRIRENQU3Rh
dHVzKHN0YXR1cyksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRIRENQU3Rh
dHVzOjpSZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNjZWVk
ZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjVkODI2YmFhNDEyZDU2MGUwYzA2OThhMGUyZGM1ZTgwZTIwOGJlMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNp
bmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2UgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNSW5z
dGFuY2UgeworcHVibGljOgorICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlKCkgPSBkZWZh
dWx0OworICAgIHN0YXRpYyBSZWY8UmVtb3RlQ0RNSW5zdGFuY2U+IGNyZWF0ZShXZWFrUHRyPFJl
bW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmLCBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICBjb25zdCBSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0K
KworcHJpdmF0ZToKKyAgICBSZW1vdGVDRE1JbnN0YW5jZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rv
cnk+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmLCBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24mJik7CisKKyAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25U
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0K
KyAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUg
c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkgZmluYWw7CisgICAgU3VjY2Vz
c1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7CisgICAgU3VjY2Vz
c1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFs
dWUgc2V0SERDUFN0YXR1cyhIRENQU3RhdHVzKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIG1fY29uZmln
dXJhdGlvbjsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DRE1fSU5TVEFOQ0Uo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZSwgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkltcGxlbWVu
dGF0aW9uVHlwZTo6UmVtb3RlKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MzJkNzJlN2NlNGI4NTNmMmQzYjkzNDU1ZTE5MjgxYzQx
OWZhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNjAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24geworICAgIFN0cmluZyBrZXlT
eXN0ZW07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGtleVN5c3Rl
bTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0
aW9uYWw8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4ga2V5U3lzdGVtOworICAgICAg
ICBkZWNvZGVyID4+IGtleVN5c3RlbTsKKyAgICAgICAgaWYgKCFrZXlTeXN0ZW0pCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAg
ICAgV1RGTW92ZSgqa2V5U3lzdGVtKSwKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGZmZGU2OTFjM2U4OTViODg1OWU2MjA1YTcxZTExNWZhOWI0ZmUwYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2VudW0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA1Y2NiZTIz
OTZmOWIyZjg2YzljNmIyNmYzM2UxYmEyMzViMDE3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNw
cApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3ND
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+IFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBm
YWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdURk1vdmUoZmFj
dG9yeSksIFdURk1vdmUoaWQpKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5
LCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCisgICAgOiBtX2ZhY3Rv
cnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKK3sK
K30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwg
ZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJl
cXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVh
bGl6YXRpb24sIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtZXNzYWdl
LmJ1ZmZlcigpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
LCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBjYWxsYmFjayhtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxs
KCksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lv
bklkLCB0eXBlLCBXVEZNb3ZlKHJlc3BvbnNlKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYg
Y2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9u
YWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IGNhbGxiYWNrKHNlc3Npb25XYXNDbG9zZWQsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3Zl
KGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9u
TG9hZEZhaWx1cmU6Ok90aGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Npb24o
dHlwZSwgc2Vzc2lvbklkLCBvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91Ymxl
PiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wg
c3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIG11dGFibGUgeworICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJh
dGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCwg
bG9hZEZhaWx1cmUpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENs
b3NlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsK
KyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Q2xvc2VTZXNzaW9u
KHNlc3Npb25JZCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayh7IH0s
IFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vz
c2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
IChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAg
ICAgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gV1RGOjpudWxs
b3B0OworICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCisg
ICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNl
Tm9uTnVsbCgpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92
ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAgfSwg
bV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAoIW1f
ZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6U3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCksIG1faWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcykKK3sKKyAgICBpZiAobV9jbGllbnQpCisg
ICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZW5kTWVzc2FnZShXZWJDb3Jl
OjpDRE1NZXNzYWdlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBt
ZXNzYWdlKQoreworICAgIGlmIChtX2NsaWVudCAmJiBtZXNzYWdlLmJ1ZmZlcigpKQorICAgICAg
ICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UodHlwZSwgbWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9u
TnVsbCgpKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlc3Npb25JZENo
YW5nZWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICBtX2NsaWVudC0+c2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpOworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ5ODc5ZjQ4MzdmYzMy
MmYxZDExNWI2ODgxMDQ5OTVkZDA5NmNkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUlu
c3RhbmNlU2Vzc2lvbi5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24gZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCAgcHVi
bGljIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rv
cnk+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJik7CisgICAgdmlydHVh
bCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXImJik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVz
VmVjdG9yJiYpOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUs
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIHNlc3Npb25JZENo
YW5nZWQoY29uc3QgU3RyaW5nJik7CisKKworICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVu
dCA9IFdURk1vdmUoY2xpZW50KTsgfQorICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1f
Y2xpZW50ID0gbnVsbHB0cjsgfQorICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5h
bDsKKyAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vz
c2lvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
JiYpIGZpbmFsOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0
b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OworICAgIFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiBtX2NsaWVu
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YzIzOTJlN2VmODYy
MDQ2MjFkMjg0MTQzOGI1ZWRmNGQzODE1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
CittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gTm90UmVmQ291bnRlZCB7Cisg
ICAgVXBkYXRlS2V5U3RhdHVzZXMoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3Iga2V5U3RhdHVzZXMpCisgICAgU2VuZE1lc3NhZ2UoZW51bTp1aW50OF90IFdlYkNv
cmU6OkNETU1lc3NhZ2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBt
ZXNzYWdlKQorICAgIFNlc3Npb25JZENoYW5nZWQoU3RyaW5nIHNlc3Npb25JZCkKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4NmFjZDEyNjVhZjBjODQ2Mzg4ZTIzZjljY2ExNmQ5MDIzMzhmZTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworZW51bSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyID0gT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT47CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllckNhY2hlZFN0YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2Y0ZjBkZTEwZDg4NmZmOWNkMTM0ZmZlYjcxODkyN2FjYmY4NzgwMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWVyRW51bXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGlt
ZVJhbmdlcy5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3N0cnVjdCBSZW1vdGVNZWRpYVBsYXllckNhY2hlZFN0YXRlIHsKKyAgICBNZWRpYVRp
bWUgY3VycmVudFRpbWU7CisgICAgTWVkaWFUaW1lIGR1cmF0aW9uOworICAgIE1lZGlhVGltZSBt
aW5UaW1lU2Vla2FibGU7CisgICAgTWVkaWFUaW1lIG1heFRpbWVTZWVrYWJsZTsKKyAgICBXZWJD
b3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXMgYnVmZmVyZWRSYW5nZXM7CisgICAgYm9vbCBwYXVzZWQg
eyB0cnVlIH07CisgICAgYm9vbCBsb2FkaW5nUHJvZ3Jlc3NlZCB7IGZhbHNlIH07CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGN1cnJlbnRUaW1lOworICAgICAgICBl
bmNvZGVyIDw8IGR1cmF0aW9uOworICAgICAgICBlbmNvZGVyIDw8IG1pblRpbWVTZWVrYWJsZTsK
KyAgICAgICAgZW5jb2RlciA8PCBtYXhUaW1lU2Vla2FibGU7CisgICAgICAgIGVuY29kZXIgPDwg
YnVmZmVyZWRSYW5nZXM7CisgICAgICAgIGVuY29kZXIgPDwgcGF1c2VkOworICAgICAgICBlbmNv
ZGVyIDw8IGxvYWRpbmdQcm9ncmVzc2VkOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBE
ZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVNZWRpYVBsYXllckNhY2hlZFN0YXRl
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPE1lZGlh
VGltZT4gY3VycmVudFRpbWU7CisgICAgICAgIGRlY29kZXIgPj4gY3VycmVudFRpbWU7CisgICAg
ICAgIGlmICghY3VycmVudFRpbWUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gZHVyYXRpb247CisgICAgICAgIGRlY29kZXIg
Pj4gZHVyYXRpb247CisgICAgICAgIGlmICghZHVyYXRpb24pCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gbWluVGltZVNlZWth
YmxlOworICAgICAgICBkZWNvZGVyID4+IG1pblRpbWVTZWVrYWJsZTsKKyAgICAgICAgaWYgKCFt
aW5UaW1lU2Vla2FibGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gbWF4VGltZVNlZWthYmxlOworICAgICAgICBkZWNvZGVy
ID4+IG1heFRpbWVTZWVrYWJsZTsKKyAgICAgICAgaWYgKCFtYXhUaW1lU2Vla2FibGUpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWRSYW5nZXM7CisgICAgICAgIGRlY29kZXIgPj4g
YnVmZmVyZWRSYW5nZXM7CisgICAgICAgIGlmICghYnVmZmVyZWRSYW5nZXMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHBhdXNlZDsK
KyAgICAgICAgZGVjb2RlciA+PiBwYXVzZWQ7CisgICAgICAgIGlmICghcGF1c2VkKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBsb2Fk
aW5nUHJvZ3Jlc3NlZDsKKyAgICAgICAgZGVjb2RlciA+PiBsb2FkaW5nUHJvZ3Jlc3NlZDsKKyAg
ICAgICAgaWYgKCFsb2FkaW5nUHJvZ3Jlc3NlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqY3VycmVudFRpbWUpLCBXVEZN
b3ZlKCpkdXJhdGlvbiksIFdURk1vdmUoKm1pblRpbWVTZWVrYWJsZSksIFdURk1vdmUoKm1heFRp
bWVTZWVrYWJsZSksIFdURk1vdmUoKmJ1ZmZlcmVkUmFuZ2VzKSwgV1RGTW92ZSgqcGF1c2VkKSwg
V1RGTW92ZSgqbG9hZGluZ1Byb2dyZXNzZWQpIH19OworICAgIH0KKworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IGFlMDE2MWFhZDk0NzRkNmIw
ZjFmOTAwYjA1NDRmNTk4MGQzNjk4ZmYuLmI5ZjRkMmE3ZTMyN2ViZTMyMGQ1N2U3NThiYWIwM2U1
N2E2YWQ2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMjgsMTIgKzI4
LDE1IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2Fn
ZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwOWQ3OTg3MWY1YjZmMzg3ZDRmNWZiNjU1
MWVmOWEwNDY3YzQ2M2I4Li40OGNhOWRlOTlhYmMwYjA5NTIxMThlZGQ2YTE5YTJlYjkxODhiY2Q5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0xODksMTcgKzE4OSwxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGJvbwogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZN
b3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgZGF0YSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEgb2Ygc2l6ZSAlbHUgZm9yICclcyciLCBk
YXRhLnNpemUoKSwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkp
OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNl
LCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlk
YXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRy
b2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlciht
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlm
aWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
IChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUo
ZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaAppbmRleCA1ODNlMzc5Yzg5ZWNmYTk1MzBiMGFiZmExYzY5ZmVhOWQ1Mzk2
NmZiLi4yNjkwOGU4MjNkNzkyNDRlNTc4NmRiMDRhNTk2OWVmMWZjNjU4MDg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
QEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJ
UEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KIApAQCAtODMsNyArODMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxTZXJ2
aWNlV29ya2VyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IDM0ZTg2YzExZTI0ODZjN2ExNjAzNmQ3
YjQ2OGZiNzhkMjc1OGZkNjEuLmM1MGY1NWFlOTI2M2MxMTY4MTQxYWE0NTcwYTJkZGVjNjE2NjQw
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC0xMjksNyAr
MTI5LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
QmxvYkNodW5rKGNvbnN0IGNoYXIqIGRhdGEsIHNpemUKICAgICBpZiAoIW1fY29ubmVjdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkg
fSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIHNpemUpIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0
Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRGaW5pc2hCbG9iTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCA5OGIxNWI4N2ZjMTNkYTJkYmY0NDNiYTk4YTRkODZkN2E5ZDM1NDE5Li4zZTE5OWM5YWY5
OGM1ZDRiZDg4OWRhOTcyNTAzNTJkNGIyZDFiNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTE5MTQsOSArMTkxNCw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBTaGFyCiAg
ICAgYXV0byBjYWxsYmFja0lEID0gQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJZGVu
dGlmaWVyKTsKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KSB7
CiAgICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpIH0pKTsK
KyAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNo
ZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7ICpkYXRhIH0pKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExv
YWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgbnVsbHB0ciwgMCB9KSk7CisgICAgICAgICAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2Fs
bGJhY2tJRCwgeyB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGU0NTgzNzQ5YjZmOTZiNWMxZGVkMWUwNmE0MzBhYWM4
OTE1ODdiZmQuLjhmYmM3NDMxYmU3N2EwYzk2MjVhZDMxODQ3ZmFlMzZjYTkwODNjMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjAsNiAr
MzIwLDkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICNpbmNsdWRlICJSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIuaCIKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMzUwMCw3ICszNTAzLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFy
Y2hpdmVEYXRhKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAo
ZGF0YSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdl
dCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07
CisgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKICNlbmRpZgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNr
KGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KQEAgLTM1ODEsNyArMzU4NCw3IEBAIHZv
aWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2U7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRp
Y19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBk
YXRhUmVmZXJlbmNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5kaWYK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJl
bmNlLCBjYWxsYmFja0lEKSk7CiB9CkBAIC0zNjg1LDYgKzM2ODgsOSBAQCB2b2lkIFdlYlBhZ2U6
OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBs
ZW1lbnQ8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPigpLT51cGRhdGVQcmVmZXJlbmNlcyhzZXR0
aW5ncyk7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCktPnVwZGF0ZVByZWZlcmVuY2Vz
KHNldHRpbmdzKTsKKyNlbmRpZgogI2VuZGlmCiB9CiAKQEAgLTQ5MTksNyArNDkyNSw3IEBAIHZv
aWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvCiB7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+
IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8s
IGZpcnN0LCBjb3VudCwgcGRmUGFnZURhdGEpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGF0YUNhbGxiYWNrKHsgQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSks
IHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkg
fSwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNh
bGxiYWNrKHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0KCkpIH0sIGNhbGxi
YWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJz
dCwgdWludDMyX3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURh
dGEpCkBAIC02NTYzLDEyICs2NTY5LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0Rp
ZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0CiAgICAg
aGFuZGxlci0+dGFza0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2Up
OwogfQogCi12b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIGF1
dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQo
aGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXIt
PnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0
YSgpKTsKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRh
dGEuc2l6ZSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oZGF0YS5kYXRhKCkp
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKQEAgLTY3OTAsNyArNjc5Niw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYm
IGZpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJh
Y2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0
aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCBjN2NmMzhjNWJiYTIwMWNlZDc4OGNkMDNkNWEyMDRkNGFjYTRmMmE3Li43M2M1
OTJjYzg0Zjc0OGMyZjQ4OTk1ODY3YmU2ZTJlOWFlZWFjMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTUsNiArMTU1LDcgQEAgbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRh
UmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTE5NCw3ICsxMTk1LDcgQEAgcHVibGljOgogICAgIAogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENhbGxiYWNrSUQp
OwotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRf
dD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJ
bWFnZURhdGEsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCkBAIC0xNjc0LDcgKzE2NzUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cmxT
Y2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVy
LCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgdXJs
U2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50
NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9p
ZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIs
IHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5k
bGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc2V0SXNTdXNwZW5kZWQoYm9vbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNDdjOWMwOGFkZWU0NTg1ZDkxMzM0
NmIxYWJkZWU4NjdjNWYxY2I1Ny4uYmYyNGEyOWMzZTBhYjA0MjQzMzdlMDNmYmIyMzljNDgxMTkz
NWI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTc0LDYg
KzE3NCwxMCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNl
bmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9z
ZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nlc3Npb25JRD0lIiBQUkl1NjQgIl0gV2ViUHJvY2Vzczo6
IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQsICMjX19WQV9BUkdTX18pCiAKQEAg
LTI0MCw2ICsyNDQsMTAgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgYWRkU3VwcGxl
bWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVDRE1GYWN0b3J5PigpOwor
I2VuZGlmCisKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2Uo
KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391473</attachid>
            <date>2020-02-22 21:06:50 -0800</date>
            <delta_ts>2020-02-23 21:18:55 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208090-20200222210649.patch</filename>
            <type>text/plain</type>
            <size>267471</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ5OTU0ODNlZGFmNmRl
ODIyNjcwN2ZlYTBlMTc4MDU2NDI2MTFiOS4uYmRiYWQ5NjQ5NDc0MTc0NmI2YTNhZjkyZGI4MjI0
OTFlZjdjMDJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5OjpyZXNldEZhY3Rvcmll
cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVxdWlyZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Up
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZFJvYnVzdG5lc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NETTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5z
ZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRlZFJvYnVzdG5lc3MgY29uc3QpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0xNCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIFFUS2l0IGZv
ciByZW5kZXJpbmcgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gY29udHJvbHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWM3
MjdiZjkzMzdkMGNhMjVlYzFjY2Y5ZDhlNGZlMDY3NWI0Mzk3Ni4uN2YxNzgxMWQxNDJhZmFmYTZh
YjgyNTk1MTQ3NDkxYzY4ZjljZjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMjcgQEAKKzIwMjAt
MDItMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBd
IEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90ZUNETUluc3Rh
bmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAgb2YgdGhlaXIg
YXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBleGlzdGluZyBD
RE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5IGJ5IGV4cGxpY2l0bHkgY2xlYXJp
bmcgb3V0IGFsbCB0aGUgZXhpc3RpbmcgCisgICAgICAgIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlz
IGVuYWJsZWQsIGFuZCByZXNldHRpbmcgdGhvc2UgZmFjdG9yaWVzIHRvIGRlZmF1bHQgd2hlbiB0
aGUgR1BVIHByb2Nlc3MgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGlzIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgdXNpbmcgdGhlIHNhbWUgZW5j
b2RlL2RlY29kZSBwYXRoIGFzIGlzIHVzZWQgaW4KKyAgICAgICAgV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzOiB0aGUgU2hhcmVkQnVmZmVyIGlzIGNvcGllZCBpbnRvIHNoYXJlZCBtZW1vcnksIGFuZCBv
bmx5IGEgaGFuZGxlIGlzIHBhc3NlZCBhY3Jvc3MKKyAgICAgICAgdGhlIFhQQyBib3VuZGFyeS4g
VGhpcyByZXF1aXJlcyBleGlzdGluZyB1c2VycyB0byBoYW5kbGUgcmVjZWl2aW5nIGEgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhSGFuZGxlIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBvZiB0aGUg
WFBDIGJvdW5kYXJ5LCBidXQgdGhpcyBpcyB0cml2aWFsLCBhbmQgbWFueSBjYWxsIHNpdGVzIHJl
cXVpcmUgYSBTaGFyZWRCdWZmZXIgb24gdGhlCisgICAgICAgIHJlbW90ZSBzaWRlIGluIHRoZSBm
aXJzdCBwbGFjZS4gVGhpcyBjb2RlIGNvdWxkIGJlIGltcHJvdmVkIGJ5IGFsbG93aW5nIHRoZSBT
aGFyZWRNZW1vcnkgb2JqZWN0IGJlIGFkb3B0ZWQKKyAgICAgICAgYnkgdGhlIFNoYXJlZEJ1ZmZl
ciBvYmplY3QgYXQgY3JlYXRpb24gdGltZSwgbGVhZGluZyB0byB6ZXJvLWNvcHkgZGVjb2Rpbmcs
IGJ1dCBpcyBub3QgZG9uZSBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RN
SW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3Rh
bmNlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlk
UmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmFkZEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOiAKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNvbmZpZ3VyYXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjppbnN0YW5j
ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c3RvcmVS
ZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
UHJveHk6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETVByb3h5OjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVl
UGVyT3JpZ2luQW5kQ2xlYXJhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6
OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRB
bmRJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXpl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNz
aW9uSWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmlu
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSk6Cisg
ICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlcik6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAo
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtUmVnaXN0ZXJBdHRhY2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFu
Y2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0
ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OlJlbW90ZUNETSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rp
b25zIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06
OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRp
c3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmln
aW5BbmRDbGVhcmFibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0
ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQgY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJZGVudGlm
aWVyc0FsbG93ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0UGVy
c2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2U6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZTo6c2V0SERDUFN0YXR1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2UuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJl
Y29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUJsb2JDaHVuayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorCiAyMDIwLTAyLTIyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN0b3AgdXNpbmcgUVRLaXQgZm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNjcmVl
biBjb250cm9scwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYWQ0ZjcxZDdjNGI0OTY5MTAzMjE2MzNj
YWFmYzM4ZDYwZjYyY2YxZC4uMDcyMGFkZTg4MDVkYTAwMDI2ZjkxM2Y5OWYxY2JiMDM1N2Q2NDlk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTgxLDYgKzExODEsMjAgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCiAKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1FbmNyeXB0aW9uU2NoZW1lLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0
b3J5LmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisgICAgcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKyAgICBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETU1lZGlhQ2FwYWJpbGl0eS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVz
c2FnZVR5cGUuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorICAg
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UmVzdHJpY3Rpb25zLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlw
ZS5oCisKICAgICBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDRiYmIyYmNlNjE4NzRi
N2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAuLmM0ZTE0MjZhMGMzZmZiNWFhODEwZDRjNWQwYTY4
YmQwN2U5ZmVmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBPcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24+IENETTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYQogICAg
ICAgICAgICAgaWYgKGluaXREYXRhVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgICAgIGlmIChtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0
c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgICAgICAgICAgaWYgKG1fcHJpdmF0ZSAm
JiBtX3ByaXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5
cGUpKQogICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChpbml0RGF0YVR5cGUp
OwogICAgICAgICB9CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBPcHRpb25hbDxWZWN0b3I8TWVkaWFL
ZXlTeXN0ZW1NZWRpYUNhcGFiaWxpdHk+PiBDRE06OmdldFN1cHBvcnRlZENhcGFiaWxpdGllc0Zv
cgogICAgICAgICAvLyAzLjExLiBJZiBjb250ZW50IHR5cGUgaXMgbm90IHN0cmljdGx5IGEgYXVk
aW8vdmlkZW8gdHlwZSwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgogICAgICAgICAv
LyAzLjEyLiBJZiByb2J1c3RuZXNzIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nIGFuZCBjb250YWlu
cyBhbiB1bnJlY29nbml6ZWQgdmFsdWUgb3IgYSB2YWx1ZSBub3Qgc3VwcG9ydGVkIGJ5CiAgICAg
ICAgIC8vICAgICAgIGltcGxlbWVudGF0aW9uLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRp
b24uIFN0cmluZyBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgotICAgICAgICBpZiAoIXJv
YnVzdG5lc3MuaXNFbXB0eSgpICYmICFtX3ByaXZhdGUtPnN1cHBvcnRzUm9idXN0bmVzcyhyb2J1
c3RuZXNzKSkKKyAgICAgICAgaWYgKCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRl
LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKS5jb250YWlucyhyb2J1c3RuZXNzKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIDMuMTMuIElmIHRoZSB1c2VyIGFnZW50IGFuZCBp
bXBsZW1lbnRhdGlvbiBkZWZpbml0ZWx5IHN1cHBvcnQgcGxheWJhY2sgb2YgZW5jcnlwdGVkIG1l
ZGlhIGRhdGEgZm9yIHRoZQpAQCAtNjEyLDcgKzYxMiw3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c1Nl
c3Npb25zKCkgY29uc3QKIAogYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlICYm
IG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKTsKKyAgICByZXR1
cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRh
aW5zKGluaXREYXRhVHlwZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggZGExOWJiZmYyYzdjZTgyYmVm
YTgwMzVhZDc1NDJlM2U5ZjIyYTY5ZC4uMjlmYWI0OTkwNjgyNTgzMmE1YWRkZDk5YTgwZThmMzRk
OGQzMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgTWVk
aWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0IHNlc3Npb24gY2xvc2VkIGJlIGZh
bHNlLgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhlIENETSBpbnN0YW5jZSByZXByZXNl
bnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAgICAgLy8gNi43
LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIG1f
aW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBl
LCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9w
dGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlz
LCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPENETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+
dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgc2FuaXRpemVkUmVzcG9u
c2UucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0
aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMs
IE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vz
c1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkwYjAxMWUzNTViZGNiN2EzNDdjZTAyOTdk
YjFjNDJkODhmOTQ2M2IuLmY4NzNiN2NmMWQ5NjhmZmQyMjUwZWVkMGRiYmNiYmRmYmZmOTVkZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTQwNjUsNiArNDA2NSwxOSBAQAogCQlDRDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyog
TWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEM0E0OTU2MTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oICovOyB9OwogCQlD
RDNBNDk2MjE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1OTE3QTlEMDFCMDAyNzRFNDIg
LyogU291cmNlQnVmZmVyLmggKi87IH07CiAJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0MiAvKiBT
b3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICov
OyB9OworCQlDRDNDRTBGODI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRW5jcnlwdGlvblNjaGVtZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2OUIy
MTVDMjNBNDAwRUZDQjUwIC8qIENETUVuY3J5cHRpb25TY2hlbWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGOTI0MDFBQUQ5MDA0QkEw
MUQgLyogQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q5NEE1RDIxRjcxQ0I2QjAwRjUyNUM1IC8qIENETUZhY3RvcnkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGQTI0MDFB
QUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNFMUY3MUNCNkEwMEY1MjVDNSAvKiBDRE1JbnN0YW5j
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNE
M0NFMEZCMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOUQzNzVBMjE1MTYzRTQwMDQ5
NjU3QiAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGQzI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5
U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDk0QTVENDFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNS2V5U3RhdHVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkQyNDAxQUFEOTAwNEJB
MDFEIC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNEMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkUyNDAxQUFEOTAwNEJBMDFEIC8qIENETU1lZGlhQ2Fw
YWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q5NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZGMjQwMUFB
REEwMDRCQTAxRCAvKiBDRE1NZXNzYWdlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1RDYxRjcxQ0I2RDAwRjUyNUM1IC8qIENETU1lc3Nh
Z2VUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQ0QzQ0UxMDAyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNGMUY3MUNCNkEwMEY1MjVD
NSAvKiBDRE1Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFGNzFDQjYx
MDBGNTI1QzUgLyogQ0RNUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVxdWlyZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRB
NUNDMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1SZXF1aXJlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTAzMjQwMUFBREEwMDRCQTAx
RCAvKiBDRE1SZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEOTRBNUQwMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1SZXN0cmljdGlvbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDND
RTEwNDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ1MUY3MUNCNkQwMEY1MjVDNSAv
KiBDRE1TZXNzaW9uVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxp
dGllc0NHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDNFMjFEQjIxODMzRjUxMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEM0UyNTFDMTgw
NDZCMDYwMEUyN0Y1NiAvKiBHcmlkQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2IC8qIEdyaWRBcmVhLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QzRTI1
MjQxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTIyMTgwNDZCQ0Qw
MEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggKi87IH07CkBAIC00MTk2LDcg
KzQyMDksNyBAQAogCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIwMEYxODIw
NTQwNjAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCAqLzsgfTsKIAkJQ0RGNEI3MTIxRTAwODdBRTAw
RTIzNUEyIC8qIExlZ2FjeUNETVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBMZWdhY3lDRE1T
ZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0RGNEI3MTUxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0QjcxMzFFMDBCN0U1MDBFMjM1QTIgLyog
Q0RNLmNwcCAqLzsgfTsKLQkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTQxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5oICovOyB9OworCQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyog
Q0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0
QjcxNDFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNEI3MTgxRTAxQ0I5MTAwRTIzNUEyIC8qIE1lZGlh
S2V5c1Jlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNEI3MTcxRTAxQ0I5MTAwRTIzNUEyIC8qIE1lZGlhS2V5c1Jlc3RyaWN0aW9u
cy5oICovOyB9OwogCQlDREY0QjcxQTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9u
VHlwZS5pZGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REY0QjcxOTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9uVHlwZS5pZGwgKi87IH07
CiAJCUNERjRCNzFFMUUwMUUxMUEwMEUyMzVBMiAvKiBKU01lZGlhS2V5U2Vzc2lvblR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzFDMUUw
MUUxMUEwMEUyMzVBMiAvKiBKU01lZGlhS2V5U2Vzc2lvblR5cGUuaCAqLzsgfTsKQEAgLTI5MjYz
LDkgKzI5Mjc2LDIyIEBACiAJCQkJNjU1MEI2OUUwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2Vj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEyIC8qIENE
TS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q5NEE1REUxRjcyRjU3QjAwRjUyNUM1IC8qIENETUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TUVuY3J5cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEY5MjQwMUFBRDkw
MDRCQTAxRCAvKiBDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREI3MDQ1QTFGNzQ2
NUExMDAzOTIzREYgLyogQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNEM0NFMEZBMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0QzQ0UwRkIyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlU2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJBMDFEIC8qIENETUtleVN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkQyNDAxQUFEOTAwNEJBMDFEIC8qIENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZFMjQwMUFB
RDkwMDRCQTAxRCAvKiBDRE1NZWRpYUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
M0NFMEZGMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1NZXNzYWdlVHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0QzQ0UxMDAyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEMzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAvKiBDRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwMTI0MDFBQURBMDA0QkEwMUQg
LyogQ0RNUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAyMjQwMUFBREEwMDRCQTAx
RCAvKiBDRE1SZXF1aXJlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UxMDMyNDAxQUFE
QTAwNEJBMDFEIC8qIENETVJlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFNTk1
OTcxQkYyNkUyMTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUNEM0NFMTA0MjQwMUFBREEwMDRCQTAxRCAvKiBDRE1TZXNzaW9uVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJEIC8qIENlcnRp
ZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTFCOEYwQjUyMTk1M0Q2NTAwMEMyQjAw
IC8qIENlcnRpZmljYXRlSW5mb0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzZGRDE1MTZD
NzgyNjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA5ZTdhOTY0ODQ0NDk5MGU3
MWI0M2Q2Zjc0NDc3MTNkMzJmZDBiMjAzLi4xMWUyNzJiNzNkY2Q4NzRjNzBlOTNjMmY1YmMwM2Qx
ZDRiYzMwYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTI1NjEsMTUgKzI1NjEsMjUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKQoreworICAgIGlm
ICghbV9wbGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBib29sIHNob3VsZENvbnRpbnVlID0g
aGFzRXZlbnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXkiKSB8fCAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSAmJiAhZG9j
dW1lbnQoKS5xdWlya3MoKS5oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyaygp
KTsKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGRD
b250aW51ZSk7Cit9CisjZW5kaWYKKwogUmVmUHRyPEFycmF5QnVmZmVyPiBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fd2ViS2l0TWVkaWFLZXlzID8gbV93ZWJLaXRNZWRpYUtleXMt
PmNhY2hlZEtleUZvcktleUlkKGtleUlkKSA6IG51bGxwdHI7CiB9CiAKLWJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXRE
YXRhKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRu
ZWVka2V5IikKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpAQCAtMjU4MCwxNCArMjU5MCwx
MiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJy
YXkqIGluaXREYXRhKQogICAgICAgICApIHsKICAgICAgICAgbV9lcnJvciA9IE1lZGlhRXJyb3I6
OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfRU5DUllQVEVEKTsKICAgICAgICAgc2NoZWR1
bGVFdmVudChldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtl
eU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5p
dERhdGEpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgbV9hc3luY0V2ZW50UXVl
dWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpIGNvbnN0CkBAIC01MTI5LDYgKzUxMzcsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCiAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CiAjZW5kaWYKKworI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorICAgIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKQpAQCAtNTg5
MSw2ICs1OTAzLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChFdmVu
dCYgZXZlbnQpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBj
b25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpCisgICAgICAgIHVw
ZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKKwogICAgIGlmIChldmVu
dFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hh
bmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5
cGUsIFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKTsKIApAQCAtNTkxMiw2ICs1OTI5LDExIEBA
IGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIFJlZjxFdmVudExpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3Zl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIm
IGxpc3RlbmVyLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CisjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
aWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50KQorICAgICAg
ICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlmCisKICAgICBpZiAo
ZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0
eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKaW5kZXggZTcxNTYzY2ZmNjFhNTE0NTU2NzI0ZGZkM2NhNzBiMDEwOWZmZjU2
MC4uY2EzNzQ5YmRkYjZlMGI2ZjFjNGYxODYzMDE5YmQ2NDk2Nzk1MWQ2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTY4Miw3ICs2ODIsNyBAQCBwcml2YXRlOgog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZp
bmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOwog
ICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBm
aW5hbDsKICNlbmRpZgogCkBAIC02OTYsNiArNjk2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gQ0RN
Q2xpZW50CiAgICAgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNz
YXJ5KCkgZmluYWw7CiAjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgdXBkYXRlU2hvdWxkQ29udGlu
dWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgogICAgIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgdm9pZCBtZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElz
V2lyZWxlc3NDaGFuZ2VkKGJvb2wpIGZpbmFsOwpAQCAtMTE2OCw2ICsxMTcyLDcgQEAgcHJpdmF0
ZToKICAgICBNZWRpYVByb3ZpZGVyIG1fbWVkaWFQcm92aWRlcjsKIAogI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9oYXNOZWVka2V5TGlzdGVuZXIgeyBmYWxz
ZSB9OwogICAgIFJlZlB0cjxXZWJLaXRNZWRpYUtleXM+IG1fd2ViS2l0TWVkaWFLZXlzOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUVuY3J5cHRpb25TY2hlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAppbmRleCA3NGIzYWE3ZDdiZGIwMGEyNjc1NmEw
MjM2NTY2ZjM2ODgxMmJjZTNiLi4xYTdhNTYyN2RiY2E2NDFiNDljZTdlNTZlNjcxNmUzMThhOTg4
YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1FbmNyeXB0aW9uU2NoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCkBAIC0yNywxMyArMjcsMjcgQEAKIAogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNRW5jcnlwdGlvblNjaGVtZSB7Citl
bnVtIGNsYXNzIENETUVuY3J5cHRpb25TY2hlbWUgOiB1aW50OF90IHsKICAgICBjZW5jLAogICAg
IGNiY3MsCiB9OwogCiB9CiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWU+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lLAor
ICAgICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lOjpjZW5jLAorICAgICAgICBXZWJD
b3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lOjpjYmNzCisgICAgPjsKK307CisKK30KKwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1G
YWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZh
Y3RvcnkuY3BwCmluZGV4IDRiYjU5OWZhODA3M2QzYjg1NWQ4NDYxNzg2MTlkYmMwMjYxMDU4ZjIu
LjY2MWQ1YjRlYjc1MmVhNTVhYTJkOGU0ZjllZWQ2Mzg2ZWRkYWM1ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwCkBA
IC01Nyw2ICs1NywxMSBAQCB2b2lkIENETUZhY3Rvcnk6OnVucmVnaXN0ZXJGYWN0b3J5KENETUZh
Y3RvcnkmIGZhY3RvcnkpCiAgICAgcmVnaXN0ZXJlZEZhY3RvcmllcygpLnJlbW92ZUFsbCgmZmFj
dG9yeSk7CiB9CiAKK3ZvaWQgQ0RNRmFjdG9yeTo6cmVzZXRGYWN0b3JpZXMoKQoreworICAgIHBs
YXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMocmVnaXN0ZXJlZEZhY3RvcmllcygpKTsKK30KKwogI2lm
ICFVU0UoR1NUUkVBTUVSKSAmJiAhVVNFKEFWRk9VTkRBVElPTikKIHZvaWQgQ0RNRmFjdG9yeTo6
cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JikKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3Rvcnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaApp
bmRleCA0NGVhYWIwN2U3NTdhZmU1OGI1MzYxZjVhZjEyYjI0Nzc2YTAzNTJlLi5lMWFlNjA0MjE2
YTk3NTkyZjMzY2I4MzYyZmMyYzIxYTJiMDg4YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCkBAIC00Miw3ICs0Miw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBjcmVhdGVD
RE0oY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYg
cmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8
Q0RNRmFjdG9yeSo+JiByZWdpc3RlcmVkRmFjdG9yaWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgcmVzZXRGYWN0b3JpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCByZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIHVucmVnaXN0ZXJGYWN0b3J5KENETUZhY3RvcnkmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXgg
OGY5ZjNlYjg3NDVjMzUyMDI4MzE0YzYwNmQyODlkNGUzZjcxYTA0OC4uN2ZlMDlmMGFmM2ZkNzMw
MzYyMzVjMjI3N2JhY2RlYmEwNjQ5YjE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC01Miw2ICs1Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgTW9jaywKICAgICAgICAgQ2xlYXJLZXksCiAgICAgICAgIEZhaXJQbGF5
U3RyZWFtaW5nLAorICAgICAgICBSZW1vdGUsCiAgICAgfTsKICAgICB2aXJ0dWFsIEltcGxlbWVu
dGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCA9IDA7CiAKQEAgLTY4LDcgKzY5
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNz
aW9uKCkgPSAwOwogCi0gICAgZW51bSBjbGFzcyBIRENQU3RhdHVzIHsKKyAgICBlbnVtIGNsYXNz
IEhEQ1BTdGF0dXMgOiB1aW50OF90IHsKICAgICAgICAgVW5rbm93biwKICAgICAgICAgVmFsaWQs
CiAgICAgICAgIE91dHB1dFJlc3RyaWN0ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDg3
MjVhMzFkOGJiM2UyMmJlMjFkZjA3ZTMyMGIzNmU3NTAzODZlMWEuLmQ0NjRiNzRkMWM3MjAyYTlh
MzM5ZGZmNjVkMDZlMDgyMDg5NjlkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC03Miw5
ICs3Miw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1JbnN0YW5j
ZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKICAgICB1c2luZyBNZXNzYWdlID0gc3Rk
OjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25XYXND
bG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8
ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2Us
IFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAw
OwogCi0gICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgeworICAgIGVudW0gY2xhc3Mg
U2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCiAgICAgICAgIE5v
U2Vzc2lvbkRhdGEsCiAgICAgICAgIE1pc21hdGNoZWRTZXNzaW9uVHlwZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1cy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKaW5k
ZXggYWQ5Njk2MjM2MDRjZDE0NzA1NWEyN2I3MzM2ZjY3N2MwYjNhZjJjNC4uY2M1ZTcxODZmNzRl
ZjhlODE0Y2IzYWY3NTVlMTYxYTY1YzIwODgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKQEAgLTMwLDkgKzMwLDEx
IEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETUtleVN0YXR1cyB7
CitlbnVtIGNsYXNzIENETUtleVN0YXR1cyA6IHVpbnQ4X3QgewogICAgIFVzYWJsZSwKICAgICBF
eHBpcmVkLAogICAgIFJlbGVhc2VkLApAQCAtNDQsNCArNDYsMjAgQEAgZW51bSBjbGFzcyBDRE1L
ZXlTdGF0dXMgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUtleVN0YXR1cz4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVz
LAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6VXNhYmxlLAorICAgIFdlYkNvcmU6OkNETUtl
eVN0YXR1czo6RXhwaXJlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlJlbGVhc2VkLAor
ICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6T3V0cHV0UmVzdHJpY3RlZCwKKyAgICBXZWJDb3Jl
OjpDRE1LZXlTdGF0dXM6Ok91dHB1dERvd25zY2FsZWQsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3Rh
dHVzOjpTdGF0dXNQZW5kaW5nLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6SW50ZXJuYWxF
cnJvcgorICAgID47Cit9OworCit9CiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaAppbmRleCA2MTJkNjQ1ZmFhNTI0OGY3
MWYxYzE1NjdmNDUwN2U4OWYzYjMxY2U1Li44NTI1ODdjZWRhMDUxMjE0NDc5NTIyZmFjMzhlNGMw
ZmI5ODc0OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCkBAIC00OCw2
ICs0OCw2NyBAQCBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiB7CiAgICAgQ0RNUmVx
dWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyIHsgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
IH07CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlIHsgQ0RNUmVxdWlyZW1lbnQ6
Ok9wdGlvbmFsIH07CiAgICAgVmVjdG9yPENETVNlc3Npb25UeXBlPiBzZXNzaW9uVHlwZXM7CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGxhYmVsOworICAgICAgICBl
bmNvZGVyIDw8IGluaXREYXRhVHlwZXM7CisgICAgICAgIGVuY29kZXIgPDwgYXVkaW9DYXBhYmls
aXRpZXM7CisgICAgICAgIGVuY29kZXIgPDwgdmlkZW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGVu
Y29kZXIgPDwgZGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IHBlcnNp
c3RlbnRTdGF0ZTsKKyAgICAgICAgZW5jb2RlciA8PCBzZXNzaW9uVHlwZXM7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAg
ICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAgICAgZGVjb2RlciA+PiBsYWJlbDsKKyAg
ICAgICAgaWYgKCFsYWJlbCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGluaXREYXRhVHlwZXM7CisgICAgICAgIGRl
Y29kZXIgPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgaWYgKCFpbml0RGF0YVR5cGVzKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8
Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gYXVkaW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGRlY29kZXIg
Pj4gYXVkaW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3Rv
cjxDRE1NZWRpYUNhcGFiaWxpdHk+PiB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgZGVjb2Rl
ciA+PiB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgaWYgKCF2aWRlb0NhcGFiaWxpdGllcykK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Q0RN
UmVxdWlyZW1lbnQ+IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKKyAgICAgICAgZGVjb2RlciA+PiBk
aXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgCisgICAgICAgIE9w
dGlvbmFsPENETVJlcXVpcmVtZW50PiBwZXJzaXN0ZW50U3RhdGU7CisgICAgICAgIGRlY29kZXIg
Pj4gcGVyc2lzdGVudFN0YXRlOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENE
TVNlc3Npb25UeXBlPj4gc2Vzc2lvblR5cGVzOworICAgICAgICBkZWNvZGVyID4+IHNlc3Npb25U
eXBlczsKKyAgICAgICAgaWYgKCFzZXNzaW9uVHlwZXMpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqbGFi
ZWwpLAorICAgICAgICAgICAgV1RGTW92ZSgqaW5pdERhdGFUeXBlcyksCisgICAgICAgICAgICBX
VEZNb3ZlKCphdWRpb0NhcGFiaWxpdGllcyksCisgICAgICAgICAgICBXVEZNb3ZlKCp2aWRlb0Nh
cGFiaWxpdGllcyksCisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyLAorICAgICAg
ICAgICAgKnBlcnNpc3RlbnRTdGF0ZSwKKyAgICAgICAgICAgIFdURk1vdmUoKnNlc3Npb25UeXBl
cyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lZGlh
Q2FwYWJpbGl0eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
TWVkaWFDYXBhYmlsaXR5LmgKaW5kZXggOTAxYjU0ZmYwNTA4ZWRhOWJiYjg4YzVjMWRiODY1Mzhk
Y2UxNDI4Mi4uZjg0YTBkMTJhYjRjZDUyMGUzZjBlMDRkNjRlYmVmYzYzMTYyNTg3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBh
YmlsaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
TWVkaWFDYXBhYmlsaXR5LmgKQEAgLTM5LDYgKzM5LDM5IEBAIHN0cnVjdCBDRE1NZWRpYUNhcGFi
aWxpdHkgewogICAgIFN0cmluZyBjb250ZW50VHlwZTsKICAgICBTdHJpbmcgcm9idXN0bmVzczsK
ICAgICBPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1lPiBlbmNyeXB0aW9uU2NoZW1lOworCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlwZTsKKyAgICAg
ICAgZW5jb2RlciA8PCByb2J1c3RuZXNzOworICAgICAgICBlbmNvZGVyIDw8IGVuY3J5cHRpb25T
Y2hlbWU7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGlj
IE9wdGlvbmFsPENETU1lZGlhQ2FwYWJpbGl0eT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisg
ICAgeworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlOworICAgICAgICBkZWNv
ZGVyID4+IGNvbnRlbnRUeXBlOworICAgICAgICBpZiAoIWNvbnRlbnRUeXBlKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHJvYnVz
dG5lc3M7CisgICAgICAgIGRlY29kZXIgPj4gcm9idXN0bmVzczsKKyAgICAgICAgaWYgKCFyb2J1
c3RuZXNzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRp
b25hbDxPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1lPj4gZW5jcnlwdGlvblNjaGVtZTsKKyAg
ICAgICAgZGVjb2RlciA+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBpZiAoIWVuY3J5cHRp
b25TY2hlbWUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJl
dHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqY29udGVudFR5cGUpLAorICAgICAgICAgICAg
V1RGTW92ZSgqcm9idXN0bmVzcyksCisgICAgICAgICAgICBXVEZNb3ZlKCplbmNyeXB0aW9uU2No
ZW1lKSwKKyAgICAgICAgfX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVz
c2FnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1l
c3NhZ2VUeXBlLmgKaW5kZXggZTVmNzk2YTllMGUwNzUxYWEwMjc4MmI5YjY2NmNhMjMxZWY3ZTYw
OS4uOTViZjI4YzJhYTk0YTNkYTUwNDViNWVjMDBmMzU4Y2QyNmQ5NWNhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlw
ZS5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBj
bGFzcyBDRE1NZXNzYWdlVHlwZSB7CitlbnVtIGNsYXNzIENETU1lc3NhZ2VUeXBlIDogdWludDhf
dCB7CiAgICAgTGljZW5zZVJlcXVlc3QsCiAgICAgTGljZW5zZVJlbmV3YWwsCiAgICAgTGljZW5z
ZVJlbGVhc2UsCkBAIC00MSw0ICs0MywxOCBAQCBlbnVtIGNsYXNzIENETU1lc3NhZ2VUeXBlIHsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZT4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLAor
ICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QsCisgICAgICAg
IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwKKyAgICAgICAgV2ViQ29y
ZTo6Q0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZWxlYXNlLAorICAgICAgICBXZWJDb3JlOjpDRE1N
ZXNzYWdlVHlwZTo6SW5kaXZpZHVhbGl6YXRpb25SZXF1ZXN0CisgICAgPjsKK307CisKK30KKwog
I2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5kZXggMjVmNzgxNmEyZmUx
ZGE2ZjkwYzJmZWY3Nzc1NTE0MDZhYTBmNGEwMy4uNzQ5ZmNkZjJmYzM3YTVlOWZlNjI1ZDUzYTNl
MDExYzcxYzRhZWQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNDEsMTEgKzQxLDExIEBAIGNsYXNzIENETVByaXZh
dGUgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETVByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0
YVR5cGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBv
cnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENETVJlcXVpcmVtZW50
IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdp
bkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UmVxdWlyZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVJlcXVpcmVtZW50LmgKaW5kZXggNjlhYzEyZDMxNmJmNjY1N2JiMGEyNGRhZjdhZTRmYTBmZDRm
MWM5OC4uNWIwYjc3ODBkMjdkZmViMTkzZGNlNmVjZGE3MTc4NTI4ZjdjZDU5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXF1aXJl
bWVudC5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
IAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51
bSBjbGFzcyBDRE1SZXF1aXJlbWVudCB7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWlu
dDhfdCB7CiAgICAgUmVxdWlyZWQsCiAgICAgT3B0aW9uYWwsCiAgICAgTm90QWxsb3dlZApAQCAt
NDAsNCArNDIsMTcgQEAgZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCB7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCwKKyAgICAgICAgV2ViQ29y
ZTo6Q0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkLAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJl
bWVudDo6T3B0aW9uYWwsCisgICAgICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpOb3RBbGxv
d2VkCisgICAgPjsKK307CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1S
ZXN0cmljdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVJlc3RyaWN0aW9ucy5oCmluZGV4IGM1MmUyODJhMTJlOTFhNDg4MTBiZDE4Yjg3ZWI2YWQ2Mzhm
MjEwYTguLjljYTJhYzU5ZThiMTM1NDYzYTUyZGI0NWU4MDczMWY1MGM2OTRmM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9u
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3Ry
aWN0aW9ucy5oCkBAIC0zNiw2ICszNiwzOSBAQCBzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zIHsKICAg
ICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCB7IGZhbHNlIH07CiAgICAgYm9vbCBw
ZXJzaXN0ZW50U3RhdGVEZW5pZWQgeyBmYWxzZSB9OwogICAgIEhhc2hTZXQ8Q0RNU2Vzc2lvblR5
cGUsIFdURjo6SW50SGFzaDxDRE1TZXNzaW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFp
dHM8Q0RNU2Vzc2lvblR5cGU+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBlbmNvZGVyIDw8IGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZDsKKyAg
ICAgICAgZW5jb2RlciA8PCBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAgIGVuY29kZXIg
PDwgZGVuaWVkU2Vzc2lvblR5cGVzOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNv
ZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxDRE1SZXN0cmljdGlvbnM+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZGlzdGluY3RpdmVJZGVu
dGlmaWVyRGVuaWVkOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRlbnRpZmllckRl
bmllZDsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHBlcnNp
c3RlbnRTdGF0ZURlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3RhdGVEZW5p
ZWQ7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlRGVuaWVkKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxIYXNoU2V0PENETVNlc3Npb25U
eXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJh
aXRzPENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICAgICAgZGVjb2Rl
ciA+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAgICAgIGlmICghZGVuaWVkU2Vzc2lvblR5cGVz
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sK
KyAgICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQsCisgICAgICAgICAgICAq
cGVyc2lzdGVudFN0YXRlRGVuaWVkLAorICAgICAgICAgICAgV1RGTW92ZSgqZGVuaWVkU2Vzc2lv
blR5cGVzKSwKKyAgICAgICAgfX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
U2Vzc2lvblR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVNlc3Npb25UeXBlLmgKaW5kZXggNjA1NzRhNWE2OTNhOTZjNDlmNDlmYjczNDk2ZWQ3NWI3ZTFl
NmZiYi4uZTA3YzMwMDI3OTMwNWY3NzQzZjIyZmNmNTQwNmYyY2ZhNjgxZGUyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9u
VHlwZS5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
IAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51
bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSB7CitlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIDogdWlu
dDhfdCB7CiAgICAgVGVtcG9yYXJ5LAogICAgIFBlcnNpc3RlbnRVc2FnZVJlY29yZCwKICAgICBQ
ZXJzaXN0ZW50TGljZW5zZQpAQCAtNDAsNCArNDIsMTcgQEAgZW51bSBjbGFzcyBDRE1TZXNzaW9u
VHlwZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1TZXNzaW9u
VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSwKKyAgICAg
ICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZCwKKyAgICAg
ICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlCisgICAgPjsKK307
CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKaW5kZXggNDUxMTFkYzc1YjU1MDgwY2VmNGU1ZmIzOGFlMjYzM2IzOWVh
NzIzMy4uODY0ZDZlM2RlODNiMDJjM2IxYzBkM2FkYjU2NTdiM2NlN2I2MTk4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJDRE1SZXN0cmljdGlvbnMuaCIKICNp
bmNsdWRlICJDRE1TZXNzaW9uVHlwZS5oIgorI2luY2x1ZGUgIkluaXREYXRhUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgpAQCAtMjkwLDEwICsyOTEsMTMgQEAgYm9vbCBDRE1GYWN0b3J5Q2xlYXJL
ZXk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogQ0RNUHJpdmF0
ZUNsZWFyS2V5OjpDRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiBDRE1Qcml2YXRlQ2xl
YXJLZXk6On5DRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgQ0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBw
b3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QKIHsKLSAgICAvLyBga2V5aWRzYCBhbmQgJ2NlbmMn
IGFyZSB0aGUgb25seSBzdXBwb3J0ZWQgaW5pdCBkYXRhIHR5cGUuCi0gICAgcmV0dXJuIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJjZW5jIikgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAid2VibSIpKTsKKyAgICByZXR1
cm4geworICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5OjprZXlpZHNOYW1lKCksCisgICAgICAgIElu
aXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCksCisgICAgICAgIEluaXREYXRhUmVnaXN0cnk6Ondl
Ym1OYW1lKCksCisgICAgfTsKIH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNQZXJzaXN0ZW50TGlj
ZW5zZVR5cGUoY29uc3QgVmVjdG9yPENETVNlc3Npb25UeXBlPiYgdHlwZXMpCkBAIC0zMzcsNyAr
MzQxLDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbldp
dGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJh
dGlvbihDRE1TZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Citib29sIENETVByaXZhdGVDbGVhcktleTo6
c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBl
JiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbikgY29uc3QKIHsKICAgICAvLyBPbmx5IHN1cHBvcnQgdGhlICd0ZW1wb3JhcnknIGFuZCAn
cGVyc2lzdGVudC1saWNlbnNlJyBzZXNzaW9uIHR5cGVzLgogICAgIGlmIChzZXNzaW9uVHlwZSAh
PSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5ICYmIHNlc3Npb25UeXBlICE9IENETVNlc3Npb25U
eXBlOjpQZXJzaXN0ZW50TGljZW5zZSkKQEAgLTM0NSwxMCArMzQ5LDEwIEBAIGJvb2wgQ0RNUHJp
dmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vz
c2lvblR5cGUmIHNlCiAgICAgcmV0dXJuIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25maWd1cmF0
aW9uKTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzUm9idXN0bmVzcyhj
b25zdCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJp
dmF0ZUNsZWFyS2V5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdAogewogICAgIC8vIE9u
bHkgZW1wdHkgYHJvYnVzdG5lc3NgIHN0cmluZyBpcyBzdXBwb3J0ZWQuCi0gICAgcmV0dXJuIHJv
YnVzdG5lc3MuaXNFbXB0eSgpOworICAgIHJldHVybiB7IGVtcHR5QXRvbSgpIH07CiB9CiAKIENE
TVJlcXVpcmVtZW50IENETVByaXZhdGVDbGVhcktleTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1Jl
cXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0
cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKQEAgLTQ5OCw3ICs1MDIsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogI2lm
IExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQgZm9yIGRlYnVn
IGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJlY2F1c2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDY3MDRhZTdhOTU3ZjMyZmUxZjg0OTgzZWQzYjNm
NjUwMmE1MzE1YTIuLjRhYjlkZTBmMDJjZWViYjIwYTkzY2RmNjFlM2I3NzBmNWZkZTgyMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNzQsMTEgKzc0LDExIEBAIHB1YmxpYzoKICAg
ICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlQ2xlYXJLZXko
KTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNv
bnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVz
KCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5l
c3NlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wg
c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiwgY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3Vw
cG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwg
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIENETVJl
cXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7
CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFu
ZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7
CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBtX3BhcmVudEluc3Rh
bmNlKHBhcmVudCkgeyB9CiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDU3ZGZjYmY0YmM3YzQ4
ODQ0ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIuLmRiMGIyZjhhN2UwZjI2OTZhMWQ4ZGI2ZjRkNGY0
N2FhZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2NTcsMTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6YXR0
ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiAKICNlbmRp
ZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCA9
IHNob3VsZDsKKyAgICBtX3ByaXZhdGUtPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQo
c2hvdWxkKTsKK30KKyNlbmRpZgorCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5kdXJhdGlvbk1lZGlhVGltZSgpOwpAQCAt
MTMxMiw5ICsxMzIwLDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBNZWRpYVBsYXllcjo6Y2FjaGVk
S2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50
KCkubWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChrZXlJZCk7CiB9CiAKLWJvb2wgTWVkaWFQ
bGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXI6
OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKLSAgICByZXR1cm4gY2xpZW50KCku
bWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERhdGEpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVy
S2V5TmVlZGVkKGluaXREYXRhKTsKIH0KIAogU3RyaW5nIE1lZGlhUGxheWVyOjptZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdlNmNiOGEzOTBkZjdmZTFhN2FhZTAxNzM5ZGM5NDhm
Nzc2NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBjNTY5ZTY3YTQxZTEyMGI3NjQwZWZhNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjAw
LDcgKzIwMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQogICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZv
cktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAjZW5kaWYKIApAQCAtMzY2LDYg
KzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNl
KENETUluc3RhbmNlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGlu
dWVBZnRlcktleU5lZWRlZChib29sKTsKKyAgICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQ7IH0K
KyNlbmRpZgorCiAgICAgYm9vbCBwYXVzZWQoKSBjb25zdDsKICAgICBib29sIHNlZWtpbmcoKSBj
b25zdDsKIApAQCAtNTE5LDcgKzUyNCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5
SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3Q7Ci0gICAgYm9vbCBrZXlOZWVkZWQoVWludDhB
cnJheSogaW5pdERhdGEpOworICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRh
KTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogI2VuZGlm
CiAKQEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVhbTsKICNlbmRpZgor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsK
KyNlbmRpZgogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXgg
OWY3ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0YjBkY2ExY2MxNzVhOC4uN2E4MjA0NzBmOTk5YWM5
OWE2YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI0Myw2ICsyNDMsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkgeyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCA0ZmM2Nzg3ZGQ4ZDkwN2NhZDZh
Mjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJhYmZjZGU1YTBkNGI4MTE4ZDAzY2M5MmYxZDYxOWQ2
MWQ3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAg
LTI0Nyw5ICsyNDcsOSBAQCBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9y
dHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0g
ZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5p
dERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxB
dG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRh
VHlwZXMoKSBjb25zdAogewotICAgIHJldHVybiB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlu
cyhpbml0RGF0YVR5cGUpOworICAgIHJldHVybiBjb3B5VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5
cGVzKCkpOwogfQogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHND
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pIGNvbnN0CkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0QKICAg
ICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29s
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25m
aWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAogewogICAgIGlmIChzZXNzaW9uVHlwZSA9PSBDRE1T
ZXNzaW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNp
c3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCkBAIC0zMTYsMTMgKzMxNiwx
MCBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlw
ZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3NpbwogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAor
VmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVk
Um9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAgICBpZiAocm9idXN0bmVzcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgLy8gRklYTUU6IERldGVybWluZSBhbiBlbnVtZXJh
dGVkIGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1ZXMgc3VwcG9ydGVkIGJ5IEZQUy4KLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHsgZW1wdHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1l
bnQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVx
dWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3Ry
aWN0aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyArMzYzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogCiBib29sIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYg
KCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghdmFsaWRJbml0
RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBzaW5mTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IDUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFi
YWZkMTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFkN2FmYmFlMmQyYzU2MTJmODRiNDM0YzBmMTBmNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC01NSwxMSArNTUs
MTEgQEAgcHVibGljOgogICAgIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZp
cnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogCi0gICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVj
dG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBD
RE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lv
blR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0
bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzU2Vz
c2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRv
bVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0RN
UmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVy
cmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVy
T3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IGIxMWY3MWE5YjVlMzhiZjY5
OGIxMzk0OWRkZGU4NmYzZGQ5OTRjYzEuLjdmMGUyZDVhYzAwZTYwNjJkMzViYWM0NWQ2ZTFlNzFk
NDQwM2U4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbgogICAgIHZvaWQgcmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5z
ZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNz
aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggNzMyNjc3NWY0N2QzODU4YjA1Zjc4NzhiNzM1
NzRhNDY0N2NiOGQzMS4uZjA5YjI4OWEzM2U3ZWMwNDBmMDRkMWY2Zjk5YWY4ZWY5MGQ5NzcwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTU4MCw3ICs1ODAsNyBAQCBzdGF0aWMgYm9v
bCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICByZXR1cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0K
IAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0
YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGly
ZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRn
ZWQiX3MpKSB7CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CkBAIC03MTEsNyArNzExLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAg
ICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRl
bnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVu
dEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNl
RGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52
YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2gg
dGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9y
dHMgYSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlv
biBtZXRob2QgPSBwcm90b2NvbF9nZXRNZXRob2REZXNjcmlwdGlvbihAcHJvdG9jb2woQVZDb250
ZW50S2V5U2Vzc2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNzaW9uOmNvbnRl
bnRLZXlSZXF1ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVTKTsKQEAgLTExNDAsNyArMTE0MCw4IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9u
SWRlbnRpZmllckNoYW5nZWQoTlNEYXRhCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2Vzc2lv
bklkID0gc2Vzc2lvbklkOwotICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lv
bklkKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFu
Z2VkKG1fc2Vzc2lvbklkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKEFWQ29udGVudEtl
eVJlcG9ydEdyb3VwKiBncm91cCwgTlNEYXRhICpzZXNzaW9uSWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IGIzN2M0NDExMzE0OTg4Nzk1NDZlYzhhNTdhMGRkOGUxMWY3ODQ2
OTcuLmQ3OGM3Y2FhNjAyMDgzZmEzYjgzYjMzYzc2MGRkNGY0MTEyZDYzYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMTY3OCw5ICsxNjc4LDEyIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNz
ZXRSCiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBj
aGFyKSwgMCk7CiAKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShX
VEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghcGxh
eWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCisgICAgICAgIHBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEucHRyKCkpOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
ICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgorI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgICAgIGlmIChtX2Nk
bUluc3RhbmNlKSB7CkBAIC0xNzEzLDcgKzE3MTYsOSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0
UgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFw
bGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKKyAgICAgICAgcGxheWVyKCktPmtl
eU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisKKyAgICAgICAgaWYgKCFwbGF5ZXIoKS0+c2hvdWxk
Q29udGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChrZXlJRCwgYXZSZXF1ZXN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggY2U1ZDhmN2Q2YmRmMzhi
NTkyMjA5MzAyYTZlNmQ3MWIzNjk2NjMyZC4uMGE0ZDY1NzUwYTE1NGM1ZTVlZTE5YjU4MzBjOWZi
YWUwMDAxZTNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAK
QEAgLTk4LDYgKzk4LDExIEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZERhdGFU
eXBlcyhWZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogICAgICAgICBtX3N1cHBvcnRlZERhdGFUeXBl
cy5hcHBlbmQodHlwZSk7CiB9CiAKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZFJv
YnVzdG5lc3MoVmVjdG9yPFN0cmluZz4mJiByb2J1c3RuZXNzZXMpCit7CisgICAgbV9zdXBwb3J0
ZWRSb2J1c3RuZXNzID0gcm9idXN0bmVzc2VzLm1hcChbXSAoYXV0byYgcm9idXN0bmVzcykgLT4g
QXRvbVN0cmluZyB7IHJldHVybiByb2J1c3RuZXNzOyB9KTsKK30KKwogc3RkOjp1bmlxdWVfcHRy
PENETVByaXZhdGU+IE1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikKIHsK
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNPihtYWtlV2Vha1B0cigqdGhpcykpOwpAQCAt
MTA4LDExICsxMTMsMTggQEAgTW9ja0NETTo6TW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5
PiBmYWN0b3J5KQogewogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBN
b2NrQ0RNOjpzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QKIHsKICAgICBpZiAobV9mYWN0
b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWREYXRhVHlwZXMoKS5jb250
YWlucyhpbml0RGF0YVR5cGUpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1f
ZmFjdG9yeS0+c3VwcG9ydGVkRGF0YVR5cGVzKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworVmVj
dG9yPEF0b21TdHJpbmc+IE1vY2tDRE06OnN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0Cit7
CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG1fZmFjdG9yeS0+c3VwcG9ydGVk
Um9idXN0bmVzcygpOworICAgIHJldHVybiB7IH07CiB9CiAKIGJvb2wgTW9ja0NETTo6c3VwcG9y
dHNDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbikgY29uc3QKQEAgLTEzOSw3ICsxNTEsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRz
Q29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1
cgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvblR5
cGVXaXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29u
c3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK2Jvb2wgTW9ja0NETTo6c3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U2Vzc2lvblR5
cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dAogewogICAgIGlmICghbV9mYWN0b3J5IHx8ICFtX2ZhY3RvcnktPnN1cHBvcnRlZFNlc3Npb25U
eXBlcygpLmNvbnRhaW5zKHNlc3Npb25UeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTQ4LDEzICsxNjAsNiBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29u
ZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiBzZXNzaW9uVAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmIHJv
YnVzdG5lc3MpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZmFjdG9yeSkKLSAgICAgICAgcmV0dXJuIG1f
ZmFjdG9yeS0+c3VwcG9ydGVkUm9idXN0bmVzcygpLmNvbnRhaW5zKHJvYnVzdG5lc3MpOwotICAg
IHJldHVybiBmYWxzZTsKLX0KLQogTWVkaWFLZXlzUmVxdWlyZW1lbnQgTW9ja0NETTo6ZGlzdGlu
Y3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0CiB7CiAgICAgaWYgKG1f
ZmFjdG9yeSkKQEAgLTE5OSw3ICsyMDQsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdAogCiBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAog
ewotICAgIGlmICghc3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkKKyAgICBpZiAo
IXN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBVTlVTRURfUEFSQU0oaW5pdERhdGEpOwpAQCAtMzI1LDcg
KzMzMCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQs
IGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5z
ZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9j
a0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgp
IDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMzMyw3ICszMzgsNyBAQCB2b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9y
PFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25z
ZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3Ig
PSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsK
IAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0
Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCAzOTkwOWI5MzAzYTk0YzkzNjhlYWEwZjYyNWY0
YjY3ZTUyNTA1OWYxLi42Y2I5MTVjODUwMTU1OGYxMGJiOGZjNWIyZGE1MjgzNTA0MGYwZWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC01Miw4ICs1Miw4IEBA
IHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mIHN1cHBvcnRl
ZFNlc3Npb25UeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzOyB9
CiAgICAgdm9pZCBzZXRTdXBwb3J0ZWRTZXNzaW9uVHlwZXMoVmVjdG9yPE1lZGlhS2V5U2Vzc2lv
blR5cGU+JiYgdHlwZXMpIHsgbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXMgPSBXVEZNb3ZlKHR5cGVz
KTsgfQogCi0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZFJvYnVzdG5lc3MoKSBj
b25zdCB7IHJldHVybiBtX3N1cHBvcnRlZFJvYnVzdG5lc3M7IH0KLSAgICB2b2lkIHNldFN1cHBv
cnRlZFJvYnVzdG5lc3MoVmVjdG9yPFN0cmluZz4mJiByb2J1c3RuZXNzKSB7IG1fc3VwcG9ydGVk
Um9idXN0bmVzcyA9IFdURk1vdmUocm9idXN0bmVzcyk7IH0KKyAgICBjb25zdCBWZWN0b3I8QXRv
bVN0cmluZz4mIHN1cHBvcnRlZFJvYnVzdG5lc3MoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRl
ZFJvYnVzdG5lc3M7IH0KKyAgICB2b2lkIHNldFN1cHBvcnRlZFJvYnVzdG5lc3MoVmVjdG9yPFN0
cmluZz4mJik7CiAKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNS
ZXF1aXJlbWVudDsgfQogICAgIHZvaWQgc2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVt
ZW50KE1lZGlhS2V5c1JlcXVpcmVtZW50IHJlcXVpcmVtZW50KSB7IG1fZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50ID0gcmVxdWlyZW1lbnQ7IH0KQEAgLTkwLDcgKzkwLDcgQEAgcHJp
dmF0ZToKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBtX3BlcnNpc3RlbnRTdGF0ZVJlcXVpcmVt
ZW50IHsgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsIH07CiAgICAgVmVjdG9yPEF0b21T
dHJpbmc+IG1fc3VwcG9ydGVkRGF0YVR5cGVzOwogICAgIFZlY3RvcjxNZWRpYUtleVNlc3Npb25U
eXBlPiBtX3N1cHBvcnRlZFNlc3Npb25UeXBlczsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX3N1cHBv
cnRlZFJvYnVzdG5lc3M7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IG1fc3VwcG9ydGVkUm9idXN0
bmVzczsKICAgICBWZWN0b3I8TWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lPiBtX3N1cHBvcnRlZEVu
Y3J5cHRpb25TY2hlbWVzOwogICAgIGJvb2wgbV9yZWdpc3RlcmVkIHsgdHJ1ZSB9OwogICAgIGJv
b2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CkBAIC0xMDksMTEgKzEwOSwxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNb2NrQ0RNSW5zdGFuY2U7CiAKLSAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBmaW5h
bDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0
IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29u
ZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlw
ZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAg
IGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5
U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBm
aW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVx
dWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFL
ZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQg
cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNv
bnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwpAQCAtMTU3LDcg
KzE1Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYs
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBl
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZTY4NmM2
M2MxOGYzNTg2ZmZjYTc0ZTE3MzFjMGZmMjc3NDFiMGQzYi4uYzVhZjNiNWZiZTBjYWJiOGIyZGUz
MGQwODZkMzNhNGY3OTQ3OTE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdApAQCAtMTYsNiArMTYsMTAgQEAgJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4KKyQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMTA4LDYgKzExMiw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2
YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAxZmNmN2U0MTEwN2ZiM2Y3YmUyYmM2OTk5
MzY2YTA1ZjhlNjUwODI4Li5jNzNlMjg3M2Q5YmZjYTcxNDY2Yzk0NzMxMTNiOTAwMjYwYjUxNzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
QEAgLTEyOSw2ICsxMjksMjEgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlUHJv
eHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBs
aWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzUmVwbGllcy5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTBkMTcyNTU4NzVhMTZlYzZkM2U2YWZk
MjUwNmI1MTU1NzYzNTQwNC4uMmQwMDc1ODdhNDU4NjEzMDZmNDJkY2MzNTA4ZDY1Y2ZjYmU2MmVl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTQ2LDYgKzE0NiwxMSBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKICAg
ICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVDRE1Qcm94eSBc
CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAorICAgIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAogICAgIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCBhMzk0ZTA5NDMxZTAyNzY4ZmExMDc0N2NlY2YyYjkzZTlkZjkxNjI1
Li4zOTA5YmM4Njk1N2U2MGI0MmIyMzRmOWUzM2ZhMDNmYmJjMTRkOWMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC01OCwxMCArNTgsMTggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
LQogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eU1lc3Nh
Z2VzLmgiCisjZW5kaWYKKworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC0xODksNiArMTk3LDE3IEBAIExpYldlYlJUQ0NvZGVjc1Byb3h5JiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVDRE1GYWN0b3J5UHJveHkmIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSgpCit7CisgICAgaWYgKCFt
X2NkbUZhY3RvcnlQcm94eSkKKyAgICAgICAgbV9jZG1GYWN0b3J5UHJveHkgPSBtYWtlVW5pcXVl
PFJlbW90ZUNETUZhY3RvcnlQcm94eT4oKnRoaXMpOworCisgICAgcmV0dXJuICptX2NkbUZhY3Rv
cnlQcm94eTsKK30KKyNlbmRpZgorCisKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CkBAIC0yMzksNiArMjU4LDI3IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2Rt
RmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9u
LCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlQ0RN
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZh
Y3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlk
UmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiByZXBseUVuY29kZXIpCkBAIC0yNTksNiArMjk5LDI3IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyNlbmRpZgorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2Vi
UHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAg
IGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVBy
b3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
ciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5
UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRp
ZgogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNjksNyArMzMwLDcgQEAgY29uc3Qg
U3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYUNhY2hlRGlyZWN0b3J5KCkg
Y29uc3QKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRpYUNhY2hlRGlyZWN0b3J5KG1fc2Vz
c2lvbklEKTsKIH0KIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQog
Y29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDBlYzIzOGNkMDYyNTM4
MzQ3NTliZmU5NmJiYWUwYWRlYmIzNTFhN2UuLmYwMDAxY2U0OGFkMGU5YzBmNmYwZmNiZTBmZjNj
Zjg1YTE3NDEzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIEdQVVByb2Nlc3M7CiBjbGFzcyBMaWJXZWJSVENDb2RlY3NQcm94eTsKIGNsYXNz
IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90
ZUNETUZhY3RvcnlQcm94eTsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Owog
Y2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlcjsKQEAgLTc2LDYgKzc3LDEwIEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYgc2Vzc2lvbk1hbmFnZXIoKTsKIAorI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5
UHJveHkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsKIApAQCAtMTE4LDYgKzEyMywxMCBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENDb2RlY3NQcm94eT4gbV9saWJX
ZWJSVENDb2RlY3NQcm94eTsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI+IG1fc2Vzc2lvbk1hbmFnZXI7CisKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5
UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1GYWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUZhY3RvcnlQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjViNGFmZDRiNDM2Nzc3ZDFjNGQxM2Y4
NzBiNDRkZDJiMzY5ODExMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnlQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rp
b24pCit7Cit9CisKK1JlbW90ZUNETUZhY3RvcnlQcm94eTo6flJlbW90ZUNETUZhY3RvcnlQcm94
eSgpID0gZGVmYXVsdDsKKworc3RhdGljIENETUZhY3RvcnkqIGZhY3RvcnlGb3JLZXlTeXN0ZW0o
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RNRmFj
dG9yeTo6cmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgIGF1dG8gZm91bmRJbmRleCA9IGZhY3Rv
cmllcy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiBmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5LT5z
dXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pOyB9KTsKKyAgICBpZiAoZm91bmRJbmRleCA9PSBu
b3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhY3Rvcmllc1tm
b3VuZEluZGV4XTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1J
ZGVudGlmaWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sK
KyAgICBhdXRvIGZhY3RvcnkgPSBmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSk7CisgICAg
aWYgKCFmYWN0b3J5KSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RN
KGtleVN5c3RlbSk7CisgICAgaWYgKCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24o
eyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcm94eSA9IFJl
bW90ZUNETVByb3h5OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUocHJpdmF0ZUNE
TSkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90ZUNETUlkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gcHJveHktPmNv
bmZpZ3VyYXRpb24oKTsKKyAgICBhZGRQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5KSk7
CisgICAgY29tcGxldGlvbihXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVt
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5
c3RlbSkpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
Cit7CisgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRp
ZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkK
KyAgICAgICAgcHJveHktPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
fQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElk
ZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKKyAgICAgICAgaW5zdGFuY2UtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2
ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Np
b25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5n
ZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIu
ZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5j
ZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5
cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkp
CisgICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5
KFJlbW90ZUNETUlkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4m
JiBwcm94eSkKK3sKKyAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZCkpOworICAgIG1f
cHJveGllcy5zZXQoaWQsIFdURk1vdmUocHJveHkpKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OnJlbW92ZVByb3h5KFJlbW90ZUNETUlkZW50aWZpZXIgaWQpCit7CisgICAgQVNT
RVJUKG1fcHJveGllcy5jb250YWlucyhpZCkpOworICAgIG1fcHJveGllcy5yZW1vdmUoaWQpOwor
fQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkSW5zdGFuY2UoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eT4mJiBpbnN0YW5jZSkKK3sKKyAgICBBU1NFUlQoIW1faW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9pbnN0YW5jZXMuc2V0KGlkLCBXVEZNb3ZlKGluc3RhbmNlKSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1faW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7Cisg
ICAgbV9pbnN0YW5jZXMucmVtb3ZlKGlkKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSog
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXImIGlkKQoreworICAgIHJldHVybiBtX2luc3RhbmNlcy5nZXQoaWQpOworfQor
Cit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk+JiYgc2Vzc2lvbikKK3sKKyAgICBBU1NFUlQoIW1fc2Vzc2lvbnMuY29udGFp
bnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwgV1RGTW92ZShzZXNzaW9uKSk7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fc2Vzc2lvbnMuY29udGFp
bnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzliMWNjYzk1YmJkM2ZlM2I5ZjMzNTJkODUwMDI3N2E0YmZk
MzkzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OworY2xhc3MgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CitjbGFzcyBSZW1vdGVDRE1Qcm94eTsKK3N0cnVj
dCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJveHkg
ZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0b3J5UHJveHkoKTsKKworICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlBy
b2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVj
ZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY0NE
TU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiYmKTsKKyAgICB2b2lkIHJlbW92ZVByb3h5
KFJlbW90ZUNETUlkZW50aWZpZXIpOworCisgICAgdm9pZCBhZGRJbnN0YW5jZShSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5
PiYmKTsKKyAgICB2b2lkIHJlbW92ZUluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
cik7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSogZ2V0SW5zdGFuY2UoY29uc3QgUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyJik7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5PiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nl
c3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbCB7IH0K
KyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8g
TWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNvbmZp
Z3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAg
IEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVBy
b3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4+IG1faW5zdGFuY2VzOwor
ICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NDdjNWU2ZTYxYzQyMDc4MzFkYTBiZDExOGE2YWFlYjQwZDMzMTM2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZUNETShTdHJpbmcga2V5
U3lzdGVtKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0
OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3VzCisgICAg
U3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5j
aHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWQ5MjU0
NWI3ZmQwZDRkMzJmNTEyNDI1MWY4YjAwMTVjY2E5NThlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCkBA
IC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ0RNSW5zdGFuY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4g
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5PiYmIGZhY3RvcnksIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2KQoreworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiY+
KHsKKyAgICAgICAgcHJpdi0+a2V5U3lzdGVtKCksCisgICAgfSk7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlUHJveHk6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVmPENETUluc3Rh
bmNlPiYmIHByaXYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYg
Y29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwg
bV9pbnN0YW5jZShXVEZNb3ZlKHByaXYpKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUo
Y29uZmlndXJhdGlvbikpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlUHJveHk6On5SZW1vdGVD
RE1JbnN0YW5jZVByb3h5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJv
eHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5pbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikgPT0gQ0RNSW5zdGFuY2U6OlN1Y2Nl
ZWRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0RGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FsbG93ZWQoYm9vbCBhbGxvd2VkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5zZXREaXN0
aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChhbGxvd2VkKSA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vl
ZGVkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRQZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKGJvb2wgYWxsb3dlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9pbnN0YW5jZS0+c2V0UGVyc2lzdGVudFN0
YXRlQWxsb3dlZChhbGxvd2VkKSA9PSBDRE1JbnN0YW5jZTo6U3VjY2VlZGVkKTsKK30KKwordm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBjZXJ0aWZpY2F0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGlmICghY2VydGlmaWNhdGUuYnVmZmVyKCkp
IHsKKyAgICAgICAgY29tcGxldGlvbihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPnNldFNlcnZlckNlcnRpZmljYXRlKGNlcnRpZmlj
YXRlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCkpID09IENETUluc3RhbmNlOjpTdWNjZWVkZWQp
OworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFN0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPnNldFN0b3JhZ2VEaXJl
Y3RvcnkoZGlyZWN0b3J5KSA9PSBDRE1JbnN0YW5jZTo6U3VjY2VlZGVkKTsKK30KKwordm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGVTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYpPiYmIGNvbXBsZXRp
b24pCit7CisgICAgYXV0byBwcml2U2Vzc2lvbiA9IG1faW5zdGFuY2UtPmNyZWF0ZVNlc3Npb24o
KTsKKyAgICBpZiAoIXByaXZTZXNzaW9uIHx8ICFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY29tcGxl
dGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gaWRlbnRpZmllciA9
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0
byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZShtYWtlV2Vh
a1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBwcml2U2Vzc2lvbi5yZWxlYXNlTm9uTnVsbCgpLCBpZGVu
dGlmaWVyKTsKKyAgICBtX2ZhY3RvcnktPmFkZFNlc3Npb24oaWRlbnRpZmllciwgV1RGTW92ZShz
ZXNzaW9uKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQ
U3RhdHVzIHN0YXR1cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
KQoreworICAgIGNvbXBsZXRpb24obV9pbnN0YW5jZS0+c2V0SERDUFN0YXR1cyhzdGF0dXMpID09
IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOworfQorCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZGY2ZjExMTFmNzEyMDc0NjdjZjNjYmI3ODA3ZWVkODkxZDRhZWE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlUHJveHkuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2UuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBDRE1JbnN0YW5jZTsKK3N0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uOworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CisKK2Ns
YXNzIFJlbW90ZUNETUluc3RhbmNlUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
ICB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYsIFJlZjxXZWJD
b3JlOjpDRE1JbnN0YW5jZT4mJik7CisgICAgflJlbW90ZUNETUluc3RhbmNlUHJveHkoKTsKKwor
ICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorICAgIFdlYkNvcmU6OkNE
TUluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2U7IH0KKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJlbW90ZUNETUlu
c3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYsIFJlZjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bj4mJik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWwgeyB9CisgICAg
dm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIE1lc3Nh
Z2VzCisgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgc2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRQZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0U3RvcmFnZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyAgICB2b2lkIGNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYpOworICAgIHZvaWQgc2V0SERDUFN0
YXR1cyhXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9m
YWN0b3J5OworICAgIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBV
bmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247
CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOworfTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGQyMTk3NDY3ZDA5NjUzZjQwZDA3ZmU3OTVjMDZmOWQwNTQ3NjcwOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZVNlc3Npb24o
KSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKSBTeW5j
aHJvbm91cworICAgIEluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSAtPiAoYm9vbCBzdWNjZXNz
KSBTeW5jaHJvbm91cworICAgIFNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wg
YWxsb3dlZCkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKKyAgICBTZXRQZXJzaXN0ZW50
U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dlZCkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMK
KyAgICBTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
Y2VydGlmaWNhdGUpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAgU2V0U3RvcmFn
ZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5KSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91
cworICAgIFNldEhEQ1BTdGF0dXMoV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXMgc3Rh
dHVzKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4NTIxZDY4OGU4MGUwMWFhODQ1ZGQw
OTBiMjNjODhlMTE4Y2Y3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC0wLDAgKzEs
MTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjcmVh
dGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVmPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBzZXNzaW9uUHJveHkgPSBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+KG5ldyBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHNlc3Npb24pLCBpZGVu
dGlmaWVyKSk7CisgICAgYXV0byBjbGllbnQgPSBtYWtlV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb25DbGllbnQ+KHNlc3Npb25Qcm94eS5nZXQoKSk7CisgICAgc2Vzc2lvblByb3h5
LT5tX3Nlc3Npb24tPnNldENsaWVudChXVEZNb3ZlKGNsaWVudCkpOworICAgIHJldHVybiBzZXNz
aW9uUHJveHk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0
b3J5LCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fZmFjdG9yeShX
VEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK3sKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSgpCit7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
IHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBp
ZiAoIWluaXREYXRhLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCBlbXB0eVN0
cmluZygpLCBmYWxzZSwgZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9z
ZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZl
cigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0g
KFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKG1lc3Nh
Z2UpLCBzZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFyZXNwb25z
ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKHRydWUsIHsgfSwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
c2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsICpyZXNwb25zZS5idWZmZXIo
KSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoYm9vbCBzZXNzaW9uQ2xvc2Vk
LCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBrZXlTdGF0
dXNlcywgT3B0aW9uYWw8ZG91YmxlPiYmIGV4cGlyYXRpb25UaW1lLCBPcHRpb25hbDxDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbihzZXNzaW9u
Q2xvc2VkLCBXVEZNb3ZlKGtleVN0YXR1c2VzKSwgV1RGTW92ZShleHBpcmF0aW9uVGltZSksIFdU
Rk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRl
ZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6Omxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmln
aW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIG1fc2Vzc2lvbi0+
bG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklkLCBvcmlnaW4sIFtjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvblRpbWUsIE9w
dGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vz
c2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwgV1RGTW92ZShtZXNz
YWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkLCBmYWlsdXJl
KTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYm
IGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5jbG9zZVNlc3Npb24oc2Vzc2lvbklkLCBb
Y29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUgeyBjb21wbGV0aW9u
KCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVt
b3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5y
ZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShj
b21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3Rh
dHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEs
IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZXhwaXJlZFNl
c3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoZXhwaXJlZFNlc3Npb25zRGF0YSkKKyAg
ICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7CisgICAgICAgIGNv
bXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJlZFNlc3Npb25EYXRh
UmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsK
KyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c3RvcmVS
ZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQoreworICAgIG1fc2Vzc2lv
bi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYm
IGtleVN0YXR1c2VzKQoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAgIG1fZmFjdG9yeS0+
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3Rh
dHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlKQoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAgIG1fZmFjdG9yeS0+
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdlKHR5cGUsIFdURk1vdmUobWVzc2Fn
ZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQoreworICAgIGlm
IChtX2ZhY3RvcnkpCisgICAgICAgIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU4NDY0MDgzZGNh
YzNkN2FkNWQ1NGFlYjFjZmQwY2IyMzBiZDUwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBA
IC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNSW5zdGFuY2VTZXNzaW9uLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwcml2YXRlIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBSZWY8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSgpOwor
Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7CisgICAg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJv
eHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOworCisgICAgLy8gVHlwZXMKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7CisgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I7CisgICAg
dXNpbmcgTWVzc2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAg
ICB1c2luZyBTZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OlNlc3Npb25Mb2FkRmFpbHVyZTsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCwgYm9vbCk+OworICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVz
VmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wp
PjsKKyAgICB1c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9u
YWw8TWVzc2FnZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHVzaW5n
IFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0
YXR1c1ZlY3RvciYmLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYs
IGJvb2wpPjsKKyAgICB1c2luZyBTdG9yZVJlY29yZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPjsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJik7CisgICAgdm9pZCB1cGRh
dGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpOworICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBv
cmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVz
YWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKKworICAgIC8vIENETUluc3RhbmNlU2Vzc2lv
bkNsaWVudAorICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZp
bmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXNzaW9u
SWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1G
YWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uPiBtX3Nlc3Npb247CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMzNlZTljMzE1Y2YyODlmMjdmYWY3
MWEyY2RiM2JkNDlmYjExNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAg
LTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5IE5vdFJlZkNvdW50ZWQgeworCisgICAgUmVxdWVzdExpY2Vuc2UoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXREYXRh
VHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGluaXREYXRhKSAtPiAoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIFN0cmluZyBzZXNzaW9uSWQsIGJvb2wg
bmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisgICAgVXBkYXRl
TGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Okxp
Y2Vuc2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZXNwb25zZSkg
LT4gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNo
YW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1l
c3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBBc3luYworICAgIExvYWRTZXNzaW9uKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgU3RyaW5nIHNlc3Np
b25JZCwgU3RyaW5nIG9yaWdpbikgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiBjaGFu
Z2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGxvYWRGYWlsdXJlKSBBc3luYworICAg
IENsb3NlU2Vzc2lvbihTdHJpbmcgc2Vzc2lvbklkKSAtPiAoKSBBc3luYworICAgIFJlbW92ZVNl
c3Npb25EYXRhKFN0cmluZyBzZXNzaW9uSWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TGljZW5zZVR5cGUgdHlwZSkgLT4gKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBBc3luYworICAgIFN0b3JlUmVjb3JkT2ZL
ZXlVc2FnZShTdHJpbmcgc2Vzc2lvbklkKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZDgw
YmFhMzM3MDBhYjEyOTNlZjYyNzZmMGIyNjQzNzU5MDdlMTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC0wLDAg
KzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24u
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShXZWFrUHRy
PFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVmV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBSZW1vdGVDRE1Db25maWd1
cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLAorICAg
ICAgICBwcml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXNzaW9ucygp
CisgICAgfSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Qcml2YXRlJ3MgcHJpdmF0
ZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5
PihuZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2KSwgV1RG
TW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RNUHJv
eHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bmlxdWVf
cHRyPENETVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+
JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAg
ICwgbV9wcml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94
eSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9u
KG1fcHJpdmF0ZS0+c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9u
cyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBD
RE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5zdXBwb3J0c0Nv
bmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykp
OworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c3VwcG9ydHNTZXNz
aW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKHR5cGUsIGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9p
ZCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBkYXRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFkYXRhLmJ1ZmZlcigpKSB7
CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGNvbXBsZXRpb24obV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsICpkYXRhLmJ1ZmZl
cigpKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNS
ZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
LCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChDRE1SZXF1aXJlbWVudCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1f
cHJpdmF0ZS0+ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbmZpZ3VyYXRpb24s
IHJlc3RyaWN0aW9ucykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpwZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChDRE1SZXF1aXJlbWVudCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9u
KG1fcHJpdmF0ZS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVz
dHJpY3Rpb25zKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5kaXN0
aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbmZpZ3Vy
YXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNETUlu
c3RhbmNlQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gcHJpdmF0
ZUluc3RhbmNlID0gbV9wcml2YXRlLT5jcmVhdGVJbnN0YW5jZSgpOworICAgIGlmICghcHJpdmF0
ZUluc3RhbmNlIHx8ICFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBpbnN0YW5jZSA9IFJlbW90ZUNETUlu
c3RhbmNlUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBwcml2YXRl
SW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZpZ3VyYXRpb24oKTsK
KyAgICBtX2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1vdmUoaW5zdGFuY2Up
KTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwor
fQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAgbV9w
cml2YXRlLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgcmVz
cG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlJiYpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPnNhbml0
aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJv
eHk6OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBj
b21wbGV0aW9uKG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKSk7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZDBhYjkwNTU0ODZlN2M5NDZjYjVjMzMyOTg3NDI5ZjFl
NGFkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENETVByaXZh
dGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWlu
dDhfdDsKK2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Oworc3RydWN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zOworfQorCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Oworc3RydWN0IFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0
aW9uOworCitjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+
IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkNETVByaXZhdGU+JiYpOworICAgIH5SZW1vdGVDRE1Qcm94eSgpOworCisgICAg
Y29uc3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7CisgICAgUmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1v
dGVDRE1GYWN0b3J5UHJveHk+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRl
PiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4mJik7CisKKyAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBzdXBwb3J0c0Nv
bmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc3VwcG9ydHNDb25maWd1
cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3Ry
aWN0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQp
PiYmKTsKKyAgICB2b2lkIHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6
OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlv
bnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNETVJlcXVpcmVtZW50KT4mJik7
CisgICAgdm9pZCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xl
YXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZUluc3RhbmNlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLCBSZW1vdGVDRE1J
bnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUo
KTsKKyAgICB2b2lkIHNhbml0aXplUmVzcG9uc2UoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmJik+JiYpOworICAgIHZvaWQgc2FuaXRpemVTZXNzaW9uSWQoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPiYmKT4mJik7CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9mYWN0
b3J5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiBtX3ByaXZhdGU7
CisgICAgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY0ZTUzNTMx
YWU3NDRkMDQ1MTcxOTQxM2I0M2JmYWMxNTY4NDBiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQ0RNUHJveHkgTm90UmVm
Q291bnRlZCB7CisgICAgU3VwcG9ydHNDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3JlOjpDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIC0+IChib29sIHJlc3VsdCkgU3lu
Y2hyb25vdXMKKyAgICBTdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKHN0cnVj
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIHN0cnVj
dCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKSAtPiAoYm9vbCByZXN1bHQp
IFN5bmNocm9ub3VzCisgICAgU3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGVu
dW06dWludDhfdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSB0eXBlLCBzdHJ1Y3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSAtPiAoYm9vbCByZXN1bHQp
IFN5bmNocm9ub3VzCisgICAgU3VwcG9ydHNJbml0RGF0YShBdG9tU3RyaW5nIHR5cGUsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9u
b3VzCisgICAgRGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KHN0cnVjdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIHN0cnVjdCBXZWJDb3Jl
OjpDRE1SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKSAtPiAoZW51bTp1aW50OF90IFdlYkNvcmU6
OkNETVJlcXVpcmVtZW50IHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBQZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudChzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucykg
LT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCByZXN1bHQpIFN5bmNocm9u
b3VzCisgICAgRGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFy
YWJsZShzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlSW5zdGFuY2UoKSAt
PiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5jaHJvbm91
cworICAgIExvYWRBbmRJbml0aWFsaXplKCkKKyAgICBTYW5pdGl6ZVJlc3BvbnNlKElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZXNwb25zZSkgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU2FuaXRpemVTZXNzaW9uSWQoU3Ry
aW5nIHNlc3Npb25JZCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gcmVzdWx0KSBTeW5jaHJvbm91cwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA1ZWZlNjYyNWQ2ZjJmOTBhZGVkNzdk
OGM1NTk3ZGYzYzc4OGYzMWRiLi40ODE0NTg0NzUyYTEzYjBjZTg1MDM0ODk1ZGY5MTQxMDBjNWFh
NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgpAQCAtNDcs
NiArNDgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDkwLDE3ICs0
OTUsMTYgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRp
YVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotYm9vbCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50
OEFycmF5KikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoVWludDhBcnJheSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFs
c2U7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQoY29uc3QgU3RyaW5nJiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKQordm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNv
bnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgaW5pdERhdGEp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGluaXREYXRhLT5kYXRhKCkpLCBpbml0RGF0YS0+Ynl0ZUxlbmd0aCgp
KSksIG1faWQpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
V2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtNjgyLDYgKzY4NiwzNCBAQCB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmtleUFkZGVkKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VBdHRh
Y2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpbnN0YW5jZUlkKQoreworICAgIGlm
IChhdXRvKiBpbnN0YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKS5jZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0YW5jZUlkKSkKKyAgICAgICAg
bV9wbGF5ZXItPmNkbUluc3RhbmNlQXR0YWNoZWQoaW5zdGFuY2VQcm94eS0+aW5zdGFuY2UoKSk7
Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpbnN0YW5jZUlkKQoreworICAgIGlmIChhdXRv
KiBpbnN0YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5j
ZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0YW5jZUlkKSkKKyAgICAgICAgbV9wbGF5
ZXItPmNkbUluc3RhbmNlRGV0YWNoZWQoaW5zdGFuY2VQcm94eS0+aW5zdGFuY2UoKSk7Cit9CisK
K3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpbnN0YW5jZUlkKQoreworICAgIGlmIChh
dXRvKiBpbnN0YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KS5jZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0YW5jZUlkKSkKKyAgICAgICAgbV9w
bGF5ZXItPmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoaW5zdGFuY2VQcm94eS0+aW5zdGFu
Y2UoKSk7Cit9CisjZW5kaWYKKworCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91bGQpCit7CisgICAgbV9w
bGF5ZXItPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmJlZ2luU2ltdWxhdGVkSERDUEVycm9y
KCkKIHsKICAgICBtX3BsYXllci0+YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oCmluZGV4IDE2YmIyZGRmYTIxNDc0NzBlODYwMGFiNzEzOTZhNTljZGY1NDQ5ZmEuLjIwODk2
Yjk1NTU0ODEwYjVjY2ZkYzI1Y2FkNTZhNGQwYWE4Njk3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAt
NDYsNiArNDYsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKIH0K
QEAgLTEyNiw2ICsxMzEsMTYgQEAgcHVibGljOgogICAgIHZvaWQga2V5QWRkZWQoKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIGNkbUluc3RhbmNlQXR0
YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYpOworICAgIHZvaWQgY2RtSW5zdGFu
Y2VEZXRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7CisgICAgdm9pZCBhdHRl
bXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmKTsK
KyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisgICAgdm9pZCBzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVk
KGJvb2wpOworI2VuZGlmCisKICAgICB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCk7CiAg
ICAgdm9pZCBlbmRTaW11bGF0ZWRIRENQRXJyb3IoKTsKIApAQCAtMTY4LDcgKzE4Myw3IEBAIHBy
aXZhdGU6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikg
Y29uc3QgZmluYWw7Ci0gICAgYm9vbCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5Kikg
ZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7
CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
IGZpbmFsOwogI2VuZGlmCiAKQEAgLTI1Miw2ICsyNjcsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpMYXlvdXRSZWN0IG1fdmlkZW9Db250ZW50Qm94UmVjdDsKICAgICBmbG9hdCBtX3ZpZGVv
Q29udGVudFNjYWxlIHsgMS4wIH07CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBib29sIG1fc2hvdWxkQ29udGludWVB
ZnRlcktleU5lZWRlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgIGNvbnN0IExvZ2dlciYgbV9sb2dnZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggY2E2NjMxNGRmYmU2ZDMxYmUwOTk1MmM1ZjI4MmYxMDYx
OGZlYmViYS4uMjlkMjg2OWMxNjQyZDhmYzI2NmU4OTFjYjYxOGU0ODI0YjBiMjI5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTczLDkgKzczLDE2IEBAIG1lc3NhZ2Vz
IC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgIyBTZXRDRE1TZXNzaW9uCiAgICAgS2V5QWRkZWQo
KQotICAgICMgQ2RtSW5zdGFuY2VBdHRhY2hlZAotICAgICMgQ2RtSW5zdGFuY2VEZXRhY2hlZAot
ICAgICMgQXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZQorI2VuZGlmCisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorICAgIENkbUluc3RhbmNlQXR0YWNoZWQoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyAgICBDZG1JbnN0YW5jZURldGFjaGVk
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisgICAgQXR0
ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRp
ZmllciBpbnN0YW5jZUlkKQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBTZXRTaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQogI2VuZGlmCiAKICAgICBCZWdpblNpbXVsYXRlZEhE
Q1BFcnJvcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXgg
NjcyYmVjNDhlYTc5YzY4MmMxMjQ1ZTUyNmYwNDg4YzY3OTk2ODBiNy4uNTNhODA3ODE3YjJhNmIx
ZGRmNTEzNDU4NmVmMmU3MTAyZjY4MjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmNwcApAQCAtMTQ5LDEzICsxNDksMTMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBi
b28KICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNl
aXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgaWYgKG1faXNEb25lKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NF
UlQoIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIHNlbmRUb0NsaWVudChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0sIGVuY29kZWREYXRhTGVu
Z3RoIH0pOworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZFJlY2VpdmVEYXRhIHsgZGF0YSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmIGZvcm1EYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmgKaW5kZXggZDMzY2JmZjEwODljYzEwNWRkMWEwMGJlYmZkZjYxZDMzYzdmNjZiZC4uNTA4MDBm
MzUwMjIzNjJmOTZjYTIxYjVlN2ViZDA3ZDhkNDJhMmRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERhdGFSZWZl
cmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsK
IGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SGFuZGxlTWVzc2FnZS5oCmluZGV4IGE3NDlhYWI4NzAwNTRjZWI2OTBlNWYxNGY0MDc1NjNmZmNk
MGY5YjguLjg4ZjRmMmZhNjQyNjMzNDliN2FkMjJkMDZmNDNhMjdmNzIzMzUxYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTk2LDEyICs5Niw2IEBA
IHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3Rk
OjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9OwogCi1jbGFzcyBEYXRhUmVmZXJlbmNl
OwotY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKLXRlbXBsYXRlPD4gc3RydWN0IENv
ZGluZ1R5cGU8Y29uc3QgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSY+IHsKLSAgICB0eXBlZGVm
IERhdGFSZWZlcmVuY2UgVHlwZTsKLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFRzPgogc3Ry
dWN0IENvZGluZ1R5cGU8c3RkOjp0dXBsZTxUcy4uLj4+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8dHlwZW5hbWUgQ29kaW5nVHlwZTxUcz46OlR5cGUuLi4+IFR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5k
ZXggZGFkNDY2MDQ2MzJlOTI2OWYxOTFkMTVjODBkZDIxMWU1NDg0ZTdhMy4uYmZiMzM5NTc2OTZm
MmU3MmEyMzQ4MjM0MjI1MmI3MmJkNzk0MjgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAtMjUsNDAgKzI1
LDUxIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiAKIGNsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgeworICAgIH0KKyAgICBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKKyAgICB7CisgICAgfQogICAgIFNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAg
IDogbV9kYXRhKGJ1ZmZlcikgeyB9Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKLSAgICAgICAgOiBtX2RhdGEoc3RkOjptYWtl
X3BhaXIoZGF0YSwgc2l6ZSkpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpCisgICAgeworICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZl
cik7CisgICAgfQorCisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisKKyAgICBjb25zdCBj
aGFyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDog
bnVsbHB0cjsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIAogICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewotICAgICAgICBzd2l0Y2hPbihtX2Rh
dGEsCi0gICAgICAgICAgICBbZW5jb2RlciA9ICZlbmNvZGVyXSAoY29uc3QgUmVmPGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAg
dWludDY0X3QgYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICAgICAgICAgIGVu
Y29kZXItPnJlc2VydmUoYnVmZmVyU2l6ZSArIHNpemVvZih1aW50NjRfdCkpOwotICAgICAgICAg
ICAgICAgICplbmNvZGVyIDw8IGJ1ZmZlclNpemU7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgICAgICAgICBlbmNv
ZGVyLT5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZWxlbWVudC5zZWdtZW50LT5kYXRhKCkpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7
Ci0gICAgICAgICAgICB9LCBbZW5jb2RlciA9ICZlbmNvZGVyXSAoY29uc3Qgc3RkOjpwYWlyPGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3Q+JiBwYWlyKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICB1
aW50NjRfdCBidWZmZXJTaXplID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgZW5jb2Rl
ci0+cmVzZXJ2ZShidWZmZXJTaXplICsgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgICAgICAgICAg
ICAgKmVuY29kZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNv
ZGVGaXhlZExlbmd0aERhdGEocGFpci5maXJzdCwgcGFpci5zZWNvbmQsIDEpOwotICAgICAgICAg
ICAgfQotICAgICAgICApOworICAgICAgICBlbmNvZGVyIDw8IG1fYnVmZmVyOworICAgIH0KKwor
ICAgIHN0YXRpYyBPcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiBidWZmZXI7CisgICAgICAgIGRlY29kZXIgPj4gYnVmZmVyOworICAgICAg
ICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiB7IFdURk1vdmUoKmJ1ZmZlcikgfTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVmFy
aWFudDxzdGQ6OnBhaXI8Y29uc3QgdWludDhfdCosIHNpemVfdD4sIFJlZjxjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiBtX2RhdGE7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQppbmRleCAyNjA0OTBmYjdiNTZhODhjZmYwZDliODljMWE3MTY4YWVkMGQxODVjLi43MTY0
YzM3MzQzMTAxZmVmMGMzZDVmMGRiNjdjNTJjZDYxOGI1ZTllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIyNyw2ICsyMjcsOSBAQCBkZWYgdHlwZXNfdGhh
dF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpNRE5TUmVn
aXN0ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVy
JywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllcicsCisgICAgICAgICdXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXInLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOGM5ZmEy
MWFmMzhhNzE2MmM2YzIwOWU5Mzk0Njg5MDZhMjVjM2NhMy4uZDJkZWU5ZmI2ZDEwMDhiNGU1ODI1
OTIxYjIyMWYyOWFhNmU5MzQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMzQsNyArMTM0LDggQEAgc3RhdGljIHZvaWQgZW5jb2Rl
U2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCi1zdGF0aWMgYm9vbCBkZWNvZGVTaGFyZWRC
dWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3Rl
bXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+IGNsYXNzIFI+CitzdGF0aWMgYm9vbCBkZWNv
ZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CiB7CiAgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IDA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShidWZmZXJTaXplKSkKQEAgLTMyMDMsNCArMzIwNCw3MyBAQCBPcHRpb25hbDxTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBs
YXRmbwogfQogI2VuZGlmCiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2FnZSkKK3sKKyAgICBlbmNvZGVyIDw8IG1l
c3NhZ2UuZmlyc3Q7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1l
c3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOworfQor
CitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZVR5cGUgdHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIG1ha2VPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2U+KHsgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgfSk7
Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3Rvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMpCit7CisgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oa2V5U3RhdHVzZXMuc2l6ZSgpKTsKKyAg
ICBmb3IgKGF1dG8mIGtleVN0YXR1cyA6IGtleVN0YXR1c2VzKSB7CisgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleSA9IGtleVN0YXR1cy5maXJzdC5jb3B5UmVmKCk7CisgICAgICAgIGVu
Y29kZXIgPDwga2V5IDw8IGtleVN0YXR1cy5zZWNvbmQ7CisgICAgfQorfQorCitPcHRpb25hbDxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVz
ZXM7CisgICAga2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRhU2l6ZSk7CisK
KyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7ICsraSkgeworICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5
KSB8fCAha2V5KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1cyBzdGF0dXM7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICAgICAga2V5U3RhdHVzZXMudW5jaGVja2VkQXBwZW5kKHsga2V5LnJl
bGVhc2VOb25OdWxsKCksIHN0YXR1cyB9KTsKKyAgICB9CisgICAgcmV0dXJuIGtleVN0YXR1c2Vz
OworfQorI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKIH0gLy8gbmFtZXNwYWNl
IElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCBlMzgxNGUyMWY4MzM2YWFmMmY0NDQzMjMyZTM0NGUwMDc0ZGFlMmExLi44MTAwYzkyNDNmYWRi
ODc2MWM2ZTMxN2VhM2VmMzRiMDhhMWYyZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTUsNiArNTUsMTEgQEAKICNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQWRkaXRpb25zLmg+CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5j
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0
OwpAQCAtMTAwLDYgKzEwNSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbjsKIGNsYXNz
IFN0ZXBzVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHM7CkBAIC04MjksNiArODM1LDIzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiB7CiB9OwogI2VuZGlm
CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJik7
CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzVmVjdG9yJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBkZWNvZGUoRGVjb2RlciYpOworfTsK
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC05NjUs
NCArOTg4LDI4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V1RGTG9nTGV2ZWw+IHsK
ICAgICA+OwogfTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2Fk
RmFpbHVyZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlLAorICAgIFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lLAorICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb1Nlc3Npb25EYXRhLAor
ICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNt
YXRjaGVkU2Vzc2lvblR5cGUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNz
aW9uTG9hZEZhaWx1cmU6OlF1b3RhRXhjZWVkZWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVyCisgICAgPjsKK307CisKK3RlbXBsYXRl
IDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzPiB7
CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2U6OkhEQ1BTdGF0dXMsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlVu
a25vd24sCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlZhbGlkLAorICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpPdXRwdXREb3duc2NhbGVkCisgICAg
PjsKK307CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGE1
ZDBiZTE0MjcxZjYzMDZmODM2YjhmZGJkN2Q0MjBmMjk1MjQ2ZWEuLmVmMTFiMDgxMDI2Nzg4NmE2
NmE2NzkzMTA0YjAxMzRiMGEwZGQxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzEsNiArMzEsMTAgQEAg
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnlQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5jcHAKQEAgLTM5LDYgKzQzLDcgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAKIAorCiBO
ZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTUzNCw2ICs1MzksMTAgQEAgV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlv
VHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAKK1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1F
VHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggNzg5N2UyOGUzYzhjYTIyNzQ1MWZkNTc0MWY3ZGQx
NTVjYzdkZTE1Zi4uMzQzYmExYjEwMzczMjQyNWI2MDI3N2U4ZjU4MTBmMTdkODFhYWI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlNh
ZmVCcm93c2luZ1NQSS5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgorI2ltcG9y
dCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2Vz
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKQEAgLTE4MywxMyArMTg0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmFnQ2Fy
ZXRSZWN0KGNvbnN0IEludFJlY3QmIGRyYWdDYXJldFJlY3QpCiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFj
aG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRhY2htZW50LCBjb25zdCBTdHJpbmcmIHBy
ZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2Up
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6
QXR0YWNobWVudD4mJiBhdHRhY2htZW50LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1l
LCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCiB7
CiAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgp
LCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMo
W3BhZ2VDbGllbnQoKS5hbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpXSk7CisgICAg
YXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW3BhZ2VDbGllbnQoKS5hbGxvY0ZpbGVXcmFwcGVy
SW5zdGFuY2UoKSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YVJlZmVyZW5jZS5idWZm
ZXIoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKV0pOwogICAgIFtmaWxlV3JhcHBlciBz
ZXRQcmVmZXJyZWRGaWxlbmFtZTpwcmVmZXJyZWRGaWxlTmFtZV07CiAgICAgYXR0YWNobWVudC0+
c2V0RmlsZVdyYXBwZXIoZmlsZVdyYXBwZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjk3MWY5NmY0ZGY4M2ViZjUwNWIyZGRjNGFlMjdl
NmNhN2Q1Y2M3NS4uMGZiZjAzNTIyZTVlZjk1YWQyN2ZjNTUxOWQ4ZjZmMGZlMTkxNTI1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02OTA2LDEzICs2OTA2
LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJh
Y2soY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tz
LnRha2U8RGF0YUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZh
bHVlKEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNl
LnNpemUoKSkucHRyKCkpOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJu
VmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSkucHRyKCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Ym9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCkBAIC05MDgxLDcgKzkwODEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJh
YwogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihD
YWxsYmFja0lEIGNhbGxiYWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIGRh
dGFDYWxsYmFjayhkYXRhLCBjYWxsYmFja0lEKTsKIH0KQEAgLTkzMTIsNyArOTMxMiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0
dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRl
QXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQu
ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVu
dC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21E
YXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBJZGVu
dGlmaWVyVG9BdHRhY2htZW50TWFwOjppc1ZhbGlkS2V5KGlkZW50aWZpZXIpKTsKIApAQCAtOTQx
OSw3ICs5NDE5LDcgQEAgV2ViUGFnZVByb3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyBXZWJQYWdlUHJveHk6OndpbGxVcGRhdGVBdHRhY2htZW4KIAogI2lmICFQTEFURk9STShD
T0NPQSkKIAotdm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJl
ZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVm
PEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCBiMzE1NDU0OGEwOGI1ODhkZmIzNDYyNjFiYzdkZTNkYmI3NTRmNmNmLi5mMzMy
YzVkMjBkYmE4ZjFkYWYyNzNiMGM2ZjFlNWM4YjJiZmRlNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTkzLDYgKzE5Myw3IEBAIGVudW0gY2xhc3MgSW5zcGVj
dG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3Q7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERlY29kZXI7
CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1MDEsNyArMTUwMiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogCiAgICAgdm9pZCBnZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgV2ViS2l0OjpDYWxs
YmFja0lEKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0lj
b24oV2ViS2l0OjpDYWxsYmFja0lELCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UmKTsKIAogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCBmb2N1c2VkKTsKICAgICB2b2lkIHNldFdp
bmRvd0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwpAQCAtMjAwNSw3ICsyMDA2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBl
LCBib29sIGhhbmRsZWQpOwogCiAgICAgdm9pZCB2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Ci0g
ICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBib29sQ2FsbGJhY2so
Ym9vbCByZXN1bHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3Qg
U3RyaW5nJiwgQ2FsbGJhY2tJRCk7CkBAIC0yMTgzLDEyICsyMTg0LDEyIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdG9wQWxsVVJMU2NoZW1lVGFza3MoV2ViUHJvY2Vzc1Byb3h5KiA9IG51bGxwdHIp
OwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9t
RGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UmKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRmlsZVBhdGgo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRh
KFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwogICAgIHZvaWQg
Y2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHRvSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2ht
ZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5h
bWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgcGxhdGZvcm1SZWdpc3Rl
ckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiBwcmVmZXJy
ZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAgICAg
dm9pZCBwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHBsYXRmb3JtQ2xvbmVBdHRhY2htZW50
KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgZnJvbUF0dGFjaG1lbnQsIFJlZjxBUEk6OkF0dGFjaG1l
bnQ+JiYgdG9BdHRhY2htZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGUzOWRjMjViYmQ4ZjhiMTVkNjY4MThmNmQ2ZDgy
YTNiNTY5OTk0OTIuLmE1ZTZmOTY1MTFlNTBhODE0M2RiNmYyYWQzZTI2NGU5MmI5YWFhZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
QEAgLTUzMCw3ICs1MzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpCiAKICAgICBHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHN0cnVj
dCBXZWJDb3JlOjpMaW5rSWNvbiBpY29uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
LSAgICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YSk7CisgICAgRmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRh
dGEpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDJjY2ZiNjVhODRhMjdjZmJlNzY1YmY3NWI5MTZjNjUzMTIzZjYzMjQuLmRkMjhlYmUwOTQx
MTVmNTZkZWJlZTgxMWRhOGEyMzU0MWY0NTE3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5NSw2ICsxNjk1LDcgQEAKIAkJQ0Qx
OUQyRUEyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxOUQyRTgyMDQ2
NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMjg2NUVFMjI1NTU2MjAw
MDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQ
cm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2
QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVEMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gKi87IH07CisJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0Ez
NSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0NjYxODEyNDAxMDU2NDAw
NDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCUNENDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFC
MDYxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi87IH07CiAJ
CUNENDkxQjBEMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDQ5MUIwQjFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwRTFFNzMyRTREMDAwMDkwNjYgLyog
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEMxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTE3MTcsNiArMTcxOCwyMCBA
QAogCQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTI5QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oICovOyB9OwogCQlDREE5M0RCMDIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNj
cmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxz
Y3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyog
RnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkg
LyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi87IH07CisJCUNE
QUMyMEI0MjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCMjIzRkI1OEYy
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovOyB9OworCQlDREFDMjBDMzIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCNjIzRkMyRjczMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMEM0
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlLmggKi87IH07CisJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFD
MjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi87IH07CisJCUNEQUMyMEM5MjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQzIzRkMy
Rjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovOyB9
OworCQlDREFDMjBDQTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBC
RDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IH07CisJ
CUNEQUMyMENEMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMDIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovOyB9OworCQlDREFDMjBDRTIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi87IH07CisJCUNEQUMyMENGMjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEYyMjNGQzM4M0EwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlD
REFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBFQzIzRkMzODM4MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OworCQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVl
blN0YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICov
OyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
aCAqLzsgfTsKIAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ1MTFDQkM0
ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKQEAgLTQ5NDUsNiArNDk2MCwxMCBA
QAogCQlDRDE5RDJFOTIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlz
dGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5j
cHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcg
LyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUYXNr
U3RhdGVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFRDIy
NTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODAyNDAxMDU2NDAw
NDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0
OTFCMDUxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5
MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNENDkxQjBBMUU3MzJEMTIwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5ODYsNiArNTAwNSw0MyBAQAogCQlD
REEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5U
b3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNj
cmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1
cmlzdGljUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hT
ZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjA3ODIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBBRTIzRkI1
ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjEyM0ZC
NThFMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMzIzRkI1OEYyMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjcyM0ZDMkY3MzAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlQ0RNRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQkUyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCRjIzRkMyRjc1
MDAyMURFRTMgLyogUmVtb3RlQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMy
MEMwMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRDIzRkMzODM4MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3Nh
Z2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVFMjNGQzM4MzkwMDIx
REVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBs
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVGMjNGQzM4MzkwMDIx
REVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAv
KiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUz
IC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMzIzRkMzODNB
MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJl
bW90ZUNETVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBwYXRoID0gaW9z
L2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQzI4MzFDMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1Zp
ZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHBh
dGggPSBpb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBDRk5ldHdvcmsu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3JrOyBwYXRoID0g
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTUyNjYsNiArNTMyMiwyMCBAQAogCQkJCTA3OTIzMTMy
MjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkw
N0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3Nh
Z2VzLmluICovLAogCQkJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkYyM0ZDMkY3NTAwMjFERUUz
IC8qIFJlbW90ZUNETS5jcHAgKi8sCisJCQkJQ0RBQzIwQkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJl
bW90ZUNETS5oICovLAorCQkJCUNEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1D
b25maWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90
ZUNETUZhY3RvcnkuY3BwICovLAorCQkJCUNEQUMyMEMwMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5LmggKi8sCisJCQkJQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBCQjIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2UuY3BwICovLAorCQkJCUNEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZS5oICovLAorCQkJCUNEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQlDREFDMjBCNjIzRkMyRjcz
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIw
QkUyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8sCisJ
CQkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
ICovLAorCQkJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLywKIAkJCQkwN0I5M0ZGNTIzQUYw
Q0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJ
MDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAg
Ki8sCiAJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5oICovLApAQCAtNTI5MSw2ICs1MzYxLDE4IEBACiAJCQkJMUQwRUNFQTkyM0ZDODRCQjAw
RDE3MkY2IC8qIGNvY29hICovLAogCQkJCTA3MUJDNTdFMjNDQTVEQjEwMDY4MEQ3QyAvKiBSZW1v
dGVBdWRpb1RyYWNrUHJveHkuY3BwICovLAogCQkJCTA3MUJDNTdGMjNDQTVEQjEwMDY4MEQ3QyAv
KiBSZW1vdGVBdWRpb1RyYWNrUHJveHkuaCAqLywKKwkJCQlDREFDMjA3OTIzRkIxRTIxMDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjA3ODIzRkIxRTIx
MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggKi8sCisJCQkJQ0RBQzIwN0MyM0ZC
MUVGOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJ
CQlDREFDMjBCMzIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAg
Ki8sCisJCQkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJv
eHkuaCAqLywKKwkJCQlDREFDMjBCMTIzRkI1OEUyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBBRjIzRkI1ODJCMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEFFMjNGQjU4
MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oICovLAorCQkJCUNE
QUMyMEFEMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RN
UHJveHkuY3BwICovLAorCQkJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Q
cm94eS5oICovLAorCQkJCUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94
eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTA3MjVFRkFDMjM5QUUzODUwMEE1
MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovLAogCQkJCTA3MjVFRkFC
MjM5QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbiAqLywKQEAgLTk2MjUsNiArOTcwNywyMSBAQAogCQkJCTFBMDQzQjVDMTI0RDVFOUQwMEZG
QkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTFBOEVGQTZFMTI1
MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJ
MUE4RUZBNkYxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZXMuaCAqLywKKwkJ
CQlDREFDMjBGMjIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBGMzIzRkMzODNBMDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBFRTIzRkMzODM5MDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RB
QzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAorCQkJCUNEQUMyMEVCMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGNjIzRkMzODNCMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNENDY2
MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAorCQkJCUNENDY2MTgyMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oICovLAorCQkJCUNENDY2MTgwMjQwMTA1NjQwMDQ3Q0Ez
NSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlD
REFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQUMyMEVEMjNGQzM4MzgwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjEy
M0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNS
ZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBGNDIzRkMzODNBMDAyMURFRTMg
LyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYwMjNGQzM4MzkwMDIx
REVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTBGRjI0QTJC
MTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMDc5MjMxNDMyMzlD
QkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCkBAIC0xMDUyNCw2ICsxMDYyMSwxNiBAQAogCQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgy
QzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUU2
ODg3MDFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdGRDMxODIyMkIzNTE1RTAwOEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8q
IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENEMjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQlD
REFDMjBDRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0RBQzIwQzQyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDMzIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzkyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2
IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFCMTZBRUExNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBp
biBIZWFkZXJzICovLApAQCAtMTIyMjAsNiArMTIzMjcsMTEgQEAKIAkJCQlDMTVDQkIzNzIzRjM3
RUNCMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQ1NEMzMUIyMTJGNERBNjAwNDlDMTc0IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9i
c2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDQ2NjE4MzI0MDEwQTY3MDA0
N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRBMkQxODc5
RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5RTAwMjVBODhEIC8q
IFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwCmluZGV4IDNmNWI2MTgxZTA2ZTBhODQ2ODhiZGE5MTZmMTBkODdhNjFk
MTRiZTcuLjkyZmY3N2ViYzc3MzNhNTFmYjE3YzdhNzYzYzc2ODc2YzYyYWVjZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
V2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1N0cmluZ1JlZlByaXZhdGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFx
dWVKU1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4ZGZmNTBmMzA4OGVkNDVjNTkwZWM4MWUyYzA5
YTEzOGJhN2E1MzVmLi5jNjAyNGNhZDlhOTU3NDJiZjdkNjJiMTkyNjlhN2NiNjZjZjA3MjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5o
IgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC00
NCw2ICs0NiwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRl
ICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwMSw2ICsxMDcsMTIg
QEAgdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCktPmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2
ZjYzYjIzMGY2MjdkMTJjYzZlYzNlZjdkZDZjZTZhZDEyOTdhYTZhLi4zMzBkMjZkYWEyMDRkY2E0
MTdjYmI5MjhmODljNjZkMmUxYWE0OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
CkBAIC00OSw2ICs0OSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVkaWE7CkBA
IC0xMTYsMTggKzEyMCwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjbwogICAgIGlmICh1cmwu
aXNMb2NhbEZpbGUoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxl
OwogICAgICAgICBhdXRvIGZpbGVTeXN0ZW1QYXRoID0gdXJsLmZpbGVTeXN0ZW1QYXRoKCk7Ci0g
ICAgICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IGZhbHNlOwogCisgICAgICAgIGF1dG8gY3Jl
YXRlRXh0ZW5zaW9uID0gWyZdIHsKICNpZiBIQVZFKFNBTkRCT1hfSVNTVUVfUkVBRF9FWFRFTlNJ
T05fVE9fUFJPQ0VTU19CWV9BVURJVF9UT0tFTikKLSAgICAgICAgYXV0byBhdWRpdFRva2VuID0g
bV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpOwotICAgICAgICBB
U1NFUlQoYXVkaXRUb2tlbik7Ci0gICAgICAgIGlmIChhdWRpdFRva2VuKQotICAgICAgICAgICAg
Y3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRC
eUF1ZGl0VG9rZW4oZmlsZVN5c3RlbVBhdGgsIGF1ZGl0VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsK
LSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKGF1dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdl
ci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihm
aWxlU3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpLCBoYW5kbGUpOworICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKLSAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlU3lzdGVtUGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGhhbmRsZSk7CisgICAgICAgICAgICByZXR1cm4gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVTeXN0ZW1QYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKTsKKyAgICAgICAgfTsKIAotICAgICAgICBpZiAo
IWNyZWF0ZWRFeHRlbnNpb24pIHsKKyAgICAgICAgaWYgKCFjcmVhdGVFeHRlbnNpb24oKSkgewog
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUgdG8gY3JlYXRlIHNhbmRib3ggZXh0ZW5z
aW9uIGhhbmRsZSBmb3IgR1BVUHJvY2VzcyB1cmwuXG4iKTsKICAgICAgICAgICAgIG1fY2FjaGVk
U3RhdGUubmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJy
b3I7CiAgICAgICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwpAQCAtODk5
LDE5ICs5MDIsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJikKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJiBp
bnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1J
bnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFuY2VBdHRhY2hlZChkb3duY2FzdDxSZW1v
dGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5j
ZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChD
RE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAo
aXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNkbUluc3RhbmNlRGV0YWNoZWQo
ZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lk
KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRX
aXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNlPihpbnN0
YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpBdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKGRvd25jYXN0PFJlbW90ZUNE
TUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC05MTksNiAr
OTI1LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5Q2hh
bmdlZCgpCiAgICAgbV9wbGF5ZXItPndhaXRpbmdGb3JLZXlDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChj
b25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEp
Cit7CisgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoaW5pdERh
dGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpOworICAgIG1fcGxheWVyLT5pbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGFCdWZmZXIpKTsK
K30KKwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXkoKSBjb25z
dAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC05MjYsNiArOTM4LDEzIEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QKIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkQ29udGludWVB
ZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0U2hvdWxkQ29udGludWVBZnRlcktleU5l
ZWRlZChzaG91bGQpLCBtX2lkKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24oKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggMTMyZjMw
YWIyOWI2ZTUwOWYxMTM5NDkyNTgwYTZlMzY3MWNjNzkwOS4uZmUyOTMxODBlZGI5NWMyM2E3NjM0
N2YxMzBhN2M0NmM0YjhkMDRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0xMzIs
NiArMTMyLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2
b2lkIHdhaXRpbmdGb3JLZXlDaGFuZ2VkKCk7CisgICAgdm9pZCBpbml0aWFsaXphdGlvbkRhdGFF
bmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBJUEM6OkRhdGFSZWZlcmVuY2UmJik7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC0zMTcsNiArMzE4LDEw
IEBAIHByaXZhdGU6CiAgICAgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgZmluYWw7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29s
KSBmaW5hbDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGJvb2wgcmVx
dWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6VGV4dFRyYWNrUmVwcmVzZW50YXRpb24q
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KaW5k
ZXggZTg4OTdiNmExMGExMGQ0YjcwMDkyOThjN2FhMjcyOGJmZTExMjk3YS4uMzNlMmE5OGQ0Nzk4
NzlkMjE1YjRkMDQxYWZlN2FiNTBlODM2MmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTc1LDYgKzc1LDcgQEAgbWVzc2FnZXMgLT4gTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKICAgICBXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCisgICAgSW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlIGlu
aXREYXRhKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc1YjVkYWE4YTI5YmNkOThlNjI3MDkzMTc1YzlmNzA2NWI5YTcwYTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TS5jcHAKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NETVJlc3RyaWN0aW9ucy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4gUmVt
b3RlQ0RNOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90
ZUNETUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRp
b24pCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+KG5ldyBSZW1vdGVD
RE0oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikp
KTsKK30KKworUmVtb3RlQ0RNOjpSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYm
IGZhY3RvcnksIFJlbW90ZUNETUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAg
ICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitib29sIFJlbW90ZUNETTo6c3VwcG9ydHNDb25m
aWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
IGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJvb2wgc3VwcG9ydHMgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5
OjpTdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVD
RE1Qcm94eTo6U3VwcG9ydHNDb25maWd1cmF0aW9uOjpSZXBseShzdXBwb3J0cyksIG1faWRlbnRp
Zmllcik7CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitib29sIFJlbW90ZUNETTo6c3VwcG9y
dHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9u
cykgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYm9vbCBzdXBwb3J0cyB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJv
eHk6OlN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uZmlndXJhdGlvbiwg
cmVzdHJpY3Rpb25zKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c0NvbmZpZ3Vy
YXRpb25XaXRoUmVzdHJpY3Rpb25zOjpSZXBseShzdXBwb3J0cyksIG1faWRlbnRpZmllcik7Cisg
ICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitib29sIFJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9u
VHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiB0eXBlLCBjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAoreworICAgIGlm
ICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1cHBvcnRz
IHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNTZXNzaW9u
VHlwZVdpdGhDb25maWd1cmF0aW9uKHR5cGUsIGNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVt
b3RlQ0RNUHJveHk6OlN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbjo6UmVwbHko
c3VwcG9ydHMpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0czsKK30KKworYm9v
bCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAoreworICAgIGlmICghbV9mYWN0
b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5z
dXBwb3J0ZWRJbml0RGF0YVR5cGVzLmNvbnRhaW5zKHR5cGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBib29sIHN1cHBvcnRzIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVD
RE1Qcm94eTo6U3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKSwgTWVzc2FnZXM6OlJlbW90ZUNE
TVByb3h5OjpTdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb246OlJlcGx5KHN1cHBv
cnRzKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK0NETVJlcXVp
cmVtZW50IFJlbW90ZUNETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IENETVJlc3Ry
aWN0aW9ucyYgcmVzdHJpY3Rpb25zKSBjb25zdAoreworICAgIENETVJlcXVpcmVtZW50IHJlcXVp
cmVtZW50IHsgQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQgfTsKKyAgICBpZiAoIW1fZmFjdG9y
eSkKKyAgICAgICAgcmV0dXJuIHJlcXVpcmVtZW50OworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6OkRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25maWd1cmF0aW9uLCBy
ZXN0cmljdGlvbnMpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudDo6UmVwbHkocmVxdWlyZW1lbnQpLCBtX2lkZW50aWZpZXIpOworICAg
IHJldHVybiByZXF1aXJlbWVudDsKK30KKworQ0RNUmVxdWlyZW1lbnQgUmVtb3RlQ0RNOjpwZXJz
aXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QK
K3sKKyAgICBDRE1SZXF1aXJlbWVudCByZXF1aXJlbWVudCB7IENETVJlcXVpcmVtZW50OjpOb3RB
bGxvd2VkIH07CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiByZXF1aXJlbWVu
dDsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpQZXJzaXN0ZW50U3RhdGVSZXF1aXJl
bWVudChjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJv
eHk6OlBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50OjpSZXBseShyZXF1aXJlbWVudCksIG1faWRl
bnRpZmllcik7CisgICAgcmV0dXJuIHJlcXVpcmVtZW50OworfQorCitib29sIFJlbW90ZUNETTo6
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAoreworICAg
IGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGZsYWcg
eyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbmZpZ3VyYXRpb24pLCBNZXNz
YWdlczo6UmVtb3RlQ0RNUHJveHk6OkRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJP
cmlnaW5BbmRDbGVhcmFibGU6OlJlcGx5KGZsYWcpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVy
biBmbGFnOworfQorCitSZWZQdHI8Q0RNSW5zdGFuY2U+IFJlbW90ZUNETTo6Y3JlYXRlSW5zdGFu
Y2UoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94
eTo6Q3JlYXRlSW5zdGFuY2UoKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0
YW5jZTo6UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24pLCBtX2lkZW50aWZpZXIpOworICAgIGlmICgh
aWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1vdGVDRE1JbnN0YW5j
ZTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQpLCBXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFs
aXplKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVyKTsKK30K
KworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIHNhbml0aXplZFJlc3BvbnNlOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTYW5p
dGl6ZVJlc3BvbnNlKHJlc3BvbnNlKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTYW5pdGl6
ZVJlc3BvbnNlOjpSZXBseShzYW5pdGl6ZWRSZXNwb25zZSksIG1faWRlbnRpZmllcik7CisgICAg
cmV0dXJuIFdURk1vdmUoc2FuaXRpemVkUmVzcG9uc2UuYnVmZmVyKCkpOworfQorCitPcHRpb25h
bDxTdHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplZFNlc3Npb25JZDsKKyAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKSwg
TWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTYW5pdGl6ZVNlc3Npb25JZDo6UmVwbHkoc2FuaXRp
emVkU2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2FuaXRpemVkU2Vzc2lv
bklkOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYzYzM0ZWQyYzIwMjNhZGQyMGFlYTg5Yzdk
ZTRhN2FjMmM0YmJlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETSBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpDRE1Qcml2YXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3Rl
Q0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOworICAgIHZpcnR1YWwg
flJlbW90ZUNETSgpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBSZW1vdGVDRE0oV2Vha1B0
cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNv
bmZpZ3VyYXRpb24mJik7CisKKyAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAgYm9v
bCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMm
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgV2Vi
Q29yZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3Ry
aWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fy
ZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3Rh
bmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOworICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUo
KSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIE9wdGlv
bmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7
CisKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9
CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRSb2J1c3RuZXNzZXM7IH0KKyAg
ICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9jb25maWd1cmF0aW9uLnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOyB9CisgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1
cHBvcnRzU2Vzc2lvbnM7IH0KKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0
b3J5OworICAgIFJlbW90ZUNETUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworfTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1D
b25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYyYzQ2NGZkZmRjZDhjMzU3NTZiMGUzOGRhZDBm
ODkzOTA1ODg2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uIHsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3Vw
cG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9i
dXN0bmVzc2VzOworICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgYm9v
bCBzdXBwb3J0c1Nlc3Npb25zOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2Rl
ciA8PCBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRl
ZFJvYnVzdG5lc3NlczsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlczsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0c1Nlc3Npb25zOworICAgIH0KKworICAg
IHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1D
b25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9w
dGlvbmFsPFZlY3RvcjxBdG9tU3RyaW5nPj4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICAg
ICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAgICBpZiAoIXN1cHBv
cnRlZEluaXREYXRhVHlwZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIE9wdGlvbmFsPFZlY3RvcjxBdG9tU3RyaW5nPj4gc3VwcG9ydGVkUm9idXN0bmVzc2Vz
OworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgaWYg
KCFzdXBwb3J0ZWRSb2J1c3RuZXNzZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOwor
ICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgICAgICBp
ZiAoIXN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1Nlc3Npb25zOworICAg
ICAgICBkZWNvZGVyID4+IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgICAgIGlmICghc3VwcG9ydHNT
ZXNzaW9ucykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0
dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKSwKKyAg
ICAgICAgICAgIFdURk1vdmUoKnN1cHBvcnRlZFJvYnVzdG5lc3NlcyksCisgICAgICAgICAgICAq
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMsCisgICAgICAgICAgICAqc3VwcG9ydHNTZXNzaW9u
cywKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRhZjgzZTM4MjllZWEzNzNlY2M0NmMyNjgw
NTVlNjk2MjhhOTM5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5o
IgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
CisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE0u
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlQ0RNRmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9y
eShXZWJQcm9jZXNzJiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7Cit9CisK
K1JlbW90ZUNETUZhY3Rvcnk6On5SZW1vdGVDRE1GYWN0b3J5KCkgPSBkZWZhdWx0OworCit2b2lk
IFJlbW90ZUNETUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYkNvcmU6OlNldHRp
bmdzJiBzZXR0aW5ncykKK3sKKyAgICBpZiAoc2V0dGluZ3MudXNlR1BVUHJvY2Vzc0Zvck1lZGlh
KCkpIHsKKyAgICAgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZh
Y3RvcmllcygpOworICAgICAgICBmYWN0b3JpZXMuY2xlYXIoKTsKKyAgICAgICAgZmFjdG9yaWVz
LmFwcGVuZCh0aGlzKTsKKyAgICB9IGVsc2UKKyAgICAgICAgQ0RNRmFjdG9yeTo6cmVzZXRGYWN0
b3JpZXMoKTsKK30KKworCitjb25zdCBjaGFyKiBSZW1vdGVDRE1GYWN0b3J5OjpzdXBwbGVtZW50
TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVDRE1GYWN0b3J5IjsKK30KKworR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mIFJlbW90ZUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkKK3sK
KyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisK
K2Jvb2wgUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCit7CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNRmFj
dG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwgeyB9
KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0
ZT4gUmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQor
eworICAgIFJlbW90ZUNETUlkZW50aWZpZXIgaWQ7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETShrZXlT
eXN0ZW0pLCBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE06OlJlcGx5
KGlkLCBjb25maWd1cmF0aW9uKSwgeyB9KTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gUmVtb3RlQ0RNOjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyks
IFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVD
RE1GYWN0b3J5OjphZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIg
aWQsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbikKK3sKKyAgICBBU1NF
UlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwgV1RG
TW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6cmVtb3ZlU2Vzc2lv
bihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVCht
X3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQor
Cit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNjZWJlODRjMmIx
MmFkNDIzODM4YTM2MjdhMDY0ZWViZDQ3MDk1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCkBAIC0wLDAgKzEs
ODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NE
TUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNldHRpbmdzOworfQorCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBSZW1v
dGVDRE07CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb247CitjbGFzcyBXZWJQcm9jZXNz
OworCitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5IGZpbmFsCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6
Q0RNRmFjdG9yeQorICAgICwgcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgLCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZUNETUZhY3RvcnkoV2ViUHJv
Y2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnkoKTsKKworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHByb2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBn
cHVQcm9jZXNzQ29ubmVjdGlvbigpOworCisgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25z
dCBXZWJDb3JlOjpTZXR0aW5ncyYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlU2Vzc2lvbk1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB2b2lkIGFkZFNlc3Np
b24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbj4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpDRE1Qcml2YXRlPiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9v
bCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIEhhc2hNYXA8
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPj4gbV9jZG1zOworICAgIFdlYlByb2Nlc3MmIG1fcHJv
Y2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlZTNh
MzgxOWMxNzA3YjU1OGIzZmQ5YWFhODgxNjMxNTgzOTJmYWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYv
T2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVD
RE1JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JZGVudGlmaWVyID0gT2JqZWN0
SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM3MzlmMDNkYzU5ZWFk
NzFlZDdhMGZjMDNiNmNjMTk3ZGFhZDUzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC0wLDAgKzEs
MTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxSZW1vdGVDRE1J
bnN0YW5jZT4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rv
cnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2UoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShp
ZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2U6OlJl
bW90ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1v
dGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQor
ICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFuY2U6Omlu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1f
ZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsg
ZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjpJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246OlJlcGx5KHN1Y2NlZWRlZCks
IG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxl
ZDsKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVy
c0FsbG93ZWQoYm9vbCBhbGxvd2VkKSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFj
dG9yeSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFs
c2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXREaXN0aW5jdGl2
ZUlkZW50aWZpZXJzQWxsb3dlZChhbGxvd2VkKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNl
UHJveHk6OlNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkOjpSZXBseShzdWNjZWVkZWQp
LCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWls
ZWQ7Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQoYm9vbCBhbGxvd2VkKSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkK
KyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRQZXJzaXN0ZW50U3RhdGVB
bGxvd2VkKGFsbG93ZWQpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0UGVy
c2lzdGVudFN0YXRlQWxsb3dlZDo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQorCithdXRvIFJlbW90
ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGNlcnRpZmljYXRlKSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9y
eSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2Ug
fTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShjZXJ0aWZpY2F0ZS5nZXQoKSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5
OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZTo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVudGlmaWVyKTsK
KyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQorCithdXRvIFJl
bW90ZUNETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5KSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0
dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3Rv
cnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSks
IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTdG9yYWdlRGlyZWN0b3J5OjpS
ZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNjZWVkZWQgPyBT
dWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b24+IFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKCkKK3sKKyAgICBpZiAoIW1fZmFj
dG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyIGlkOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6
OkNyZWF0ZVNlc3Npb24oKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkNyZWF0
ZVNlc3Npb246OlJlcGx5KGlkKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIWlkKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHNlc3Npb24gPSBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBXVEZNb3ZlKGlkKSk7
CisgICAgbV9mYWN0b3J5LT5hZGRTZXNzaW9uKGlkLCBzZXNzaW9uLmNvcHlSZWYoKSk7CisgICAg
cmV0dXJuIHNlc3Npb247Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFuY2U6OnNldEhEQ1BTdGF0
dXMoSERDUFN0YXR1cyBzdGF0dXMpIC0+IFN1Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0
b3J5KQorICAgICAgICByZXR1cm4gRmFpbGVkOworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxz
ZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldEhEQ1BTdGF0dXMo
c3RhdHVzKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldEhEQ1BTdGF0dXM6
OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/
IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNWQ4MjZiYWE0MTJkNTYwZTBjMDY5OGEwZTJkYzVlODBlMjA4YmUwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVDRE1JbnN0YW5jZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5j
ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2UoKSA9IGRlZmF1bHQ7
CisgICAgc3RhdGljIFJlZjxSZW1vdGVDRE1JbnN0YW5jZT4gY3JlYXRlKFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUlu
c3RhbmNlQ29uZmlndXJhdGlvbiYmKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitw
cml2YXRlOgorICAgIFJlbW90ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4m
JiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbiYmKTsKKworICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQorICAg
IFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRE
aXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFs
dWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFs
dWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikg
ZmluYWw7CisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBz
ZXRIRENQU3RhdHVzKEhEQ1BTdGF0dXMpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1G
YWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0
aW9uOworfTsKKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NETV9JTlNUQU5DRShXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlLCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SW1wbGVtZW50YXRp
b25UeXBlOjpSZW1vdGUpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjUzMmQ3MmU3Y2U0Yjg1M2YyZDNiOTM0NTVlMTkyODFjNDE5ZmE0
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Ry
dWN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiB7CisgICAgU3RyaW5nIGtleVN5c3Rl
bTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwga2V5U3lzdGVtOwor
ICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25h
bDxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBrZXlTeXN0ZW07CisgICAgICAgIGRl
Y29kZXIgPj4ga2V5U3lzdGVtOworICAgICAgICBpZiAoIWtleVN5c3RlbSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBX
VEZNb3ZlKCprZXlTeXN0ZW0pLAorICAgICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZmZkZTY5MWMzZTg5NWI4ODU5ZTYyMDVhNzFlMTE1ZmE5YjRmZTBhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworZW51bSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVjY2JlMjM5NmY5
YjJmODZjOWM2YjI2ZjMzZTFiYTIzNWIwMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBA
IC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3Rv
cnksIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV1RGTW92ZShmYWN0b3J5
KSwgV1RGTW92ZShpZCkpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFjdG9yeShX
VEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQoreworfQor
Cit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1f
ZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0
eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVz
dExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIW1lc3NhZ2UuYnVm
ZmVyKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVt
cHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGNhbGxiYWNrKG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwg
c2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQg
OiBGYWlsZWQpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBj
YWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
RmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6VXBkYXRlTGljZW5zZShzZXNzaW9uSWQs
IHR5cGUsIFdURk1vdmUocmVzcG9uc2UpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
IChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFu
Z2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxN
ZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY2Fs
bGJhY2soc2Vzc2lvbldhc0Nsb3NlZCwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUoY2hh
bmdlZEV4cGlyYXRpb24pLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQg
OiBGYWlsZWQpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2Fk
RmFpbHVyZTo6T3RoZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5
LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpMb2FkU2Vzc2lvbih0eXBl
LCBzZXNzaW9uSWQsIG9yaWdpbiksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoT3B0
aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYg
Y2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNj
ZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZSBsb2FkRmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9u
KSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkLCBsb2Fk
RmFpbHVyZSk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VT
ZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAg
ICAgICBjYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5
LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpDbG9zZVNlc3Npb24oc2Vz
c2lvbklkKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAg
ICAgICBjYWxsYmFjaygpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNhbGxi
YWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSwgV1RG
OjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0
b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9u
RGF0YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtl
eVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAg
ICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKKyAgICAg
ICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25O
dWxsKCk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJl
YWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNv
cmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQoreworICAgIGlmICghbV9mYWN0
b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpTdG9yZVJlY29yZE9mS2V5VXNhZ2Uoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKEtl
eVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlbmRNZXNzYWdlKFdlYkNvcmU6OkNE
TU1lc3NhZ2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3Nh
Z2UpCit7CisgICAgaWYgKG1fY2xpZW50ICYmIG1lc3NhZ2UuYnVmZmVyKCkpCisgICAgICAgIG1f
Y2xpZW50LT5zZW5kTWVzc2FnZSh0eXBlLCBtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxs
KCkpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdl
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKHNlc3Npb25JZCk7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDk4NzlmNDgzN2ZjMzIyZjFk
MTE1YjY4ODEwNDk5NWRkMDk2Y2RkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtMCwwICsx
LDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFu
Y2VTZXNzaW9uLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbiBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsICBwdWJsaWMg
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4m
JiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsKKyAgICB2aXJ0dWFsIH5S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIFJlbW90ZUNETUZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllciYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKwor
ICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJik7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYpOworICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdl
ZChjb25zdCBTdHJpbmcmKTsKKworCisgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xpZW50KSBmaW5hbCB7IG1fY2xpZW50ID0g
V1RGTW92ZShjbGllbnQpOyB9CisgICAgdm9pZCBjbGVhckNsaWVudCgpIGZpbmFsIHsgbV9jbGll
bnQgPSBudWxscHRyOyB9CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7
CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cisg
ICAgV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IG1fY2xpZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhjMjM5MmU3ZWY4NjIwNDYy
MWQyODQxNDM4YjVlZGY0ZDM4MTUzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21l
c3NhZ2VzIC0+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBV
cGRhdGVLZXlTdGF0dXNlcyhXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1Zl
Y3RvciBrZXlTdGF0dXNlcykKKyAgICBTZW5kTWVzc2FnZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
Q0RNTWVzc2FnZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIG1lc3Nh
Z2UpCisgICAgU2Vzc2lvbklkQ2hhbmdlZChTdHJpbmcgc2Vzc2lvbklkKQorfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTg2YWNkMTI2NWFmMGM4NDYzODhlMjNmOWNjYTE2ZDkwMjMzOGZlMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitlbnVtIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlIHsgfTsK
K3VzaW5nIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlm
aWVyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllckNhY2hlZFN0YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyQ2FjaGVkU3RhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZjRmMGRlMTBkODg2ZmY5Y2QxMzRmZmViNzE4OTI3YWNiZjg3ODAwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllckNhY2hlZFN0YXRlLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFQbGF5ZXJFbnVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFu
Z2VzLmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RydWN0IFJlbW90ZU1lZGlhUGxheWVyQ2FjaGVkU3RhdGUgeworICAgIE1lZGlhVGltZSBj
dXJyZW50VGltZTsKKyAgICBNZWRpYVRpbWUgZHVyYXRpb247CisgICAgTWVkaWFUaW1lIG1pblRp
bWVTZWVrYWJsZTsKKyAgICBNZWRpYVRpbWUgbWF4VGltZVNlZWthYmxlOworICAgIFdlYkNvcmU6
OlBsYXRmb3JtVGltZVJhbmdlcyBidWZmZXJlZFJhbmdlczsKKyAgICBib29sIHBhdXNlZCB7IHRy
dWUgfTsKKyAgICBib29sIGxvYWRpbmdQcm9ncmVzc2VkIHsgZmFsc2UgfTsKKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgY3VycmVudFRpbWU7CisgICAgICAgIGVuY29k
ZXIgPDwgZHVyYXRpb247CisgICAgICAgIGVuY29kZXIgPDwgbWluVGltZVNlZWthYmxlOworICAg
ICAgICBlbmNvZGVyIDw8IG1heFRpbWVTZWVrYWJsZTsKKyAgICAgICAgZW5jb2RlciA8PCBidWZm
ZXJlZFJhbmdlczsKKyAgICAgICAgZW5jb2RlciA8PCBwYXVzZWQ7CisgICAgICAgIGVuY29kZXIg
PDwgbG9hZGluZ1Byb2dyZXNzZWQ7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZU1lZGlhUGxheWVyQ2FjaGVkU3RhdGU+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1l
PiBjdXJyZW50VGltZTsKKyAgICAgICAgZGVjb2RlciA+PiBjdXJyZW50VGltZTsKKyAgICAgICAg
aWYgKCFjdXJyZW50VGltZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBkdXJhdGlvbjsKKyAgICAgICAgZGVjb2RlciA+PiBk
dXJhdGlvbjsKKyAgICAgICAgaWYgKCFkdXJhdGlvbikKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBtaW5UaW1lU2Vla2FibGU7
CisgICAgICAgIGRlY29kZXIgPj4gbWluVGltZVNlZWthYmxlOworICAgICAgICBpZiAoIW1pblRp
bWVTZWVrYWJsZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
T3B0aW9uYWw8TWVkaWFUaW1lPiBtYXhUaW1lU2Vla2FibGU7CisgICAgICAgIGRlY29kZXIgPj4g
bWF4VGltZVNlZWthYmxlOworICAgICAgICBpZiAoIW1heFRpbWVTZWVrYWJsZSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGxh
dGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZFJhbmdlczsKKyAgICAgICAgZGVjb2RlciA+PiBidWZm
ZXJlZFJhbmdlczsKKyAgICAgICAgaWYgKCFidWZmZXJlZFJhbmdlcykKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcGF1c2VkOworICAg
ICAgICBkZWNvZGVyID4+IHBhdXNlZDsKKyAgICAgICAgaWYgKCFwYXVzZWQpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRpbmdQ
cm9ncmVzc2VkOworICAgICAgICBkZWNvZGVyID4+IGxvYWRpbmdQcm9ncmVzc2VkOworICAgICAg
ICBpZiAoIWxvYWRpbmdQcm9ncmVzc2VkKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworCisgICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpjdXJyZW50VGltZSksIFdURk1vdmUo
KmR1cmF0aW9uKSwgV1RGTW92ZSgqbWluVGltZVNlZWthYmxlKSwgV1RGTW92ZSgqbWF4VGltZVNl
ZWthYmxlKSwgV1RGTW92ZSgqYnVmZmVyZWRSYW5nZXMpLCBXVEZNb3ZlKCpwYXVzZWQpLCBXVEZN
b3ZlKCpsb2FkaW5nUHJvZ3Jlc3NlZCkgfX07CisgICAgfQorCit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggYWUwMTYxYWFkOTQ3NGQ2YjBmMWY5
MDBiMDU0NGY1OTgwZDM2OThmZi4uYjlmNGQyYTdlMzI3ZWJlMzIwZDU3ZTc1OGJhYjAzZTU3YTZh
ZDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0yOCwxMiArMjgsMTUg
QEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkdQVVBy
b2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlc1Jl
cGxpZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDA5ZDc5ODcxZjViNmYzODdkNGY1ZmI2NTUxZWY5
YTA0NjdjNDYzYjguLjQ4Y2E5ZGU5OWFiYzBiMDk1MjExOGVkZDZhMTlhMmViOTE4OGJjZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTE4OSwxNyArMTg5LDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9v
CiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUo
cG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBkYXRhLCBpbnQ2NF90IGVu
Y29kZWREYXRhTGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEu
c2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJO
ZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVk
IHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxl
ci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAg
IGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CisgICAg
ICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIo
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YSA9IFdURk1vdmUo
ZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
Y29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRh
KSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJmYTFjNjlmZWE5ZDUzOTY2ZmIu
LjI2OTA4ZTgyM2Q3OTI0NGU1Nzg2ZGIwNGE1OTY5ZWYxZmM2NTgwODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsK
IGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmKTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VX
b3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzRlODZjMTFlMjQ4NmM3YTE2MDM2ZDdiNDY4
ZmI3OGQyNzU4ZmQ2MS4uYzUwZjU1YWU5MjYzYzExNjgxNDFhYTQ1NzBhMmRkZWM2MTY2NDA3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTEyOSw3ICsxMjks
NyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZQogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBt
X2ZldGNoSWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgc2l6ZSkgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZEZpbmlzaEJsb2JMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDk4YjE1Yjg3ZmMxM2RhMmRiZjQ0M2JhOThhNGQ4NmQ3YTlkMzU0MTkuLjNlMTk5YzlhZjk4YzVk
NGJkODg5ZGE5NzI1MDM1MmQ0YjJkMWI2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtMTkxNCw5ICsxOTE0LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXIKICAgICBh
dXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZp
ZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAg
ICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOworICAg
ICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExv
YWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgKmRhdGEgfSkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGlu
Z0ljb24oY2FsbGJhY2tJRCwgeyBudWxscHRyLCAwIH0pKTsKKyAgICAgICAgICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFj
a0lELCB7IH0pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggZTQ1ODM3NDliNmY5NmI1YzFkZWQxZTA2YTQzMGFhYzg5MTU4
N2JmZC4uOGZiYzc0MzFiZTc3YTBjOTYyNWFkMzE4NDdmYWUzNmNhOTA4M2MyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMyMCw2ICszMjAs
OSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5oIgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVt
b3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC0zNTAwLDcgKzM1MDMsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2
ZURhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRh
KQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkp
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAg
ICAgICAgZGF0YVJlZmVyZW5jZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwog
I2VuZGlmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0
YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMzU4MSw3ICszNTg0LDcgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0kKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKLSAgICAgICAg
ZGF0YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CisgICAgICAgIGRhdGFS
ZWZlcmVuY2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKICNlbmRpZgogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2Us
IGNhbGxiYWNrSUQpKTsKIH0KQEAgLTM2ODUsNiArMzY4OCw5IEBAIHZvaWQgV2ViUGFnZTo6dXBk
YXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVu
dDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCktPnVwZGF0ZVByZWZlcmVuY2VzKHNldHRpbmdz
KTsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0
dGluZ3MpOworI2VuZGlmCiAjZW5kaWYKIH0KIApAQCAtNDkxOSw3ICs0OTI1LDcgQEAgdm9pZCBX
ZWJQYWdlOjpkcmF3UGFnZXNUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiBwcmludEluZm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRm
UGFnZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgZmly
c3QsIGNvdW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEYXRhQ2FsbGJhY2soeyBDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSB9LCBj
YWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJh
Y2soeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZQYWdlRGF0YS5nZXQoKSkgfSwgY2FsbGJhY2tJ
RCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGSW1wbChGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1
aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSkK
QEAgLTY1NjMsMTIgKzY1NjksMTIgQEAgdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjQKICAgICBoYW5k
bGVyLT50YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHRhc2tJZGVudGlmaWVyLCByZXNwb25zZSk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhh
bmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURh
dGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgYXV0byog
aGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5k
bGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+dGFz
a0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkp
OworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5z
aXplKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhLmRhdGEoKSkpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5k
bGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQpAQCAtNjc5MCw3ICs2Nzk2LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRh
Y2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmkK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lE
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRl
bnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVw
ZGF0ZUxheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IGM3Y2YzOGM1YmJhMjAxY2VkNzg4Y2QwM2Q1YTIwNGQ0YWNhNGYyYTcuLjczYzU5MmNj
ODRmNzQ4YzJmNDg5OTU4NjdiZTZlMmU5YWVlYWMxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZl
cmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMTk0LDcgKzExOTUsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ2FsbGJhY2tJRCk7Ci0g
ICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVu
Y2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYm
IGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdl
RGF0YSwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKQEAgLTE2NzQsNyArMTY3NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVybFNjaGVt
ZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVp
bnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZl
UmVzcG9uc2UodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB1cmxTY2hl
bWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHVy
bFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWlu
dDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJ
ZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwogCiAgICAgdm9pZCBzZXRJc1N1c3BlbmRlZChib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0N2M5YzA4YWRlZTQ1ODVkOTEzMzQ2YjFh
YmRlZTg2N2M1ZjFjYjU3Li5iNWQ3MmI0ZTdmNjIwM2ZmM2NiYzUyMjI2ZDc2ODM1ZmIyMDRlNDRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNzQsNiArMTc0
LDEwIEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlm
CisKICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Np
b25JRC0+dG9VSW50NjQoKSA6IDApCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hh
bm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBjaGFubmVsLCAiJXAgLSBbc2Vzc2lvbklEPSUiIFBSSXU2NCAiXSBXZWJQcm9jZXNzOjoiIGZt
dCwgdGhpcywgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMjQw
LDYgKzI0NCwxMCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICBhZGRTdXBwbGVtZW50
PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGFkZFN1cHBsZW1lbnQ8UmVt
b3RlQ0RNRmFjdG9yeT4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391509</attachid>
            <date>2020-02-23 21:18:56 -0800</date>
            <delta_ts>2020-02-23 21:22:58 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208090-20200223211855.patch</filename>
            <type>text/plain</type>
            <size>268604</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ5OTU0ODNlZGFmNmRl
ODIyNjcwN2ZlYTBlMTc4MDU2NDI2MTFiOS4uZTRiODU4OTMxNTdmZWQyNDdjM2UzZjBjOTYxNzc4
NjBkYmFhNjU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5OjpyZXNldEZhY3Rvcmll
cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVxdWlyZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1
cHBvcnRlZFJvYnVzdG5lc3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydGVk
SW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0
ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnN1cHBv
cnRlZFJvYnVzdG5lc3MgY29uc3QpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAyMC0wMi0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBTdG9wIHVzaW5nIFFUS2l0IGZvciByZW5kZXJpbmcgV0sxIHZpZGVvIGZ1
bGxzY3JlZW4gY29udHJvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWM3MjdiZjkzMzdkMGNhMjVlYzFjY2Y5ZDhl
NGZlMDY3NWI0Mzk3Ni4uN2YxNzgxMWQxNDJhZmFmYTZhYjgyNTk1MTQ3NDkxYzY4ZjljZjI2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMjcgQEAKKzIwMjAtMDItMjEgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQ
SSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1G
YWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24sIGFuZCBhbGwKKyAgICAgICAgb2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3Rz
LgorCisgICAgICAgIEFsbG93IHRoZSBleGlzdGluZyBDRE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3
b3JrIG5vcm1hbGx5IGJ5IGV4cGxpY2l0bHkgY2xlYXJpbmcgb3V0IGFsbCB0aGUgZXhpc3Rpbmcg
CisgICAgICAgIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlzIGVuYWJsZWQsIGFuZCByZXNldHRpbmcg
dGhvc2UgZmFjdG9yaWVzIHRvIGRlZmF1bHQgd2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgZGlzYWJs
ZWQuCisKKyAgICAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGlzIG1hZGUgbW9y
ZSBlZmZpY2llbnQgYnkgdXNpbmcgdGhlIHNhbWUgZW5jb2RlL2RlY29kZSBwYXRoIGFzIGlzIHVz
ZWQgaW4KKyAgICAgICAgV2ViQ29yZUFyZ3VtZW50Q29kZXJzOiB0aGUgU2hhcmVkQnVmZmVyIGlz
IGNvcGllZCBpbnRvIHNoYXJlZCBtZW1vcnksIGFuZCBvbmx5IGEgaGFuZGxlIGlzIHBhc3NlZCBh
Y3Jvc3MKKyAgICAgICAgdGhlIFhQQyBib3VuZGFyeS4gVGhpcyByZXF1aXJlcyBleGlzdGluZyB1
c2VycyB0byBoYW5kbGUgcmVjZWl2aW5nIGEgSVBDOjpTaGFyZWRCdWZmZXJEYXRhSGFuZGxlIG9u
IHRoZQorICAgICAgICByZW1vdGUgc2lkZSBvZiB0aGUgWFBDIGJvdW5kYXJ5LCBidXQgdGhpcyBp
cyB0cml2aWFsLCBhbmQgbWFueSBjYWxsIHNpdGVzIHJlcXVpcmUgYSBTaGFyZWRCdWZmZXIgb24g
dGhlCisgICAgICAgIHJlbW90ZSBzaWRlIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhpcyBjb2RlIGNv
dWxkIGJlIGltcHJvdmVkIGJ5IGFsbG93aW5nIHRoZSBTaGFyZWRNZW1vcnkgb2JqZWN0IGJlIGFk
b3B0ZWQKKyAgICAgICAgYnkgdGhlIFNoYXJlZEJ1ZmZlciBvYmplY3QgYXQgY3JlYXRpb24gdGlt
ZSwgbGVhZGluZyB0byB6ZXJvLWNvcHkgZGVjb2RpbmcsIGJ1dCBpcyBub3QgZG9uZSBpbiB0aGlz
IHBhdGNoLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFj
dG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNl
c3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojph
ZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3Zl
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0
YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFu
Y2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24p
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmg6IEFk
ZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1l
c3NhZ2VzLmluOiAKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
UHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0UGVyc2lzdGVudFN0
YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNl
dFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUlu
c3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OmNvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjppbnN0YW5jZSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRl
TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Ojpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpjbG9zZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1
c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmln
dXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpwZXJz
aXN0ZW50U3RhdGVSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5
OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXplKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVy
S2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZTo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U6OmRlY29kZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3I+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW06CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0
YW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE06OlJlbW90ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3Vw
cG9ydHNDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpz
dXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6cGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1Db25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNRmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0
b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZh
Y3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFj
dG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6YWRk
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Np
b24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3Rv
cnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRl
bnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZVNlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0SERDUFN0YXR1cyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZW5kTWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hh
bmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9u
U2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJDYWNoZWRTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJDYWNoZWRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZHJhd1BhZ2VzVG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAyLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQg
Zm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNjcmVlbiBjb250cm9scwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggYWQ0ZjcxZDdjNGI0OTY5MTAzMjE2MzNjYWFmYzM4ZDYwZjYyY2YxZC4uNWFiN2Jh
NTEzYjYwMTFhZmEzMmUxMTZhYjY4YmE1MTM5YjZhNTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xMDMxLDYgKzEwMzEsMjAgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKICAgICBwbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAogCisgICAgcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNRmFjdG9yeS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2UuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisg
ICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKKyAgICBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKKyAgICBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisgICAgcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaAorICAgIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNU2Vzc2lvblR5cGUuaAorCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJvdmlkZXIu
aAogICAgIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgKICAgICBwbGF0
Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggNGJiYjJiY2U2MTg3NGI3ZWUxNDhhNDE2ODU1
MGE2YjE1NjQzOTJhMC4uYzRlMTQyNmEwYzNmZmI1YWE4MTBkNGM1ZDBhNjhiZDA3ZTlmZWY1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAt
MTk1LDcgKzE5NSw3IEBAIE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gQ0RN
OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhCiAgICAgICAgICAgICBpZiAo
aW5pdERhdGFUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgaWYgKG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBl
KGluaXREYXRhVHlwZSkpCisgICAgICAgICAgICBpZiAobV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAg
ICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKGluaXREYXRhVHlwZSk7CiAgICAgICAgIH0K
IApAQCAtNDYwLDcgKzQ2MCw3IEBAIE9wdGlvbmFsPFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlh
Q2FwYWJpbGl0eT4+IENETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yCiAgICAgICAgIC8v
IDMuMTEuIElmIGNvbnRlbnQgdHlwZSBpcyBub3Qgc3RyaWN0bHkgYSBhdWRpby92aWRlbyB0eXBl
LCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uCiAgICAgICAgIC8vIDMuMTIuIElmIHJv
YnVzdG5lc3MgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcgYW5kIGNvbnRhaW5zIGFuIHVucmVjb2du
aXplZCB2YWx1ZSBvciBhIHZhbHVlIG5vdCBzdXBwb3J0ZWQgYnkKICAgICAgICAgLy8gICAgICAg
aW1wbGVtZW50YXRpb24sIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4gU3RyaW5nIGNv
bXBhcmlzb24gaXMgY2FzZS1zZW5zaXRpdmUuCi0gICAgICAgIGlmICghcm9idXN0bmVzcy5pc0Vt
cHR5KCkgJiYgIW1fcHJpdmF0ZS0+c3VwcG9ydHNSb2J1c3RuZXNzKHJvYnVzdG5lc3MpKQorICAg
ICAgICBpZiAoIXJvYnVzdG5lc3MuaXNFbXB0eSgpICYmICFtX3ByaXZhdGUtPnN1cHBvcnRlZFJv
YnVzdG5lc3NlcygpLmNvbnRhaW5zKHJvYnVzdG5lc3MpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgLy8gMy4xMy4gSWYgdGhlIHVzZXIgYWdlbnQgYW5kIGltcGxlbWVudGF0aW9u
IGRlZmluaXRlbHkgc3VwcG9ydCBwbGF5YmFjayBvZiBlbmNyeXB0ZWQgbWVkaWEgZGF0YSBmb3Ig
dGhlCkBAIC02MTIsNyArNjEyLDcgQEAgYm9vbCBDRE06OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25z
dAogCiBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5z
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpOworICAgIHJldHVybiBtX3ByaXZhdGUg
JiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFU
eXBlKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkYTE5YmJmZjJjN2NlODJiZWZhODAzNWFkNzU0MmUz
ZTlmMjJhNjlkLi4yOWZhYjQ5OTA2ODI1ODMyYTVhZGRkOTlhODBlOGYzNGQ4ZDMwOGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246
OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYKICAgICAgICAgLy8gNi41LiBMZXQgc2Vzc2lvbiBjbG9zZWQgYmUgZmFsc2UuCiAgICAgICAg
IC8vIDYuNi4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMg
b2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAgICAgICAvLyA2LjcuIFVzZSB0aGUgY2Rt
IHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Np
b24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRS
ZXNwb25zZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRv
dWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNl
KG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBzYW5pdGl6ZWRSZXNwb25zZS5yZWxlYXNlTm9u
TnVsbCgpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91
YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1l
c3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOTBiMDExZTM1NWJkY2I3YTM0N2NlMDI5N2RiMWM0MmQ4OGY5NDYz
Yi4uZjg3M2I3Y2YxZDk2OGZmZDIyNTBlZWQwZGJiY2JiZGZiZmY5NWRmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA2NSw2
ICs0MDY1LDE5IEBACiAJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTYx
N0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggKi87IH07CiAJCUNEM0E0OTYyMTdBOUQw
MUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTU5MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZm
ZXIuaCAqLzsgfTsKIAkJQ0QzQTQ5NjUxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0
OTVDMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggKi87IH07CisJCUNEM0NF
MEY4MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY3NTY5QjIxNUMyM0E0MDBFRkNC
NTAgLyogQ0RNRW5jcnlwdGlvblNjaGVtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEY5MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1GYWN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0
QTVEMjFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNRmFjdG9yeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZBMjQwMUFBRDkwMDRCQTAxRCAv
KiBDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q5NEE1Q0UxRjcxQ0I2QTAwRjUyNUM1IC8qIENETUluc3RhbmNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkIyNDAxQUFE
OTAwNEJBMDFEIC8qIENETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5RDM3NUEyMTUxNjNFNDAwNDk2NTdCIC8qIENETUlu
c3RhbmNlU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUNEM0NFMEZDMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTdGF0dXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ0MUY3MUNC
NkMwMEY1MjVDNSAvKiBDRE1LZXlTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGRDI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q5NEE1Q0QxRjcxQ0I2OTAwRjUyNUM1IC8qIENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEMzFGNzFD
QjZDMDBGNTI1QzUgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkYyNDAxQUFEQTAwNEJBMDFEIC8q
IENETU1lc3NhZ2VUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDk0QTVENjFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNTWVzc2FnZVR5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMDI0
MDFBQURBMDA0QkEwMUQgLyogQ0RNUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1Q0YxRjcxQ0I2QTAwRjUyNUM1IC8qIENETVByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
RDNDRTEwMTI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNGMUY3MUNCNjEwMEY1MjVDNSAvKiBD
RE1Qcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUNEM0NFMTAyMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1SZXF1aXJlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1Q0MxRjcxQ0I2OTAw
RjUyNUM1IC8qIENETVJlcXVpcmVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDMyNDAxQUFEQTAwNEJBMDFEIC8qIENETVJlc3Ry
aWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q5NEE1RDAxRjcxQ0I2QjAwRjUyNUM1IC8qIENETVJlc3RyaWN0aW9ucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTA0MjQwMUFBREEw
MDRCQTAxRCAvKiBDRE1TZXNzaW9uVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1RDUxRjcxQ0I2RDAwRjUyNUM1IC8qIENETVNlc3Npb25U
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0QzRTIxREQyMTgzNDQ0QTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyMURCMjE4MzNG
NTEwMEU2NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QzRTI1MUMxODA0NkIwNjAwRTI3RjU2
IC8qIEdyaWRBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDNFMjUxQjE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjUyNDE4MDQ2QkNEMDBF
MjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzRTI1MjIxODA0NkJDRDAwRTI3RjU2IC8qIENT
U0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCAqLzsgfTsKQEAgLTQxOTYsNyArNDIwOSw3IEBACiAJ
CUNERjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwRjE4MjA1NDA2MDBGMkI0MjQg
LyogTW9ja1RyYWNrcy5oICovOyB9OwogCQlDREY0QjcxMjFFMDA4N0FFMDBFMjM1QTIgLyogTGVn
YWN5Q0RNU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIExlZ2FjeUNETVNlc3Npb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREY0QjcxNTFF
MDBCN0U1MDBFMjM1QTIgLyogQ0RNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERjRCNzEzMUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwICovOyB9
OwotCQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0QjcxNDFFMDBCN0U1MDBFMjM1QTIgLyog
Q0RNLmggKi87IH07CisJCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE0MUUwMEI3RTUw
MEUyMzVBMiAvKiBDRE0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDREY0QjcxODFFMDFDQjkxMDBFMjM1QTIgLyogTWVkaWFLZXlzUmVzdHJpY3Rp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0
QjcxNzFFMDFDQjkxMDBFMjM1QTIgLyogTWVkaWFLZXlzUmVzdHJpY3Rpb25zLmggKi87IH07CiAJ
CUNERjRCNzFBMUUwMUQzRDAwMEUyMzVBMiAvKiBNZWRpYUtleVNlc3Npb25UeXBlLmlkbCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE5MUUwMUQz
RDAwMEUyMzVBMiAvKiBNZWRpYUtleVNlc3Npb25UeXBlLmlkbCAqLzsgfTsKIAkJQ0RGNEI3MUUx
RTAxRTExQTAwRTIzNUEyIC8qIEpTTWVkaWFLZXlTZXNzaW9uVHlwZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MUMxRTAxRTExQTAwRTIzNUEy
IC8qIEpTTWVkaWFLZXlTZXNzaW9uVHlwZS5oICovOyB9OwpAQCAtMjkyNjMsOSArMjkyNzYsMjIg
QEAKIAkJCQk2NTUwQjY5RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRDk0QTVERTFGNzJGNTdCMDBGNTI1QzUgLyogQ0RNQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDRDNDRTBGODI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRW5jcnlwdGlvblNj
aGVtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRjkyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQjcwNDVBMUY3NDY1QTEwMDM5MjNERiAv
KiBDRE1GYWlyUGxheVN0cmVhbWluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkEyNDAx
QUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBG
QjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRDNDRTBGQzI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5U3RhdHVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRDNDRTBGRDI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkUyNDAxQUFEOTAwNEJBMDFEIC8q
IENETU1lZGlhQ2FwYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkYyNDAxQUFE
QTAwNEJBMDFEIC8qIENETU1lc3NhZ2VUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEw
MDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Qz
MTg2MjMxOTlGMUUyQTAwMzBBMEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBp
biBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcm94eS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UxMDIyNDAxQUFEQTAwNEJBMDFEIC8qIENETVJlcXVp
cmVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwMzI0MDFBQURBMDA0QkEwMUQgLyog
Q0RNUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU1OTU5NzFCRjI2RTIxMDBB
MUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0QzQ0UxMDQyNDAxQUFEQTAwNEJBMDFEIC8qIENETVNlc3Npb25UeXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhBMkQgLyogQ2VydGlmaWNhdGVJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MUI4RjBCNTIxOTUzRDY1MDAwQzJCMDAgLyogQ2VydGlmaWNh
dGVJbmZvQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzNkZEMTUxNkM3ODI2NTAwRjg4N0Mx
IC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDllN2E5NjQ4NDQ0OTkwZTcxYjQzZDZmNzQ0Nzcx
M2QzMmZkMGIyMDMuLjExZTI3MmI3M2RjZDg3NGM3MGU5M2MyZjViYzAzZDFkNGJjMzBiNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMjU2MSwxNSArMjU2
MSwyNSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgc3RhdGUpCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpCit7CisgICAgaWYgKCFtX3BsYXllcikK
KyAgICAgICAgcmV0dXJuOworICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSBoYXNFdmVudExpc3Rl
bmVycygid2Via2l0bmVlZGtleSIpIHx8IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpICYmICFkb2N1bWVudCgpLnF1aXJr
cygpLmhhc0Jyb2tlbkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydFF1aXJrKCkpOworICAgIG1fcGxh
eWVyLT5zZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3VsZENvbnRpbnVlKTsKK30K
KyNlbmRpZgorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV93ZWJLaXRNZWRpYUtleXMgPyBtX3dlYktpdE1lZGlhS2V5cy0+Y2FjaGVkS2V5Rm9y
S2V5SWQoa2V5SWQpIDogbnVsbHB0cjsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCiB7CiAgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxlZ2FjeUVuY3J5
cHRlZE1lZGlhQVBJRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghaGFzRXZlbnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXkiKQogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCkBAIC0yNTgwLDE0ICsyNTkwLDEyIEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEp
CiAgICAgICAgICkgewogICAgICAgICBtX2Vycm9yID0gTWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlh
RXJyb3I6Ok1FRElBX0VSUl9FTkNSWVBURUQpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50
TmFtZXMoKS5lcnJvckV2ZW50KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgYXV0byBldmVudCA9IFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0RGF0YSk7CiAgICAg
ZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2
ZW50KFdURk1vdmUoZXZlbnQpKTsKLQotICAgIHJldHVybiB0cnVlOwogfQogCiBTdHJpbmcgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3QKQEAgLTUxMjksNiArNTEzNywxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5n
aW5lV2FzVXBkYXRlZCgpCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICBzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdXBkYXRl
U2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpCkBAIC01ODkxLDYgKzU5MDMsMTEg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIAog
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50
TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogeworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCkKKyAgICAgICAgdXBkYXRlU2hvdWxkQ29u
dGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgorCiAgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVu
dE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCiAg
ICAgICAgIHJldHVybiBOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShs
aXN0ZW5lciksIG9wdGlvbnMpOwogCkBAIC01OTEyLDYgKzU5MjksMTEgQEAgYm9vbCBIVE1MTWVk
aWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
UmVmPEV2ZW50TGkKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGNv
bnN0IExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpCisgICAgICAgIHVwZGF0ZVNob3Vs
ZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKKwogICAgIGlmIChldmVudFR5cGUgIT0g
ZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50
KQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxp
c3RlbmVyLCBvcHRpb25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCBlNzE1NjNjZmY2MWE1MTQ1NTY3MjRkZmQzY2E3MGIwMTA5ZmZmNTYwLi5jYTM3NDliZGRi
NmUwYjZmMWM0ZjE4NjMwMTliZDY0OTY3OTUxZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtNjgyLDcgKzY4Miw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxh
eWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QgZmluYWw7Ci0g
ICAgYm9vbCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9p
ZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CiAgICAgU3RyaW5nIG1l
ZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlm
CiAKQEAgLTY5Niw2ICs2OTYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBDRE1DbGllbnQKICAgICB2
b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSBmaW5hbDsK
ICNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisgICAgdm9pZCB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtl
eSgpOworI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
ICAgICB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5n
ZWQoYm9vbCkgZmluYWw7CkBAIC0xMTY4LDYgKzExNzIsNyBAQCBwcml2YXRlOgogICAgIE1lZGlh
UHJvdmlkZXIgbV9tZWRpYVByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCisgICAgYm9vbCBtX2hhc05lZWRrZXlMaXN0ZW5lciB7IGZhbHNlIH07CiAgICAgUmVm
UHRyPFdlYktpdE1lZGlhS2V5cz4gbV93ZWJLaXRNZWRpYUtleXM7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlv
blNjaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5j
cnlwdGlvblNjaGVtZS5oCmluZGV4IDc0YjNhYTdkN2JkYjAwYTI2NzU2YTAyMzY1NjZmMzY4ODEy
YmNlM2IuLjFhN2E1NjI3ZGJjYTY0MWI0OWNlN2U1NmU2NzE2ZTMxOGE5ODhiZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25T
Y2hlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmgKQEAgLTI3LDEzICsyNywyNyBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotZW51bSBjbGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIHsKK2VudW0gY2xhc3MgQ0RN
RW5jcnlwdGlvblNjaGVtZSA6IHVpbnQ4X3QgewogICAgIGNlbmMsCiAgICAgY2JjcywKIH07CiAK
IH0KIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWUsCisgICAgICAgIFdlYkNv
cmU6OkNETUVuY3J5cHRpb25TY2hlbWU6OmNlbmMsCisgICAgICAgIFdlYkNvcmU6OkNETUVuY3J5
cHRpb25TY2hlbWU6OmNiY3MKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKaW5k
ZXggNGJiNTk5ZmE4MDczZDNiODU1ZDg0NjE3ODYxOWRiYzAyNjEwNThmMi4uNjYxZDViNGViNzUy
ZWE1NWFhMmQ4ZTRmOWVlZDYzODZlZGRhYzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKQEAgLTU3LDYgKzU3LDEx
IEBAIHZvaWQgQ0RNRmFjdG9yeTo6dW5yZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYgZmFjdG9y
eSkKICAgICByZWdpc3RlcmVkRmFjdG9yaWVzKCkucmVtb3ZlQWxsKCZmYWN0b3J5KTsKIH0KIAor
dm9pZCBDRE1GYWN0b3J5OjpyZXNldEZhY3RvcmllcygpCit7CisgICAgcGxhdGZvcm1SZWdpc3Rl
ckZhY3RvcmllcyhyZWdpc3RlcmVkRmFjdG9yaWVzKCkpOworfQorCiAjaWYgIVVTRShHU1RSRUFN
RVIpICYmICFVU0UoQVZGT1VOREFUSU9OKQogdm9pZCBDRE1GYWN0b3J5OjpwbGF0Zm9ybVJlZ2lz
dGVyRmFjdG9yaWVzKFZlY3RvcjxDRE1GYWN0b3J5Kj4mKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDQ0ZWFhYjA3
ZTc1N2FmZTU4YjUzNjFmNWFmMTJiMjQ3NzZhMDM1MmUuLmUxYWU2MDQyMTZhOTc1OTJmMzNjYjgz
NjJmYzJjMjFhMmIwODhiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQyLDcgKzQyLDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmlu
ZyYpID0gMDsKIAotICAgIHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiByZWdpc3RlcmVkRmFj
dG9yaWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4m
IHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBy
ZXNldEZhY3RvcmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
RmFjdG9yeShDRE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5y
ZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCA4ZjlmM2ViODc0NWMz
NTIwMjgzMTRjNjA2ZDI4OWQ0ZTNmNzFhMDQ4Li43ZmUwOWYwYWYzZmQ3MzAzNjIzNWMyMjc3YmFj
ZGViYTA2NDliMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgICAg
ICBNb2NrLAogICAgICAgICBDbGVhcktleSwKICAgICAgICAgRmFpclBsYXlTdHJlYW1pbmcsCisg
ICAgICAgIFJlbW90ZSwKICAgICB9OwogICAgIHZpcnR1YWwgSW1wbGVtZW50YXRpb25UeXBlIGlt
cGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0ID0gMDsKIApAQCAtNjgsNyArNjksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CiAK
LSAgICBlbnVtIGNsYXNzIEhEQ1BTdGF0dXMgeworICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyA6
IHVpbnQ4X3QgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWYWxpZCwKICAgICAgICAgT3V0
cHV0UmVzdHJpY3RlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggODcyNWEzMWQ4YmIzZTIy
YmUyMWRmMDdlMzIwYjM2ZTc1MDM4NmUxYS4uZDQ2NGI3NGQxYzcyMDJhOWEzMzlkZmY2NWQwNmUw
ODIwODk2OWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTcyLDkgKzcyLDkgQEAgcHVi
bGljOgogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVu
dDo6S2V5U3RhdHVzVmVjdG9yOwogICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2Fn
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9u
YWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hh
bmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKLSAgICBlbnVt
IGNsYXNzIFNlc3Npb25Mb2FkRmFpbHVyZSB7CisgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZh
aWx1cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKICAgICAgICAgTm9TZXNzaW9uRGF0YSwK
ICAgICAgICAgTWlzbWF0Y2hlZFNlc3Npb25UeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAppbmRleCBhZDk2OTYyMzYw
NGNkMTQ3MDU1YTI3YjczMzZmNjc3YzBiM2FmMmM0Li5jYzVlNzE4NmY3NGVmOGU4MTRjYjNhZjc1
NWUxNjFhNjVjMjA4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNS2V5U3RhdHVzIHsKK2VudW0gY2xhc3Mg
Q0RNS2V5U3RhdHVzIDogdWludDhfdCB7CiAgICAgVXNhYmxlLAogICAgIEV4cGlyZWQsCiAgICAg
UmVsZWFzZWQsCkBAIC00NCw0ICs0NiwyMCBAQCBlbnVtIGNsYXNzIENETUtleVN0YXR1cyB7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXMsCisgICAgV2ViQ29y
ZTo6Q0RNS2V5U3RhdHVzOjpVc2FibGUsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpFeHBp
cmVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6UmVsZWFzZWQsCisgICAgV2ViQ29yZTo6
Q0RNS2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1
czo6T3V0cHV0RG93bnNjYWxlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlN0YXR1c1Bl
bmRpbmcsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yCisgICAgPjsK
K307CisKK30KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDYxMmQ2NDVmYWE1MjQ4ZjcxZjFjMTU2N2Y0NTA3
ZTg5ZjNiMzFjZTUuLjg1MjU4N2NlZGEwNTEyMTQ0Nzk1MjJmYWMzOGU0YzBmYjk4NzQ5ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTQ4LDYgKzQ4LDY3IEBAIHN0
cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIHsKICAgICBDRE1SZXF1aXJlbWVudCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXIgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBDRE1S
ZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGUgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsK
ICAgICBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+IHNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CisgICAgICAgIGVuY29kZXIgPDwgaW5p
dERhdGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAg
ICAgZW5jb2RlciA8PCB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlOwor
ICAgICAgICBlbmNvZGVyIDw8IHNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IGxhYmVsOworICAgICAgICBkZWNvZGVyID4+IGxhYmVsOworICAgICAgICBpZiAoIWxh
YmVsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBpbml0
RGF0YVR5cGVzOworICAgICAgICBpZiAoIWluaXREYXRhVHlwZXMpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFi
aWxpdHk+PiBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgZGVjb2RlciA+PiBhdWRpb0NhcGFi
aWxpdGllczsKKyAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2Fw
YWJpbGl0eT4+IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAgICBkZWNvZGVyID4+IHZpZGVvQ2Fw
YWJpbGl0aWVzOworICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4g
ZGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRl
bnRpZmllcjsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXIpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAKKyAgICAgICAgT3B0aW9uYWw8Q0RNUmVx
dWlyZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50
U3RhdGU7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+
PiBzZXNzaW9uVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc2Vzc2lvblR5cGVzOworICAgICAg
ICBpZiAoIXNlc3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCisgICAgICAg
ICAgICBXVEZNb3ZlKCppbml0RGF0YVR5cGVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmF1ZGlv
Q2FwYWJpbGl0aWVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnZpZGVvQ2FwYWJpbGl0aWVzKSwK
KyAgICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAqcGVyc2lz
dGVudFN0YXRlLAorICAgICAgICAgICAgV1RGTW92ZSgqc2Vzc2lvblR5cGVzKSwKKyAgICAgICAg
fX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxp
dHkuaAppbmRleCA5MDFiNTRmZjA1MDhlZGE5YmJiODhjNWMxZGI4NjUzOGRjZTE0MjgyLi5mODRh
MGQxMmFiNGNkNTIwZTNmMGUwNGQ2NGViZWZjNjMxNjI1ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxp
dHkuaApAQCAtMzksNiArMzksMzkgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAg
U3RyaW5nIGNvbnRlbnRUeXBlOwogICAgIFN0cmluZyByb2J1c3RuZXNzOwogICAgIE9wdGlvbmFs
PENETUVuY3J5cHRpb25TY2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBlbmNvZGVyIDw8IGNvbnRlbnRUeXBlOworICAgICAgICBlbmNvZGVyIDw8
IHJvYnVzdG5lc3M7CisgICAgICAgIGVuY29kZXIgPDwgZW5jcnlwdGlvblNjaGVtZTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RN
TWVkaWFDYXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAg
IE9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVu
dFR5cGU7CisgICAgICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcm9idXN0bmVzczsKKyAgICAg
ICAgZGVjb2RlciA+PiByb2J1c3RuZXNzOworICAgICAgICBpZiAoIXJvYnVzdG5lc3MpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFs
PENETUVuY3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBkZWNvZGVy
ID4+IGVuY3J5cHRpb25TY2hlbWU7CisgICAgICAgIGlmICghZW5jcnlwdGlvblNjaGVtZSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAg
ICAgICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCisgICAgICAgICAgICBXVEZNb3ZlKCpyb2J1
c3RuZXNzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmVuY3J5cHRpb25TY2hlbWUpLAorICAgICAg
ICB9fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaApp
bmRleCBlNWY3OTZhOWUwZTA3NTFhYTAyNzgyYjliNjY2Y2EyMzFlZjdlNjA5Li45NWJmMjhjMmFh
OTRhM2RhNTA0NWI1ZWMwMGYzNThjZDI2ZDk1Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKQEAgLTMwLDkg
KzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETU1lc3Nh
Z2VUeXBlIHsKK2VudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBMaWNl
bnNlUmVxdWVzdCwKICAgICBMaWNlbnNlUmVuZXdhbCwKICAgICBMaWNlbnNlUmVsZWFzZSwKQEAg
LTQxLDQgKzQzLDE4IEBAIGVudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgewogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsCisgICAgICAgIFdlYkNv
cmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6Q0RN
TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdl
VHlwZTo6TGljZW5zZVJlbGVhc2UsCisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpJ
bmRpdmlkdWFsaXphdGlvblJlcXVlc3QKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCAyNWY3ODE2YTJmZTFkYTZmOTBjMmZlZjc3
NzU1MTQwNmFhMGY0YTAzLi43NDlmY2RmMmZjMzdhNWU5ZmU2MjVkNTNhM2UwMTFjNzFjNGFlZDMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCkBAIC00MSwxMSArNDEsMTEgQEAgY2xhc3MgQ0RNUHJpdmF0ZSB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlw
ZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVz
c2VzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBDRE1SZXF1aXJl
bWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQu
aAppbmRleCA2OWFjMTJkMzE2YmY2NjU3YmIwYTI0ZGFmN2FlNGZhMGZkNGYxYzk4Li41YjBiNzc4
MGQyN2RmZWIxOTNkY2U2ZWNkYTcxNzg1MjhmN2NkNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50LmgKQEAgLTMw
LDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETVJl
cXVpcmVtZW50IHsKK2VudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90IHsKICAgICBS
ZXF1aXJlZCwKICAgICBPcHRpb25hbCwKICAgICBOb3RBbGxvd2VkCkBAIC00MCw0ICs0MiwxNyBA
QCBlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpDRE1SZXF1aXJlbWVudD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAg
ICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50LAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJl
bWVudDo6UmVxdWlyZWQsCisgICAgICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpPcHRpb25h
bCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQKKyAgICA+Owor
fTsKKworfQorCiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25z
LmgKaW5kZXggYzUyZTI4MmExMmU5MWE0ODgxMGJkMThiODdlYjZhZDYzOGYyMTBhOC4uOWNhMmFj
NTllOGIxMzU0NjNhNTJkYjQ1ZTgwNzMxZjUwYzY5NGYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgKQEAg
LTM2LDYgKzM2LDM5IEBAIHN0cnVjdCBDRE1SZXN0cmljdGlvbnMgewogICAgIGJvb2wgZGlzdGlu
Y3RpdmVJZGVudGlmaWVyRGVuaWVkIHsgZmFsc2UgfTsKICAgICBib29sIHBlcnNpc3RlbnRTdGF0
ZURlbmllZCB7IGZhbHNlIH07CiAgICAgSGFzaFNldDxDRE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRI
YXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDRE1TZXNzaW9u
VHlwZT4+IGRlbmllZFNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAg
IGVuY29kZXIgPDwgZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkOworICAgICAgICBlbmNvZGVy
IDw8IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsKKyAgICAgICAgZW5jb2RlciA8PCBkZW5pZWRTZXNz
aW9uVHlwZXM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3Rh
dGljIE9wdGlvbmFsPENETVJlc3RyaWN0aW9ucz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisg
ICAgeworICAgICAgICBPcHRpb25hbDxib29sPiBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQ7
CisgICAgICAgIGRlY29kZXIgPj4gZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkOworICAgICAg
ICBpZiAoIWRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVudFN0YXRlRGVu
aWVkOworICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsKKyAgICAgICAg
aWYgKCFwZXJzaXN0ZW50U3RhdGVEZW5pZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIE9wdGlvbmFsPEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUsIFdURjo6SW50
SGFzaDxDRE1TZXNzaW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lv
blR5cGU+Pj4gZGVuaWVkU2Vzc2lvblR5cGVzOworICAgICAgICBkZWNvZGVyID4+IGRlbmllZFNl
c3Npb25UeXBlczsKKyAgICAgICAgaWYgKCFkZW5pZWRTZXNzaW9uVHlwZXMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAg
KmRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCwKKyAgICAgICAgICAgICpwZXJzaXN0ZW50U3Rh
dGVEZW5pZWQsCisgICAgICAgICAgICBXVEZNb3ZlKCpkZW5pZWRTZXNzaW9uVHlwZXMpLAorICAg
ICAgICB9fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUu
aAppbmRleCA2MDU3NGE1YTY5M2E5NmM0OWY0OWZiNzM0OTZlZDc1YjdlMWU2ZmJiLi5lMDdjMzAw
Mjc5MzA1Zjc3NDNmMjJmY2Y1NDA2ZjJjZmE2ODFkZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKQEAgLTMw
LDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETVNl
c3Npb25UeXBlIHsKK2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90IHsKICAgICBU
ZW1wb3JhcnksCiAgICAgUGVyc2lzdGVudFVzYWdlUmVjb3JkLAogICAgIFBlcnNpc3RlbnRMaWNl
bnNlCkBAIC00MCw0ICs0MiwxNyBAQCBlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIHsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZT4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlLAorICAgICAg
ICBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5LAorICAgICAgICBXZWJDb3JlOjpD
RE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVjb3JkLAorICAgICAgICBXZWJDb3JlOjpD
RE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2UKKyAgICA+OworfTsKKworfQorCiAjZW5k
aWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAppbmRleCA0NTExMWRjNzViNTUwODBjZWY0ZTVmYjM4YWUyNjMzYjM5ZWE3MjMzLi44NjRkNmUz
ZGU4M2IwMmMzYjFjMGQzYWRiNTY1N2IzY2U3YjYxOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbi5oIgogI2luY2x1ZGUgIkNETVJlc3RyaWN0aW9ucy5oIgogI2luY2x1ZGUgIkNETVNl
c3Npb25UeXBlLmgiCisjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+
CkBAIC0yOTAsMTAgKzI5MSwxMyBAQCBib29sIENETUZhY3RvcnlDbGVhcktleTo6c3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiBDRE1Qcml2YXRlQ2xlYXJLZXk6OkNE
TVByaXZhdGVDbGVhcktleSgpID0gZGVmYXVsdDsKIENETVByaXZhdGVDbGVhcktleTo6fkNETVBy
aXZhdGVDbGVhcktleSgpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1
cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QK
K1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZEluaXREYXRh
VHlwZXMoKSBjb25zdAogewotICAgIC8vIGBrZXlpZHNgIGFuZCAnY2VuYycgYXJlIHRoZSBvbmx5
IHN1cHBvcnRlZCBpbml0IGRhdGEgdHlwZS4KLSAgICByZXR1cm4gKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpIHx8IGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImNlbmMiKSB8fCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJ3ZWJtIikpOworICAgIHJldHVybiB7CisgICAgICAg
IEluaXREYXRhUmVnaXN0cnk6OmtleWlkc05hbWUoKSwKKyAgICAgICAgSW5pdERhdGFSZWdpc3Ry
eTo6Y2VuY05hbWUoKSwKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6d2VibU5hbWUoKSwKKyAg
ICB9OwogfQogCiBzdGF0aWMgYm9vbCBjb250YWluc1BlcnNpc3RlbnRMaWNlbnNlVHlwZShjb25z
dCBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+JiB0eXBlcykKQEAgLTMzNyw3ICszNDEsNyBAQCBib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9u
cyhjb25zdCBDRE1LZXlTeXN0ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZh
dGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Np
b25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBl
LCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAog
ewogICAgIC8vIE9ubHkgc3VwcG9ydCB0aGUgJ3RlbXBvcmFyeScgYW5kICdwZXJzaXN0ZW50LWxp
Y2Vuc2UnIHNlc3Npb24gdHlwZXMuCiAgICAgaWYgKHNlc3Npb25UeXBlICE9IENETVNlc3Npb25U
eXBlOjpUZW1wb3JhcnkgJiYgc2Vzc2lvblR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3Rl
bnRMaWNlbnNlKQpAQCAtMzQ1LDEwICszNDksMTAgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYgc2UK
ICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1i
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYg
cm9idXN0bmVzcykgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0CiB7CiAgICAgLy8gT25seSBlbXB0eSBgcm9i
dXN0bmVzc2Agc3RyaW5nIGlzIHN1cHBvcnRlZC4KLSAgICByZXR1cm4gcm9idXN0bmVzcy5pc0Vt
cHR5KCk7CisgICAgcmV0dXJuIHsgZW1wdHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQg
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVz
dHJpY3Rpb25zKSBjb25zdApAQCAtNDk4LDcgKzUwMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpCiAgICAgICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVE
CiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhl
IHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmgKaW5kZXggNjcwNGFlN2E5NTdmMzJmZTFmODQ5ODNlZDNiM2Y2NTAyYTUzMTVhMi4u
NGFiOWRlMGYwMmNlZWJiMjBhOTNjZGY2MWUzYjc3MGY1ZmRlODIzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oCkBAIC03NCwxMSArNzQsMTEgQEAgcHVibGljOgogICAgIENETVByaXZhdGVD
bGVhcktleSgpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVDbGVhcktleSgpOwogCi0gICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7Cisg
ICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5h
bDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0
aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1JvYnVzdG5l
c3MoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlz
dGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBDRE1SZXF1
aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoQ0RNSW5zdGFu
Y2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6IG1fcGFyZW50SW5zdGFuY2UocGFyZW50KSB7
IH0KICAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Np
b25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNTdkZmNiZjRiYzdjNDg4NDRkMzgxY2IzNWVj
YzY0M2MxYWFiNGI5Mi4uZGIwYjJmOGE3ZTBmMjY5NmExZDhkYjZmNGQ0ZjQ3YWFlYzhlYmQ0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cApAQCAtNjU3LDYgKzY1NywxNCBAQCB2b2lkIE1lZGlhUGxheWVyOjphdHRlbXB0VG9EZWNyeXB0
V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIAogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3Zv
aWQgTWVkaWFQbGF5ZXI6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91
bGQpCit7CisgICAgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkID0gc2hvdWxkOworICAg
IG1fcHJpdmF0ZS0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGQpOworfQor
I2VuZGlmCisKIE1lZGlhVGltZSBNZWRpYVBsYXllcjo6ZHVyYXRpb24oKSBjb25zdAogewogICAg
IHJldHVybiBtX3ByaXZhdGUtPmR1cmF0aW9uTWVkaWFUaW1lKCk7CkBAIC0xMzEyLDkgKzEzMjAs
OSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IE1lZGlhUGxheWVyOjpjYWNoZWRLZXlGb3JLZXlJZChj
b25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXll
ckNhY2hlZEtleUZvcktleUlkKGtleUlkKTsKIH0KIAotYm9vbCBNZWRpYVBsYXllcjo6a2V5TmVl
ZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKFVp
bnQ4QXJyYXkqIGluaXREYXRhKQogewotICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllcktl
eU5lZWRlZChpbml0RGF0YSk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5p
dERhdGEpOwogfQogCiBTdHJpbmcgTWVkaWFQbGF5ZXI6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKaW5kZXggN2U2Y2I4YTM5MGRmN2ZlMWE3YWFlMDE3MzlkYzk0OGY3NzY2MjFlZS4uYWVm
M2NlZTRhYWI5ZWEyMGM1NjllNjdhNDFlMTIwYjc2NDBlZmE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0yMDAsNyArMjAwLDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVh
bCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3Qg
U3RyaW5nJikgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgYm9vbCBtZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIHsgfQogICAgIHZpcnR1
YWwgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICNlbmRpZgogCkBAIC0zNjYsNiArMzY2LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2Um
KTsKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKGJvb2wpOworICAgIGJvb2wgc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZDsgfQorI2VuZGlmCisKICAg
ICBib29sIHBhdXNlZCgpIGNvbnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCkBAIC01
MTksNyArNTI0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJp
bmcmIGtleUlkKSBjb25zdDsKLSAgICBib29sIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0
YSk7CisgICAgdm9pZCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOwogICAgIFN0cmlu
ZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAjZW5kaWYKIApAQCAtNjY1LDYg
KzY3MCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8
TWVkaWFTdHJlYW1Qcml2YXRlPiBtX21lZGlhU3RyZWFtOwogI2VuZGlmCisjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgYm9v
bCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxzZSB9OworI2VuZGlmCiB9Owog
CiBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCA5ZjdmNmU2YjAyZDNi
ZWJlMDkwZWJjYzMyYTRiMGRjYTFjYzE3NWE4Li43YTgyMDQ3MGY5OTlhYzk5YTZhOTlkOGYzNDI3
NmM5ZjQ1NTkwYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjQzLDYgKzI0MywxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktl
eU5lZWRlZChib29sKSB7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDRmYzY3ODdkZDhkOTA3Y2FkNmEyNzdmMzliMWVkMzJl
ZDY3OWE2ZDguLmI2YmFiZmNkZTVhMGQ0YjgxMThkMDNjYzkyZjFkNjE5ZDYxZDc3ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMjQ3LDkgKzI0Nyw5
IEBAIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3RlbShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCkgPSBkZWZhdWx0OwogQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjp+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCkgPSBkZWZhdWx0OwogCi1i
b29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHZhbGlkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlw
ZSk7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcih2YWxpZEluaXREYXRhVHlwZXMoKSk7CiB9CiAK
IGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKQEAg
LTMwNSw3ICszMDUsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9y
dHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRAogICAgIHJldHVybiBzdXBw
b3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RN
U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlw
ZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3Vy
YXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKHNlc3Npb25UeXBlID09IENETVNlc3Npb25UeXBlOjpU
ZW1wb3JhcnkpIHsKICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09
IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKQEAgLTMxNiwxMyArMzE2LDEwIEBAIGJvb2wgQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24oQ0RNU2Vzc2lvCiAgICAgcmV0dXJuIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25maWd1
cmF0aW9uKTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
Um9idXN0bmVzcyhjb25zdCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0CitWZWN0b3I8QXRvbVN0
cmluZz4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMo
KSBjb25zdAogewotICAgIGlmIChyb2J1c3RuZXNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KICAgICAvLyBGSVhNRTogRGV0ZXJtaW5lIGFuIGVudW1lcmF0ZWQgbGlzdCBvZiBy
b2J1c3RuZXNzIHZhbHVlcyBzdXBwb3J0ZWQgYnkgRlBTLgotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4geyBlbXB0eUF0b20oKSB9OwogfQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29u
c3QKQEAgLTM2Niw3ICszNjMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIXN1cHBvcnRzSW5p
dERhdGFUeXBlKGluaXREYXRhVHlwZSkpCisgICAgaWYgKCF2YWxpZEluaXREYXRhVHlwZXMoKS5j
b250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
aW5pdERhdGFUeXBlID09IHNpbmZOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmgKaW5kZXggNTM4Njk2OWY5NDk3NmYzODM2ODAxODc0MWJhZmQxMjU1MWUyOGI4
NS4uMzg3YjlmOTI1YWQ3YWZiYWUyZDJjNTYxMmY4NGI0MzRjMGYxMGY0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6
CiAgICAgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAgICAgdmlydHVhbCB+Q0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBl
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3Vw
cG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlv
bnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9u
cyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25m
aWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0
cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBw
b3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IG92ZXJyaWRlOwogICAgIENE
TVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVh
cmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAKaW5kZXggNzBlYWMzNmE0Nzk3ODE1YTFhZjI0ZTJkNTdiMDIyNmZiNDk3
OWM0Ni4uOGE0ZTE0ODA2OTFlMWQ4YjZmZTgxMjY0YjkzOGI5ZmVkZTMxYzIxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwCkBAIC0xOTMxLDcgKzE5MzEsOSBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdh
aXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Ugog
CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpOwogICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUo
aW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgaWYgKCFtX293bmVyLT5w
bGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKKyAgICAgICAgbV9vd25lci0+cGxh
eWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisKKyAgICAgICAgaWYgKCFtX293bmVy
LT5wbGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJLCBhdlJlcXVl
c3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggYjExZjcxYTliNWUzOGJmNjk4YjEzOTQ5
ZGRkZTg2ZjNkZDk5NGNjMS4uN2YwZTJkNWFjMDBlNjA2MmQzNWJhYzQ1ZDZlMWU3MWQ0NDAzZTgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgog
CiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3MzI2Nzc1ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0NjQ3
Y2I4ZDMxLi5mMDliMjg5YTMzZTdlYzA0MGYwNGQxZjZmOTlhZjhlZjkwZDk3NzA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtNTgwLDcgKzU4MCw3IEBAIHN0YXRpYyBib29sIGlzRXF1
YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJl
dHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25z
ZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Np
b25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykp
IHsKICAgICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdKTsKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIFttX2N1
cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJl
c3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVz
cG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCku
cmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29u
dGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJl
YW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1d
OwogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2Fs
bGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1
Y2Nlc3MgY2FsbGJhY2suCiAgICAgc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uIG1ldGhv
ZCA9IHByb3RvY29sX2dldE1ldGhvZERlc2NyaXB0aW9uKEBwcm90b2NvbChBVkNvbnRlbnRLZXlT
ZXNzaW9uRGVsZWdhdGUpLCBAc2VsZWN0b3IoY29udGVudEtleVNlc3Npb246Y29udGVudEtleVJl
cXVlc3REaWRTdWNjZWVkOiksIE5PLCBZRVMpOwpAQCAtMTE0MCw3ICsxMTQwLDggQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlm
aWVyQ2hhbmdlZChOU0RhdGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zZXNzaW9uSWQgPSBz
ZXNzaW9uSWQ7Ci0gICAgbV9jbGllbnQtPnNlc3Npb25JZENoYW5nZWQobV9zZXNzaW9uSWQpOwor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNlc3Npb25JZENoYW5nZWQobV9z
ZXNzaW9uSWQpOwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6Z3JvdXBTZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoQVZDb250ZW50S2V5UmVwb3J0
R3JvdXAqIGdyb3VwLCBOU0RhdGEgKnNlc3Npb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggYjM3YzQ0MTEzMTQ5ODg3OTU0NmVjOGE1N2EwZGQ4ZTExZjc4NDY5Ny4uZDc4
YzdjYWE2MDIwODNmYTNiODNiMzNjNzYwZGQ0ZjQxMTJkNjNiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0xNjc4LDkgKzE2NzgsMTIgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAg
ICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKFN0cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAw
KTsKIAogICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUo
aW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgaWYgKCFwbGF5ZXIoKS0+
a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKKyAgICAgICAgcGxheWVyKCktPmtleU5lZWRlZChp
bml0RGF0YS5wdHIoKSk7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICAgICAgaWYg
KCFwbGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCisjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICAgICAgaWYgKG1fY2RtSW5zdGFu
Y2UpIHsKQEAgLTE3MTMsNyArMTcxNiw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigp
LT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVk
KGluaXREYXRhLnB0cigpKTsKKworICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51
ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
bV9rZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleUlELCBhdlJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCBjZTVkOGY3ZDZiZGYzOGI1OTIyMDkz
MDJhNmU2ZDcxYjM2OTY2MzJkLi4wYTRkNjU3NTBhMTU0YzVlNWVlMTliNTgzMGM5ZmJhZTAwMDFl
M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtOTgs
NiArOTgsMTEgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiYgdHlwZXMpCiAgICAgICAgIG1fc3VwcG9ydGVkRGF0YVR5cGVzLmFwcGVu
ZCh0eXBlKTsKIH0KIAordm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkUm9idXN0bmVz
cyhWZWN0b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3NlcykKK3sKKyAgICBtX3N1cHBvcnRlZFJvYnVz
dG5lc3MgPSByb2J1c3RuZXNzZXMubWFwKFtdIChhdXRvJiByb2J1c3RuZXNzKSAtPiBBdG9tU3Ry
aW5nIHsgcmV0dXJuIHJvYnVzdG5lc3M7IH0pOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJp
dmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewogICAgIHJl
dHVybiBtYWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CkBAIC0xMDgsMTEg
KzExMywxOCBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3Rv
cnkpCiB7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06
OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCi0g
ICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGlu
aXREYXRhVHlwZSk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9mYWN0b3J5
LT5zdXBwb3J0ZWREYXRhVHlwZXMoKTsKKyAgICByZXR1cm4geyB9OworfQorCitWZWN0b3I8QXRv
bVN0cmluZz4gTW9ja0NETTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3Ru
ZXNzKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZp
Z3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KSBjb25zdApAQCAtMTM5LDcgKzE1MSw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNDb25maWd1
cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhD
b25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nl
c3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vz
c2lvblR5cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCku
Y29udGFpbnMoc2Vzc2lvblR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDgsMTMg
KzE2MCw2IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgTW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVz
cykgY29uc3QKLXsKLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5
LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0bmVzcyk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCiBNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwg
Y29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QKIHsKICAgICBpZiAobV9mYWN0b3J5
KQpAQCAtMTk5LDcgKzIwNCw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNv
bnN0CiAKIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAg
aWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghc3VwcG9y
dGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YSk7CkBAIC0zMjUsNyArMzMwLDcg
QEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2Us
IFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNz
aW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFj
dG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxs
cHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzMzLDcgKzMzOCw3IEBAIHZvaWQgTW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5n
PiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmlu
ZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAg
aWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkg
ewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oCmluZGV4IDM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1
MDU5ZjEuLjZjYjkxNWM4NTAxNTU4ZjEwYmI4ZmM1YjJkYTUyODM1MDQwZjBlYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGlj
OgogICAgIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lv
blR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7IH0KICAgICB2
b2lkIHNldFN1cHBvcnRlZFNlc3Npb25UeXBlcyhWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4m
JiB0eXBlcykgeyBtX3N1cHBvcnRlZFNlc3Npb25UeXBlcyA9IFdURk1vdmUodHlwZXMpOyB9CiAK
LSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsg
cmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsgfQotICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9i
dXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3MpIHsgbV9zdXBwb3J0ZWRSb2J1c3Ru
ZXNzID0gV1RGTW92ZShyb2J1c3RuZXNzKTsgfQorICAgIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5n
PiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0
bmVzczsgfQorICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYm
KTsKIAogICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVt
ZW50OyB9CiAgICAgdm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoTWVk
aWFLZXlzUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpIHsgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJz
UmVxdWlyZW1lbnQgPSByZXF1aXJlbWVudDsgfQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgog
ICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4g
bV9zdXBwb3J0ZWREYXRhVHlwZXM7CiAgICAgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+IG1f
c3VwcG9ydGVkU2Vzc2lvblR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkUm9i
dXN0bmVzczsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwog
ICAgIFZlY3RvcjxNZWRpYUtleUVuY3J5cHRpb25TY2hlbWU+IG1fc3VwcG9ydGVkRW5jcnlwdGlv
blNjaGVtZXM7CiAgICAgYm9vbCBtX3JlZ2lzdGVyZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2Nh
bkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKQEAgLTEwOSwxMSArMTA5LDExIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1vY2tDRE1JbnN0YW5jZTsKIAotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOworICAg
IFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7
CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0
aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiwgY29u
c3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBz
dXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9u
VHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwog
ICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0
cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBwZXJzaXN0
ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CkBAIC0xNTcsNyArMTU3LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBlNjg2YzYzYzE4ZjM1
ODZmZmNhNzRlMTczMWMwZmYyNzc0MWIwZDNiLi5jNWFmM2I1ZmJlMGNhYmI4YjJkZTMwZDA4NmQz
M2E0Zjc5NDc5MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CkBAIC0xNiw2ICsxNiwxMCBAQCAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVBy
b2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBs
ZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNz
YWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBA
IC0xMDgsNiArMTEyLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDFmY2Y3ZTQxMTA3ZmIzZjdiZTJiYzY5OTkzNjZhMDVm
OGU2NTA4MjguLmM3M2UyODczZDliZmNhNzE0NjZjOTQ3MzExM2I5MDAyNjBiNTE3NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTI5
LDYgKzEyOSwyMSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMGQxNzI1NTg3NWExNmVjNmQzZTZhZmQyNTA2YjUx
NTU3NjM1NDA0Li4yZDAwNzU4N2E0NTg2MTMwNmY0MmRjYzM1MDhkNjVjZmNiZTYyZWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDYsNiArMTQ2LDExIEBAIE1FU1NBR0VfUkVD
RUlWRVJTID0gXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
ciBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgXAogICAgIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAorICAgIFJlbW90ZUNETVByb3h5IFwKKyAgICBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkgXAorICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkgXAorICAg
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCiAgICAgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGEzOTRlMDk0MzFlMDI3NjhmYTEwNzQ3Y2VjZjJiOTNlOWRmOTE2MjUuLjM5MDli
Yzg2OTU3ZTYwYjQyYjIzNGY5ZTMzZmEwM2ZiYmMxNGQ5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTU4
LDEwICs1OCwxOCBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotCiAjaW5j
bHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIK
KyNlbmRpZgorCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTE4OSw2ICsxOTcsMTcgQEAgTGliV2ViUlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmxpYldlYlJUQ0NvZGVjc1Byb3h5KCkKIH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUNETUZhY3RvcnlQcm94eSYgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y2RtRmFjdG9yeVByb3h5KCkKK3sKKyAgICBpZiAoIW1fY2RtRmFj
dG9yeVByb3h5KQorICAgICAgICBtX2NkbUZhY3RvcnlQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PigqdGhpcyk7CisKKyAgICByZXR1cm4gKm1fY2RtRmFjdG9yeVByb3h5
OworfQorI2VuZGlmCisKKwogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKQEAgLTIzOSw2ICsyNTgsMjcgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIEkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5
UHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1NZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVBy
b3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZl
Q0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2RlcikKQEAgLTI1OSw2ICsyOTksMjcgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNz
KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFj
dG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5k
aWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgp
LmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI2OSw3ICszMzAsNyBAQCBjb25zdCBTdHJpbmcm
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAog
ICAgIHJldHVybiBtX2dwdVByb2Nlc3MtPm1lZGlhQ2FjaGVEaXJlY3RvcnkobV9zZXNzaW9uSUQp
OwogfQogCi0jaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiBjb25zdCBT
dHJpbmcmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdAogewogICAgIHJldHVybiBtX2dwdVByb2Nlc3MtPm1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkobV9zZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMGVjMjM4Y2QwNjI1MzgzNDc1OWJm
ZTk2YmJhZTBhZGViYjM1MWE3ZS4uZjAwMDFjZTQ4YWQwZTljMGY2ZjBmY2JlMGZmM2NmODVhMTc0
MTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgR1BVUHJvY2VzczsKIGNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5OwogY2xhc3MgUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOworY2xhc3MgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiBjbGFzcyBS
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyOwpAQCAtNzYsNiArNzcsMTAgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyJiBzZXNzaW9uTWFuYWdlcigpOwogCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkmIGNkbUZhY3RvcnlQcm94eSgp
OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQ
cm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwogCkBAIC0xMTgsNiArMTIzLDEwIEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0Nv
ZGVjc1Byb3h5OwogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcj4gbV9zZXNzaW9uTWFuYWdlcjsKKworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4g
bV9jZG1GYWN0b3J5UHJveHk7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3Rv
cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWI0YWZkNGI0MzY3NzdkMWM0ZDEzZjg3MGI0NGRk
MmIzNjk4MTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKKyNpbmNsdWRlICJSZW1vdGVDRE1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NE
TUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUNETUZhY3RvcnlQcm94
eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbikKK3sK
K30KKworUmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojp+UmVtb3RlQ0RNRmFjdG9yeVByb3h5KCkgPSBk
ZWZhdWx0OworCitzdGF0aWMgQ0RNRmFjdG9yeSogZmFjdG9yeUZvcktleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBhdXRvJiBmYWN0b3JpZXMgPSBDRE1GYWN0b3J5Ojpy
ZWdpc3RlcmVkRmFjdG9yaWVzKCk7CisgICAgYXV0byBmb3VuZEluZGV4ID0gZmFjdG9yaWVzLmZp
bmRNYXRjaGluZyhbJl0gKGF1dG8mIGZhY3RvcnkpIHsgcmV0dXJuIGZhY3RvcnktPnN1cHBvcnRz
S2V5U3lzdGVtKGtleVN5c3RlbSk7IH0pOworICAgIGlmIChmb3VuZEluZGV4ID09IG5vdEZvdW5k
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZmFjdG9yaWVzW2ZvdW5kSW5k
ZXhdOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZp
ZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGF1
dG8gZmFjdG9yeSA9IGZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVtKTsKKyAgICBpZiAoIWZh
Y3RvcnkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIHByaXZhdGVDRE0gPSBmYWN0b3J5LT5jcmVhdGVDRE0oa2V5U3lz
dGVtKTsKKyAgICBpZiAoIXByaXZhdGVDRE0pIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHByb3h5ID0gUmVtb3RlQ0RN
UHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92ZShwcml2YXRlQ0RNKSk7Cisg
ICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlQ0RNSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAg
ICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBwcm94eS0+Y29uZmlndXJh
dGlvbigpOworICAgIGFkZFByb3h5KGlkZW50aWZpZXIsIFdURk1vdmUocHJveHkpKTsKKyAgICBj
b21wbGV0aW9uKFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwor
fQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbikKK3sKKyAgICBjb21wbGV0aW9uKGZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJl
bW90ZUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAg
ICBwcm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IGlmIChhdXRvKiBpbnN0YW5jZSA9IG1faW5zdGFuY2VzLmdldChtYWtlT2JqZWN0SWRlbnRpZmll
cjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSkpKQorICAgICAgICBpbnN0YW5jZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0
KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJU
eXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChtYWtl
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6
OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBtX2luc3RhbmNlcy5nZXQo
bWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZT4oZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgaW5zdGFuY2UtPmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAg
ICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVu
Y29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkUHJveHkoUmVtb3Rl
Q0RNSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiYmIHByb3h5
KQoreworICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVz
LnNldChpZCwgV1RGTW92ZShwcm94eSkpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94
eTo6cmVtb3ZlUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9w
cm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmIGlu
c3RhbmNlKQoreworICAgIEFTU0VSVCghbV9pbnN0YW5jZXMuY29udGFpbnMoaWQpKTsKKyAgICBt
X2luc3RhbmNlcy5zZXQoaWQsIFdURk1vdmUoaW5zdGFuY2UpKTsKK30KKwordm9pZCBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciBpZCkKK3sKKyAgICBBU1NFUlQobV9pbnN0YW5jZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX2lu
c3RhbmNlcy5yZW1vdmUoaWQpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
ZmllciYgaWQpCit7CisgICAgcmV0dXJuIG1faW5zdGFuY2VzLmdldChpZCk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhpZCkp
OworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNlc3Npb24pKTsKK30KKwordm9pZCBS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhpZCkp
OworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOWIxY2NjOTViYmQzZmUzYjlmMzM1MmQ4NTAwMjc3YTRiZmQzOTMzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUZhY3RvcnlQcm94eS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlUHJveHk7CitjbGFzcyBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTsKK2NsYXNzIFJlbW90ZUNETVByb3h5Oworc3RydWN0IFJlbW90
ZUNETUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eSBmaW5hbCA6
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1v
dGVDRE1GYWN0b3J5UHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYp
OworICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnlQcm94eSgpOworCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RN
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpOworCisgICAgdm9pZCBhZGRQcm94eShSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlUHJveHkoUmVtb3Rl
Q0RNSWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+JiYpOwor
ICAgIHZvaWQgcmVtb3ZlSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKKyAg
ICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBnZXRJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyKTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb247CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsIHsgfQorICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdl
cworICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biYmKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKyAgICBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgSGFzaE1h
cDxSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+PiBt
X3Byb3hpZXM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5Pj4gbV9pbnN0YW5jZXM7CisgICAgSGFz
aE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0N2M1ZTZl
NjFjNDIwNzgzMWRhMGJkMTE4YTZhYWViNDBkMzMxMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1GYWN0
b3J5UHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlQ0RNKFN0cmluZyBrZXlTeXN0ZW0p
IC0+IChXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlJlbW90
ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0
c0tleVN5c3RlbShTdHJpbmcga2V5U3lzdGVtKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3Vz
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlZDkyNTQ1YjdmZDBk
NGQzMmY1MTI0MjUxZjhiMDAxNWNjYTk1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTAsMCAr
MSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
RE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYg
ZmFjdG9yeSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYpCit7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJj4oeworICAg
ICAgICBwcml2LT5rZXlTeXN0ZW0oKSwKKyAgICB9KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+KG5ldyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdU
Rk1vdmUoZmFjdG9yeSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsK
K30KKworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFr
UHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBSZWY8Q0RNSW5zdGFuY2U+JiYg
cHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1
cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2luc3Rh
bmNlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1
cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3Rh
bmNlUHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSA9PSBDRE1JbnN0YW5jZTo6U3VjY2VlZGVkKTsK
K30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXREaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzQWxsb3dlZChib29sIGFsbG93ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPnNldERpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkKGFsbG93ZWQpID09IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOwor
fQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQoYm9vbCBhbGxvd2VkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b24pCit7CisgICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5zZXRQZXJzaXN0ZW50U3RhdGVBbGxv
d2VkKGFsbG93ZWQpID09IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYmIGNlcnRpZmljYXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFjZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAg
ICAgICBjb21wbGV0aW9uKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNv
bXBsZXRpb24obV9pbnN0YW5jZS0+c2V0U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVm
ZmVyKCkucmVsZWFzZU5vbk51bGwoKSkgPT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uKQoreworICAgIGNvbXBsZXRpb24obV9pbnN0YW5jZS0+c2V0U3RvcmFnZURpcmVjdG9yeShk
aXJlY3RvcnkpID09IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYgY29tcGxldGlvbikKK3sK
KyAgICBhdXRvIHByaXZTZXNzaW9uID0gbV9pbnN0YW5jZS0+Y3JlYXRlU2Vzc2lvbigpOworICAg
IGlmICghcHJpdlNlc3Npb24gfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlc3Np
b24gPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1f
ZmFjdG9yeS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVhc2VOb25OdWxsKCksIGlkZW50aWZpZXIp
OworICAgIG1fZmFjdG9yeS0+YWRkU2Vzc2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24p
KTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OnNldEhEQ1BTdGF0dXMoV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXMg
c3RhdHVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5zZXRIRENQU3RhdHVzKHN0YXR1cykgPT0gQ0RNSW5z
dGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdkZjZmMTExMWY3MTIwNzQ2N2NmM2NiYjc4MDdlZWQ4OTFkNGFlYTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIENETUluc3RhbmNlOworc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247Cit9
CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3Vy
YXRpb247CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTsKKworY2xhc3MgUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+
IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNE
TUluc3RhbmNlPiYmKTsKKyAgICB+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpOworCisgICAgY29u
c3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOyB9CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2UmIGluc3RhbmNlKCkgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQorCitwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUlu
c3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiYmKTsK
KworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAg
ICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZv
aWQgY3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJik7CisgICAgdm9pZCBzZXRIRENQU3RhdHVzKFdl
YkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7
CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNlOworICAgIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKKyAgICBI
YXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lvbnM7Cit9OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDIx
OTc0NjdkMDk2NTNmNDBkMDdmZTc5NWMwNmY5ZDA1NDc2NzA4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNE
TUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlU2Vzc2lvbigpIC0+IChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpIFN5bmNocm9ub3Vz
CisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNo
cm9ub3VzCisgICAgU2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCBhbGxvd2Vk
KSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworICAgIFNldFBlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQoYm9vbCBhbGxvd2VkKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworICAgIFNl
dFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0aWZp
Y2F0ZSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKKyAgICBTZXRTdG9yYWdlRGlyZWN0
b3J5KFN0cmluZyBkaXJlY3RvcnkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAg
U2V0SERDUFN0YXR1cyhXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cyBzdGF0dXMpIC0+
IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg1MjFkNjg4ZTgwZTAxYWE4NDVkZDA5MGIyM2M4
OGUxMThjZjcyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTAsMCArMSwxMjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eT4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZShXZWFr
UHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBSZWY8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHNlc3Npb25Qcm94eSA9IHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4obmV3IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50aWZpZXIp
KTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHktPm1fc2Vz
c2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Npb25Qcm94
eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUo
ZmFjdG9yeSkpCisgICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6flJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KCkKK3sKK30KKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwg
QXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIGlmICghaW5p
dERhdGEuYnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCks
IGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24t
PnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVs
ZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNj
ZWVkZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNl
c3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZl
cigpKSB7CisgICAgICAgIGNvbXBsZXRpb24odHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9u
LT51cGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwgKnJlc3BvbnNlLmJ1ZmZlcigpLCBbY29t
cGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChib29sIHNlc3Npb25DbG9zZWQsIE9wdGlv
bmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBP
cHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1
ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uKHNlc3Npb25DbG9zZWQs
IFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwgV1RGTW92ZSht
ZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAg
ICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Np
b24oTGljZW5zZVR5cGUgdHlwZSwgU3RyaW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbiwgTG9h
ZFNlc3Npb25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5sb2FkU2Vz
c2lvbih0eXBlLCBzZXNzaW9uSWQsIG9yaWdpbiwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBs
ZXRpb24pXSAoT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYg
a2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0aW9uYWw8
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9h
ZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShr
ZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
dWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQsIGZhaWx1cmUpOworICAg
IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Np
b24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxl
dGlvbikKK3sKKyAgICBtX3Nlc3Npb24tPmNsb3NlU2Vzc2lvbihzZXNzaW9uSWQsIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7IGNvbXBsZXRpb24oKTsgfSk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNl
c3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRp
b24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywg
T3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
T3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBleHBpcmVkU2Vzc2lvbkRh
dGFSZWZlcmVuY2U7CisgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQorICAgICAgICAg
ICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlKFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsKKyAgICAgICAgY29tcGxldGlv
bihXVEZNb3ZlKGtleVN0YXR1c2VzKSwgV1RGTW92ZShleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVu
Y2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0p
OworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzdG9yZVJlY29yZE9m
S2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgbV9zZXNzaW9uLT5zdG9y
ZVJlY29yZE9mS2V5VXNhZ2Uoc2Vzc2lvbklkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3Rh
dHVzZXMpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykp
LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6U2VuZE1lc3NhZ2UodHlwZSwgV1RGTW92ZShtZXNzYWdlKSksIG1f
aWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNl
c3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKG1fZmFj
dG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lv
bklkQ2hhbmdlZChzZXNzaW9uSWQpLCBtX2lkZW50aWZpZXIpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTg0NjQwODNkY2FjM2Q3YWQ1
ZDU0YWViMWNmZDBjYjIzMGJkNTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKQEAgLTAsMCAr
MSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0
YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYsIFJlZjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIp
OworICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KCk7CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwg
UmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CisKKyAgICAvLyBUeXBlcworICAgIHVzaW5nIExpY2Vuc2VUeXBlID0gV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZTsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvcjsKKyAgICB1c2luZyBN
ZXNzYWdlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlOworICAgIHVzaW5n
IFNlc3Npb25Mb2FkRmFpbHVyZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lv
bkxvYWRGYWlsdXJlOworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBib29sLCBib29sKT47CisgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+
JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCk+OworICAg
IHVzaW5nIExvYWRTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgT3B0aW9uYWw8ZG91YmxlPiYmLCBPcHRpb25hbDxNZXNz
YWdlPiYmLCBib29sLCBTZXNzaW9uTG9hZEZhaWx1cmUpPjsKKyAgICB1c2luZyBDbG9zZVNlc3Np
b25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CisgICAgdXNpbmcgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVj
dG9yJiYsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mJiwgYm9vbCk+
OworICAgIHVzaW5nIFN0b3JlUmVjb3JkQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+OworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlJiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKTsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoU3RyaW5nIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBs
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgU3RyaW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbiwg
TG9hZFNlc3Npb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCByZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2smJik7CisgICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQpOworCisgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
CisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7Cisg
ICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlc3Npb25JZENoYW5n
ZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQ
cm94eT4gbV9mYWN0b3J5OworICAgIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IG1f
c2Vzc2lvbjsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIzM2VlOWMzMTVjZjI4OWYyN2ZhZjcxYTJjZGIz
YmQ0OWZiMTE2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkgTm90UmVmQ291bnRlZCB7CisKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNl
KFN0cmluZyBzZXNzaW9uSWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5
cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9v
bCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4
cGlyYXRpb24sIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4g
bWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBT
dHJpbmcgb3JpZ2luKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBp
cmF0aW9uLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1l
c3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VT
ZXNzaW9uKFN0cmluZyBzZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRh
dGEoU3RyaW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNl
VHlwZSB0eXBlKSAtPiAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3IgY2hhbmdlZEtleXMsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4g
bWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdl
KFN0cmluZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRkODBiYWEzMzcw
MGFiMTI5M2VmNjI3NmYwYjI2NDM3NTkwN2UxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETVByb3h5PiBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Q
cml2YXRlPiYmIHByaXYpCit7CisgICAgaWYgKCFwcml2KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24sIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24m
Jj4oeworICAgICAgICBwcml2LT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCksCisgICAgICAgIHBy
aXYtPnN1cHBvcnRlZFJvYnVzdG5lc3NlcygpLAorICAgICAgICBwcml2LT5zdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcygpLAorICAgICAgICBwcml2LT5zdXBwb3J0c1Nlc3Npb25zKCkKKyAgICB9
KTsKKyAgICAvLyBVc2UgbmV3KCkgdG8gYWNjZXNzIENETVByaXZhdGUncyBwcml2YXRlIGNvbnN0
cnVjdG9yLgorICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+KG5ldyBS
ZW1vdGVDRE1Qcm94eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eShXZWFr
UHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8Q0RN
UHJpdmF0ZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4mJiBjb25m
aWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3By
aXZhdGUoV1RGTW92ZShwcml2KSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pKQoreworfQorCitSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBk
ZWZhdWx0OworCit2b2lkIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2
YXRlLT5zdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJl
bW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IENETVJlc3Ry
aWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPnN1cHBvcnRzQ29uZmlndXJh
dGlvbldpdGhSZXN0cmljdGlvbnMoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSk7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBDRE1TZXNzaW9uVHlwZSYgdHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5zdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24odHlwZSwgY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90
ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxl
dGlvbihtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEodHlwZSwgKmRhdGEuYnVmZmVyKCkpKTsK
K30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVt
ZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0
IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENE
TVJlcXVpcmVtZW50KT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVzdHJp
Y3Rpb25zKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnBlcnNpc3RlbnRTdGF0ZVJlcXVp
cmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNv
bnN0IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KENETVJlcXVpcmVtZW50KT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2
YXRlLT5wZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fy
ZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPmRpc3RpbmN0aXZl
SWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uZmlndXJhdGlvbikp
OworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpjcmVhdGVJbnN0YW5jZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7CisgICAgYXV0byBwcml2YXRlSW5zdGFu
Y2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7CisgICAgaWYgKCFwcml2YXRlSW5zdGFu
Y2UgfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluc3RhbmNlID0gUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIHByaXZhdGVJbnN0YW5j
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBpbnN0YW5jZS0+Y29uZmlndXJhdGlvbigpOworICAgIG1f
ZmFjdG9yeS0+YWRkSW5zdGFuY2UoaWRlbnRpZmllciwgV1RGTW92ZShpbnN0YW5jZSkpOworICAg
IGNvbXBsZXRpb24oaWRlbnRpZmllciwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBtX3ByaXZhdGUt
PmxvYWRBbmRJbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiByZXNwb25zZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJik+
JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNw
b25zZSgqcmVzcG9uc2UuYnVmZmVyKCkpKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6c2Fu
aXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRp
b24obV9wcml2YXRlLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpKTsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBkMGFiOTA1NTQ4NmU3Yzk0NmNiNWMzMzI5ODc0MjlmMWU0YWRiZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNUHJpdmF0ZTsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKK2VudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90Owor
ZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CitzdHJ1Y3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbjsKK3N0cnVjdCBDRE1SZXN0cmljdGlvbnM7Cit9CisKK25hbWVzcGFjZSBJ
UEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlUHJveHk7CitzdHJ1Y3QgUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uOworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb247CisK
K2NsYXNzIFJlbW90ZUNETVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Citw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gY3JlYXRl
KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6Q0RNUHJpdmF0ZT4mJik7CisgICAgflJlbW90ZUNETVByb3h5KCk7CisKKyAgICBjb25zdCBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9j
b25maWd1cmF0aW9uLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90
ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZh
Y3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYsIFVu
aXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHN1cHBvcnRzQ29uZmlndXJh
dGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25z
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCk+JiYpOwor
ICAgIHZvaWQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQpPiYmKTsKKyAgICB2
b2lkIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUo
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY3JlYXRlSW5zdGFuY2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbiYmKT4mJik7CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpOworICAg
IHZvaWQgc2FuaXRpemVSZXNwb25zZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYmKT4mJik7CisgICAgdm9pZCBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+JiYp
PiYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICBV
bmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjRlNTM1MzFhZTc0NGQw
NDUxNzE5NDEzYjQzYmZhYzE1Njg0MGJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1Qcm94eSBOb3RSZWZDb3VudGVk
IHsKKyAgICBTdXBwb3J0c0NvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91
cworICAgIFN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoc3RydWN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgc3RydWN0IFdlYkNv
cmU6OkNETVJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMpIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMKKyAgICBTdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oZW51bTp1aW50
OF90IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlIHR5cGUsIHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMKKyAgICBTdXBwb3J0c0luaXREYXRhKEF0b21TdHJpbmcgdHlwZSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAg
ICBEaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoc3RydWN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgc3RydWN0IFdlYkNvcmU6OkNETVJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbnMpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNUmVx
dWlyZW1lbnQgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIFBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVt
ZW50KHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b24sIHN0cnVjdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKSAtPiAoZW51
bTp1aW50OF90IFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHJlc3VsdCkgU3luY2hyb25vdXMKKyAg
ICBEaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKHN0
cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIC0+
IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBDcmVhdGVJbnN0YW5jZSgpIC0+IChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3VzCisgICAg
TG9hZEFuZEluaXRpYWxpemUoKQorICAgIFNhbml0aXplUmVzcG9uc2UoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTYW5pdGl6ZVNlc3Npb25JZChTdHJpbmcgc2Vz
c2lvbklkKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiByZXN1bHQpIFN5bmNocm9ub3VzCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IDVlZmU2NjI1ZDZmMmY5MGFkZWQ3N2Q4YzU1OTdk
ZjNjNzg4ZjMxZGIuLjQ4MTQ1ODQ3NTJhMTNiMGNlODUwMzQ4OTVkZjkxNDEwMGM1YWE0MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCkBAIC00Nyw2ICs0OCwx
MCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00OTAsMTcgKzQ5NSwxNiBA
QCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29s
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkq
KQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50
OEFycmF5KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKIH0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25z
dCBTdHJpbmcmLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGluaXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9p
ZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5n
Rm9yS2V5Q2hhbmdlZCgpCkBAIC02ODIsNiArNjg2LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6a2V5QWRkZWQoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8q
IGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNk
bUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXll
ci0+Y2RtSW5zdGFuY2VBdHRhY2hlZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwor
dm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3Rh
bmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3Rv
cnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2Rt
SW5zdGFuY2VEZXRhY2hlZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGlu
c3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZh
Y3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+
YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsK
K30KKyNlbmRpZgorCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+
c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGQpOworfQorI2VuZGlmCisKIHZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewog
ICAgIG1fcGxheWVyLT5iZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5k
ZXggMTZiYjJkZGZhMjE0NzQ3MGU4NjAwYWI3MTM5NmE1OWNkZjU0NDlmYS4uMjA4OTZiOTU1NTQ4
MTBiNWNjZmRjMjVjYWQ1NmE0ZDBhYTg2OTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0
NiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTI2
LDYgKzEzMSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFj
aGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0Rl
Y3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlm
CisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7
CisjZW5kaWYKKwogICAgIHZvaWQgYmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lk
IGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpOwogCkBAIC0xNjgsNyArMTgzLDcgQEAgcHJpdmF0ZToK
IAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKLSAgICBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsK
KyAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBT
dHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7
CiAjZW5kaWYKIApAQCAtMjUyLDYgKzI2NywxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Okxh
eW91dFJlY3QgbV92aWRlb0NvbnRlbnRCb3hSZWN0OwogICAgIGZsb2F0IG1fdmlkZW9Db250ZW50
U2NhbGUgeyAxLjAgfTsKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5
TmVlZGVkIHsgZmFsc2UgfTsKKyNlbmRpZgorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgY29uc3QgTG9nZ2VyJiBtX2xvZ2dlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCBjYTY2MzE0ZGZiZTZkMzFiZTA5OTUyYzVmMjgyZjEwNjE4ZmViZWJh
Li4yOWQyODY5YzE2NDJkOGZjMjY2ZTg5MWNiNjE4ZTQ4MjRiMGIyMjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzMsOSArNzMsMTYgQEAgbWVzc2FnZXMgLT4gUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKICAgICAjIFNldENETVNlc3Npb24KICAgICBLZXlBZGRlZCgpCi0gICAg
IyBDZG1JbnN0YW5jZUF0dGFjaGVkCi0gICAgIyBDZG1JbnN0YW5jZURldGFjaGVkCi0gICAgIyBB
dHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlCisjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgQ2RtSW5zdGFuY2VBdHRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciBpbnN0YW5jZUlkKQorICAgIENkbUluc3RhbmNlRGV0YWNoZWQoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyAgICBBdHRlbXB0VG9E
ZWNyeXB0V2l0aEluc3RhbmNlKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlu
c3RhbmNlSWQpCisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQoYm9vbCBzaG91bGQpCiAjZW5kaWYKIAogICAgIEJlZ2luU2ltdWxhdGVkSERDUEVycm9y
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA2NzJiZWM0
OGVhNzljNjgyYzEyNDVlNTI2ZjA0ODhjNjc5OTY4MGI3Li41M2E4MDc4MTdiMmE2YjFkZGY1MTM0
NTg2ZWYyZTcxMDJmNjgyNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suY3BwCkBAIC0xNDksMTMgKzE0OSwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvbwogICAg
IHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNw
b25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9
KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV90
aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGggfSk7
CisgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYgZm9ybURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRl
eCBkMzNjYmZmMTA4OWNjMTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi41MDgwMGYzNTAyMjM2
MmY5NmNhMjFiNWU3ZWJkMDdkOGQ0MmEyZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3Mg
Rm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKaW5kZXggYTc0OWFhYjg3MDA1NGNlYjY5MGU1ZjE0ZjQwNzU2M2ZmY2QwZjliOC4u
ODhmNGYyZmE2NDI2MzM0OWI3YWQyMmQwNmY0M2EyN2Y3MjMzNTFhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtOTYsMTIgKzk2LDYgQEAgc3RydWN0
IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92
ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci1jbGFz
cyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kaW5nVHlw
ZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHR5cGVkZWYgRGF0YVJl
ZmVyZW5jZSBUeXBlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1Y3QgQ29k
aW5nVHlwZTxzdGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx0eXBl
bmFtZSBDb2RpbmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkYWQ0
NjYwNDYzMmU5MjY5ZjE5MWQxNWM4MGRkMjExZTU0ODRlN2EzLi5iZmIzMzk1NzY5NmYyZTcyYTIz
NDgyMzQyMjUyYjcyYmQ3OTQyODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yNSw0MCArMjUsNTEgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSgpID0gZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKKyAgICB7CisgICAgfQorICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQorICAgIHsKKyAgICB9CiAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2Rh
dGEoYnVmZmVyKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShzdGQ6Om1ha2VfcGFpcihk
YXRhLCBzaXplKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSkKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAg
ICB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKworICAgIGNvbnN0IGNoYXIqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5zaXplKCkgOiAwOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQogCiAgICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHN3aXRjaE9uKG1fZGF0YSwKLSAg
ICAgICAgICAgIFtlbmNvZGVyID0gJmVuY29kZXJdIChjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICB1aW50NjRf
dCBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+
cmVzZXJ2ZShidWZmZXJTaXplICsgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgICAgICAgICAgICAg
KmVuY29kZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbGVt
ZW50LnNlZ21lbnQtPmRhdGEoKSksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpLCAxKTsKLSAgICAg
ICAgICAgIH0sIFtlbmNvZGVyID0gJmVuY29kZXJdIChjb25zdCBzdGQ6OnBhaXI8Y29uc3QgdWlu
dDhfdCosIHNpemVfdD4mIHBhaXIpIG11dGFibGUgewotICAgICAgICAgICAgICAgIHVpbnQ2NF90
IGJ1ZmZlclNpemUgPSBwYWlyLnNlY29uZDsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5yZXNl
cnZlKGJ1ZmZlclNpemUgKyBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgICAgICAgICAqZW5j
b2RlciA8PCBidWZmZXJTaXplOwotICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCwgMSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICk7CisgICAgICAgIGVuY29kZXIgPDwgbV9idWZmZXI7CisgICAgfQorCisgICAgc3Rh
dGljIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IGJ1ZmZlcjsKKyAgICAgICAgZGVjb2RlciA+PiBidWZmZXI7CisgICAgICAgIGlmICgh
YnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHsgV1RGTW92ZSgqYnVmZmVyKSB9OwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBWYXJpYW50PHN0
ZDo6cGFpcjxjb25zdCB1aW50OF90Kiwgc2l6ZV90PiwgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDI2MDQ5MGZiN2I1NmE4OGNmZjBkOWI4OWMxYTcxNjhhZWQwZDE4NWMuLjcxNjRjMzczNDMx
MDFmZWYwYzNkNWYwZGI2N2M1MmNkNjE4YjVlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtMjI3LDYgKzIyNyw5IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5v
dF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6Ok1ETlNSZWdpc3Rlcklk
ZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXInLAorICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4YzlmYTIxYWYzOGE3
MTYyYzZjMjA5ZTkzOTQ2ODkwNmEyNWMzY2EzLi5kMmRlZTlmYjZkMTAwOGI0ZTU4MjU5MjFiMjIx
ZjI5YWE2ZTkzNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTEzNCw3ICsxMzQsOCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRC
dWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAg
ZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKLXN0YXRpYyBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihE
ZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQordGVtcGxhdGUg
PHRlbXBsYXRlIDx0eXBlbmFtZS4uLj4gY2xhc3MgUj4KK3N0YXRpYyBib29sIGRlY29kZVNoYXJl
ZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAg
ICB1aW50NjRfdCBidWZmZXJTaXplID0gMDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZl
clNpemUpKQpAQCAtMzIwMyw0ICszMjA0LDczIEBAIE9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVWYWx1ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvCiB9
CiAjZW5kaWYKIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1
ZmZlci5nZXQoKSk7Cit9CisKK09wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1l
c3NhZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlJiBtZXNzYWdlKQoreworICAgIGVuY29kZXIgPDwgbWVzc2FnZS5m
aXJzdDsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5z
ZWNvbmQuY29weVJlZigpOworICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7Cit9CisKK09wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlVHlwZSB0
eXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gbWFrZU9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZT4oeyB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSB9KTsKK30KKwor
dm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiBrZXlTdGF0dXNlcykKK3sKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihrZXlTdGF0dXNlcy5zaXplKCkpOworICAgIGZvciAo
YXV0byYga2V5U3RhdHVzIDoga2V5U3RhdHVzZXMpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4ga2V5ID0ga2V5U3RhdHVzLmZpcnN0LmNvcHlSZWYoKTsKKyAgICAgICAgZW5jb2RlciA8
PCBrZXkgPDwga2V5U3RhdHVzLnNlY29uZDsKKyAgICB9Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgdWludDY0X3QgZGF0YVNpemU7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhU2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNlczsKKyAg
ICBrZXlTdGF0dXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFTaXplKTsKKworICAgIGZv
ciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShrZXkpIHx8ICFr
ZXkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzIHN0YXR1czsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBrZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBrZXkucmVsZWFzZU5v
bk51bGwoKSwgc3RhdHVzIH0pOworICAgIH0KKyAgICByZXR1cm4ga2V5U3RhdHVzZXM7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGUzODE0
ZTIxZjgzMzZhYWYyZjQ0NDMyMzJlMzQ0ZTAwNzRkYWUyYTEuLjgxMDBjOTI0M2ZhZGI4NzYxYzZl
MzE3ZWEzZWYzNGIwOGExZjJmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCkBAIC01NSw2ICs1NSwxMSBAQAogI2luY2x1ZGUgPFdlYktpdEFkZGl0
aW9ucy9XZWJDb3JlQXJndW1lbnRDb2RlcnNBZGRpdGlvbnMuaD4KICNlbmRpZgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC0x
MDAsNiArMTA1LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RlcHNU
aW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsK
QEAgLTgyOSw2ICs4MzUsMjMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IHsKIH07CiAjZW5kaWYKIAordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2UmKTsKKyAgICBz
dGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3ImKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTk2NSw0ICs5ODgs
MjggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXVEZMb2dMZXZlbD4gewogICAgID47
CiB9OwogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3RlbXBsYXRlIDw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJl
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUsCisgICAgV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGEsCisgICAgV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRT
ZXNzaW9uVHlwZSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2Fk
RmFpbHVyZTo6UXVvdGFFeGNlZWRlZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OlNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIKKyAgICA+OworfTsKKwordGVtcGxhdGUgPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERD
UFN0YXR1cywKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6VW5rbm93biwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6VmFsaWQsCisgICAgV2ViQ29y
ZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6Ok91dHB1dFJlc3RyaWN0ZWQsCisgICAgV2ViQ29y
ZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6Ok91dHB1dERvd25zY2FsZWQKKyAgICA+OworfTsK
KworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggYTVkMGJlMTQy
NzFmNjMwNmY4MzZiOGZkYmQ3ZDQyMGYyOTUyNDZlYS4uZWYxMWIwODEwMjY3ODg2YTY2YTY3OTMx
MDRiMDEzNGIwYTBkZDEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zMSw2ICszMSwxMCBAQCBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5
LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAK
K0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmNwcApAQCAtMzksNiArNDMsNyBAQCBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAK
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAogCisKIE5ldHdvcmtQ
cm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQWN0aXZpdHlUcmFja2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcApAQCAtNTM0LDYgKzUzOSwxMCBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1By
aXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCitXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2UuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2Fj
aGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbQppbmRleCA3ODk3ZTI4ZTNjOGNhMjI3NDUxZmQ1NzQxZjdkZDE1NWNjN2Rl
MTVmLi4zNDNiYTFiMTAzNzMyNDI1YjYwMjc3ZThmNTgxMGYxN2Q4MWFhYjc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAt
MzMsNiArMzMsNyBAQAogI2ltcG9ydCAiUGFnZUNsaWVudC5oIgogI2ltcG9ydCAiU2FmZUJyb3dz
aW5nU1BJLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCisjaW1wb3J0ICJTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgpA
QCAtMTgzLDEzICsxODQsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYWdDYXJldFJlY3Qo
Y29uc3QgSW50UmVjdCYgZHJhZ0NhcmV0UmVjdCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChS
ZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2ht
ZW50PiYmIGF0dGFjaG1lbnQsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKICAgICBp
ZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNs
aWVudCgpLmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCldKTsKKyAgICBhdXRvIGZp
bGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5j
ZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhUmVmZXJlbmNlLmJ1ZmZlcigpLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpXSk7CiAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZl
cnJlZEZpbGVuYW1lOnByZWZlcnJlZEZpbGVOYW1lXTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxl
V3JhcHBlcihmaWxlV3JhcHBlci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBmOTcxZjk2ZjRkZjgzZWJmNTA1YjJkZGM0YWUyN2U2Y2E3ZDVj
Yzc1Li4wZmJmMDM1MjJlNWVmOTVhZDI3ZmM1NTE5ZDhmNmYwZmUxOTE1MjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY5MDYsMTMgKzY5MDYsMTMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxE
YXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJ
OjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgp
KS5wdHIoKSk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShB
UEk6OkRhdGE6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhUmVm
ZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojpib29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKQEAgLTkwODEsNyArOTA4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAg
fSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKENhbGxiYWNr
SUQgY2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQ
YWdlUHJveHk6OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgZGF0YUNhbGxi
YWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQpAQCAtOTMxMiw3ICs5MzEyLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVu
dCYgYXR0YWNobWVudCwKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6
ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVO
YW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmIGRhdGEpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIElkZW50aWZpZXJU
b0F0dGFjaG1lbnRNYXA6OmlzVmFsaWRLZXkoaWRlbnRpZmllcikpOwogCkBAIC05NDE5LDcgKzk0
MTksNyBAQCBXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIFdl
YlBhZ2VQcm94eTo6d2lsbFVwZGF0ZUF0dGFjaG1lbgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6
QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikK
K3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpB
dHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IGIzMTU0NTQ4YTA4YjU4OGRmYjM0NjI2MWJjN2RlM2RiYjc1NGY2Y2YuLmYzMzJjNWQyMGRi
YThmMWRhZjI3M2IwYzZmMWU1YzhiMmJmZGU3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xOTMsNiArMTkzLDcgQEAgZW51bSBjbGFzcyBJbnNwZWN0b3JUYXJn
ZXRUeXBlIDogdWludDhfdDsKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVjb2RlcjsKIGNsYXNz
IEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTUwMSw3ICsxNTAyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAKICAgICB2b2lkIGdldExvYWREZWNp
c2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBXZWJLaXQ6OkNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJL
aXQ6OkNhbGxiYWNrSUQsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwog
CiAgICAgdm9pZCBzZXRGb2N1cyhib29sIGZvY3VzZWQpOwogICAgIHZvaWQgc2V0V2luZG93RnJh
bWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CkBAIC0yMDA1LDcgKzIwMDYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wg
aGFuZGxlZCk7CiAKICAgICB2b2lkIHZvaWRDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lk
IGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGJvb2xDYWxsYmFjayhib29sIHJl
c3VsdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcm
LCBDYWxsYmFja0lEKTsKQEAgLTIxODMsMTIgKzIxODQsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN0b3BBbGxVUkxTY2hlbWVUYXNrcyhXZWJQcm9jZXNzUHJveHkqID0gbnVsbHB0cik7CiAKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJl
ZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwog
ICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9y
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9pZCBjbG9uZUF0
dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dG9JZGVudGlmaWVyKTsKIAotICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVm
PEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNo
bWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVO
YW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHBs
YXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQgcGxhdGZvcm1DbG9uZUF0dGFjaG1lbnQoUmVmPEFQ
STo6QXR0YWNobWVudD4mJiBmcm9tQXR0YWNobWVudCwgUmVmPEFQSTo6QXR0YWNobWVudD4mJiB0
b0F0dGFjaG1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggZTM5ZGMyNWJiZDhmOGIxNWQ2NjgxOGY2ZDZkODJhM2I1Njk5
OTQ5Mi4uYTVlNmY5NjUxMWU1MGE4MTQzZGI2ZjJhZDNlMjY0ZTkyYjlhYWFkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTMw
LDcgKzUzMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkUmVzdG9yZVNj
cm9sbFBvc2l0aW9uKCkKIAogICAgIEdldExvYWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNv
cmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKTsKKyAgICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lELCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSk7CiAK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmNj
ZmI2NWE4NGEyN2NmYmU3NjViZjc1YjkxNmM2NTMxMjNmNjMyNC4uZGQyOGViZTA5NDExNWY1NmRl
YmVlODExZGE4YTIzNTQxZjQ1MTc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjk1LDYgKzE2OTUsNyBAQAogCQlDRDE5RDJFQTIw
NDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDE5RDJFODIwNDY0MDZGMDAx
NzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QyODY1RUUyMjU1NTYyMDAwNjA2QUM3
IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyODY1RUMyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NU
YXNrU3RhdGVPYnNlcnZlci5oICovOyB9OwogCQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyog
UHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNr
U3RhdGVPYnNlcnZlci5tbSAqLzsgfTsKKwkJQ0Q0NjYxODMyNDAxMEE2NzAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
Q0Q0OTFCMDgxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ5MUIwNjFFNzBE
MDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCAqLzsgfTsKIAkJQ0Q0OTFC
MEQxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NDkxQjBCMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCUNENDkxQjBFMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDQ5MUIwQzFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJNZXNzYWdlcy5oICovOyB9OwpAQCAtMTcxNyw2ICsxNzE4LDIwIEBACiAJCUNE
QTI5QTJCMUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
MjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmggKi87IH07CiAJCUNEQTkzREIwMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91
Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE5M0RBRTIyRjhCQ0YzMDA0OTBBNjkgLyogRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTkzREFGMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxs
c2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCAqLzsgfTsKKwkJQ0RBQzIwQjQy
M0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEIyMjNGQjU4RjIwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi87IH07CisJCUNEQUMyMEMzMjNGQzJGNzUw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEI2MjNGQzJGNzMwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwQzQyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCNzIzRkMyRjczMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2UuaCAqLzsgfTsKKwkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0
aW9uLmggKi87IH07CisJCUNEQUMyMEM3MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEJBMjNG
QzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLzsgfTsKKwkJQ0RBQzIwQzkyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEJDMjNGQzJGNzQwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi87IH07CisJCUNE
QUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEJEMjNGQzJG
NzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLzsgfTsKKwkJQ0RBQzIw
Q0QyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEMwMjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE1GYWN0b3J5LmggKi87IH07CisJCUNEQUMyMENFMjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKKwkJQ0RBQzIwQ0YyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVD
RE1JZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNEQUMyMEY4
MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMy
MEY1MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKKwkJQ0RBQzIwRjkyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEVDMjNGQzM4MzgwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJ
CUNEQUMyMEZBMjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFD
MjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwogCQlDREMyODMxRDIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tW
aWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMy
ODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi87IH07CiAJ
CUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVD
NzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9
OwogCQlDRTExQUQ1MjFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTFBRDUxMUNCQzQ4MkYwMDY4
MUVFNSAvKiBDb2RlU2lnbmluZy5oICovOyB9OwpAQCAtNDk0NSw2ICs0OTYwLDEwIEBACiAJCUNE
MTlEMkU5MjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcDsgcGF0
aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1Rhc2tTdGF0ZU9i
c2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjg2NUVEMjI1NTU2MjAw
MDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE4MDI0MDEwNTY0MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNENDY2MTgyMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDQ5MUIwNTFF
NzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDQ5MUIwNjFFNzBEMDVGMDAwMDkwNjYgLyog
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q0OTFCMEExRTczMkQxMjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDk4Niw2ICs1MDA1LDQzIEBACiAJCUNEQTI5QTI3
MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQlDREE5M0RBRTIyRjhCQ0YzMDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNo
ZXVyaXN0aWNQYXJhbWV0ZXJzLmg7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91
Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQTkzREFGMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQ
YXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpY1BhcmFtZXRlcnMuY3BwOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMDc4MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMDc5MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwN0MyM0ZCMUVGOTAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
RmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjA4MjIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlQ0RNUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
ODMyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUNETVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwODYyM0ZCMjE1ODAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjBBRDIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFFMjNGQjU4MkIwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBBRjIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMTIzRkI1OEUyMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIzMjNGQjU4RjIwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNE
TUluc3RhbmNlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBC
NjIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCNzIzRkMyRjczMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQ0RNSW5zdGFuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
QjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCOTIzRkMyRjczMDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVDRE1GYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkEy
M0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
QkIyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBC
RTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJGMjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlQ0RNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzAyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBD
MjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEVCMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEVDMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVEMjNGQzM4MzgwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUUyM0ZDMzgzOTAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8q
IFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjAyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90
ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEYxMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMjIzRkMzODNBMDAyMURFRTMgLyogUmVt
b3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYzMjNGQzM4M0EwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGNDIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RN
UHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVD
RE1Qcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY1
MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3Rh
bmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjBGNjIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHBhdGggPSBpb3MvZnVsbHNj
cmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RDMjgzMUMyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5tbTsgcGF0aCA9IGlv
cy9mdWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0RDMzgyRjcxNzIxMTUwNjAwOEEyRkMzIC8qIENGTmV0d29yay5mcmFtZXdv
cmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFw
cGVyLmZyYW1ld29yazsgbmFtZSA9IENGTmV0d29yay5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxh
YnNvbHV0ZT4iOyB9OwpAQCAtNTI2Niw2ICs1MzIyLDIwIEBACiAJCQkJMDc5MjMxMzIyMzlCM0Iw
QzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3QjFEMDRC
MjNEMzhGQ0UwMDM5OUE2RSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNLmNwcCAqLywKKwkJCQlDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RN
LmggKi8sCisJCQkJQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24uaCAqLywKKwkJCQlDREFDMjBCOTIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFj
dG9yeS5jcHAgKi8sCisJCQkJQ0RBQzIwQzAyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnkuaCAqLywKKwkJCQlDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRl
bnRpZmllci5oICovLAorCQkJCUNEQUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZS5jcHAgKi8sCisJCQkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlLmggKi8sCisJCQkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovLAorCQkJCUNEQUMyMEI2MjNGQzJGNzMwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBCRTIzRkMy
Rjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCAqLywKKwkJCQlDREFD
MjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi8sCisJ
CQkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5t
ZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovLAogCQkJCTA3QjkzRkY1MjNBRjBDQjgwMDM2
RjhFQSAvKiBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkwNzkyMzEz
MDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKIAkJ
CQkwNzkyMzEzNDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgg
Ki8sCkBAIC01MjkxLDYgKzUzNjEsMTggQEAKIAkJCQkxRDBFQ0VBOTIzRkM4NEJCMDBEMTcyRjYg
LyogY29jb2EgKi8sCiAJCQkJMDcxQkM1N0UyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlv
VHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDcxQkM1N0YyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90
ZUF1ZGlvVHJhY2tQcm94eS5oICovLAorCQkJCUNEQUMyMDc5MjNGQjFFMjEwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwICovLAorCQkJCUNEQUMyMDc4MjNGQjFFMjEwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCAqLywKKwkJCQlDREFDMjA3QzIzRkIxRUY5MDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMy
MEIzMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCAqLywKKwkJ
CQlDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICov
LAorCQkJCUNEQUMyMEIxMjNGQjU4RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwQUUyM0ZCNTgyQjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8sCisJCQkJQ0RBQzIwQUQy
M0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2Vz
LmluICovLAorCQkJCUNEQUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5j
cHAgKi8sCisJCQkJQ0RBQzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lmgg
Ki8sCisJCQkJQ0RBQzIwODYyM0ZCMjE1ODAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lm1lc3Nh
Z2VzLmluICovLAogCQkJCTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggKi8sCiAJCQkJMDcyNUVGQUIyMzlBRTM4
NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICov
LApAQCAtOTYyNSw2ICs5NzA3LDIxIEBACiAJCQkJMUEwNDNCNUMxMjRENUU5RDAwRkZCRkI1IC8q
IFBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUE4RUZBNkUxMjUyQjg0MTAw
RjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQThFRkE2
RjEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMy
MEYyMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAorCQkJCUNEQUMyMEYzMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFDMjBGNTIz
RkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJQ0RBQzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
UHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0Q0NjYxODEyNDAx
MDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJQ0Q0NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzLmggKi8sCisJCQkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVD
MjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMTIzRkMzODNB
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMu
aCAqLywKKwkJCQlDREFDMjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1v
dGVDRE1Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjAyM0ZDMzgzOTAwMjFERUUzIC8q
IFJlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRC
QzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAogCQkJCTBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
QEAgLTEwNTI0LDYgKzEwNjIxLDE2IEBACiAJCQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8q
IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRTY4ODcwMUY2
RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZE
MzE4MjIyQjM1MTVFMDA4RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RN
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDNTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0QyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENG
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREFDMjBDNDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUNEQUMyMENFMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEMzMjNGQzJGNzUw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUNEQUMyMEI0MjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDQTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDOTIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIx
NkFFQTE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMjIyMCw2ICsxMjMyNywxMSBAQAogCQkJCUMxNUNCQjM3MjNGMzdFQ0IwMDMw
MENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDU0QzMx
QjIxMkY0REE2MDA0OUMxNzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNE
QUMyMEY4MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0EzNSAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQ0RBQzIwRjkyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEZB
MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAgLyogUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkYyNEEyRDE4NzlFNEJDMDAz
QUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyREMxOEZCNDIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3Rl
TGF5ZXJUcmVlVmlld3MubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAKaW5kZXggM2Y1YjYxODFlMDZlMGE4NDY4OGJkYTkxNmYxMGQ4N2E2MWQxNGJlNy4u
OTJmZjc3ZWJjNzczM2E1MWZiMTdjN2E3NjNjNzY4NzZjNjJhZWNlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdl
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQ
SUNhc3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
U3RyaW5nUmVmUHJpdmF0ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3Ry
aW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCmluZGV4IDhkZmY1MGYzMDg4ZWQ0NWM1OTBlYzgxZTJjMDlhMTM4YmE3
YTUzNWYuLmM2MDI0Y2FkOWE5NTc0MmJmN2Q2MmIxOTI2OWE3Y2I2NmNmMDcyM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjaW5j
bHVkZSAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKQEAgLTQ0LDYgKzQ2
LDEwIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTAxLDYgKzEwNywxMiBAQCB2b2lk
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RAogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8
UmVtb3RlQ0RNRmFjdG9yeT4oKS0+ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDZmNjNiMjMw
ZjYyN2QxMmNjNmVjM2VmN2RkNmNlNmFkMTI5N2FhNmEuLjMzMGQyNmRhYTIwNGRjYTQxN2NiYjky
OGY4OWM2NmQyZTFhYTQ5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTQ5
LDYgKzQ5LDEwIEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSW5zdGFuY2UuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAgLTExNiwx
OCArMTIwLDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvCiAgICAgaWYgKHVybC5pc0xvY2Fs
RmlsZSgpKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAgICAg
ICAgIGF1dG8gZmlsZVN5c3RlbVBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKLSAgICAgICAg
Ym9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gZmFsc2U7CiAKKyAgICAgICAgYXV0byBjcmVhdGVFeHRl
bnNpb24gPSBbJl0gewogI2lmIEhBVkUoU0FOREJPWF9JU1NVRV9SRUFEX0VYVEVOU0lPTl9UT19Q
Uk9DRVNTX0JZX0FVRElUX1RPS0VOKQotICAgICAgICBhdXRvIGF1ZGl0VG9rZW4gPSBtX21hbmFn
ZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5hdWRpdFRva2VuKCk7Ci0gICAgICAgIEFTU0VSVChh
dWRpdFRva2VuKTsKLSAgICAgICAgaWYgKGF1ZGl0VG9rZW4pCi0gICAgICAgICAgICBjcmVhdGVk
RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRU
b2tlbihmaWxlU3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpLCBoYW5kbGUpOwotICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpZiAoYXV0byBhdWRpdFRva2VuID0gbV9tYW5hZ2VyLmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGZpbGVTeXN0
ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCksIGhhbmRsZSk7CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICNlbmRpZgotICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVTeXN0ZW1QYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKTsKKyAgICAgICAgICAgIHJldHVybiBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRPbmx5LCBoYW5kbGUpOworICAgICAgICB9OwogCi0gICAgICAgIGlmICghY3JlYXRl
ZEV4dGVuc2lvbikgeworICAgICAgICBpZiAoIWNyZWF0ZUV4dGVuc2lvbigpKSB7CiAgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIlVuYWJsZSB0byBjcmVhdGUgc2FuZGJveCBleHRlbnNpb24gaGFu
ZGxlIGZvciBHUFVQcm9jZXNzIHVybC5cbiIpOwogICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZS5u
ZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcjsKICAg
ICAgICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CkBAIC04OTksMTkgKzkw
MiwyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNl
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNl
PihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZUF0dGFjaGVkKGRvd25jYXN0PFJlbW90ZUNETUlu
c3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJikKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3Rh
bmNlJiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1v
dGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFuY2VEZXRhY2hlZChkb3duY2Fz
dDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0
YW5jZShDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1w
dFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkK
KyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OkF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFu
Y2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKQEAgLTkxOSw2ICs5MjUsMTIg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkK
ICAgICBtX3BsYXllci0+d2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKIH0KIAordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0
cmluZyYgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSkKK3sKKyAg
ICBhdXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRh
KCksIGluaXREYXRhLnNpemUoKSk7CisgICAgbV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkKGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YUJ1ZmZlcikpOworfQorCiBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTkyNiw2ICs5MzgsMTMgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXkoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5
TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNo
b3VsZCksIG1faWQpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCAxMzJmMzBhYjI5YjZl
NTA5ZjExMzk0OTI1ODBhNmUzNjcxY2M3OTA5Li5mZTI5MzE4MGVkYjk1YzIzYTc2MzQ3ZjEzMGE3
YzQ2YzRiOGQwNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTEzMiw2ICsxMzIs
NyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQgd2Fp
dGluZ0ZvcktleUNoYW5nZWQoKTsKKyAgICB2b2lkIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKGNvbnN0IFN0cmluZyYsIElQQzo6RGF0YVJlZmVyZW5jZSYmKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTMxNyw2ICszMTgsMTAgQEAgcHJp
dmF0ZToKICAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCisj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisgICAgdm9pZCBzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wpIGZpbmFs
OworI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgYm9vbCByZXF1aXJlc1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCBlODg5
N2I2YTEwYTEwZDRiNzAwOTI5OGM3YWEyNzI4YmZlMTEyOTdhLi4zM2UyYTk4ZDQ3OTg3OWQyMTVi
NGQwNDFhZmU3YWI1MGU4MzYyZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5tZXNzYWdlcy5pbgpAQCAtNzUsNiArNzUsNyBAQCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogICAgIFdhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKKyAgICBJbml0aWFsaXphdGlvbkRhdGFFbmNv
dW50ZXJlZChTdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UgaW5pdERhdGEp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzViNWRhYThhMjliY2Q5OGU2MjcwOTMxNzVjOWY3MDY1YjlhNzBhMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApA
QCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE0uaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUmVzdHJpY3Rpb25zLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPiBSZW1vdGVDRE06
OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSWRl
bnRpZmllciYmIGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4obmV3IFJlbW90ZUNETShXVEZN
b3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQor
CitSZW1vdGVDRE06OlJlbW90ZUNETShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9y
eSwgUmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYgY29u
ZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9p
ZGVudGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29u
ZmlndXJhdGlvbikpCit7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QK
K3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9v
bCBzdXBwb3J0cyB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBv
cnRzQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5
OjpTdXBwb3J0c0NvbmZpZ3VyYXRpb246OlJlcGx5KHN1cHBvcnRzKSwgbV9pZGVudGlmaWVyKTsK
KyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZp
Z3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24sIGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zKSBjb25z
dAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBi
b29sIHN1cHBvcnRzIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3Vw
cG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25maWd1cmF0aW9uLCByZXN0cmlj
dGlvbnMpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzQ29uZmlndXJhdGlvbldp
dGhSZXN0cmljdGlvbnM6OlJlcGx5KHN1cHBvcnRzKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1
cm4gc3VwcG9ydHM7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHR5cGUsIGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Cit7CisgICAgaWYgKCFtX2Zh
Y3RvcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgc3VwcG9ydHMgeyBmYWxz
ZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24odHlwZSwgY29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Q
cm94eTo6U3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uOjpSZXBseShzdXBwb3J0
cyksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitib29sIFJlbW90
ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9jb25maWd1cmF0aW9uLnN1cHBvcnRl
ZEluaXREYXRhVHlwZXMuY29udGFpbnModHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJvb2wgc3VwcG9ydHMgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5
OjpTdXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6
OlN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbjo6UmVwbHkoc3VwcG9ydHMpLCBt
X2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0czsKK30KKworQ0RNUmVxdWlyZW1lbnQg
UmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25z
JiByZXN0cmljdGlvbnMpIGNvbnN0Cit7CisgICAgQ0RNUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQg
eyBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCB9OworICAgIGlmICghbV9mYWN0b3J5KQorICAg
ICAgICByZXR1cm4gcmVxdWlyZW1lbnQ7CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6
RGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0
aW9ucyksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6RGlzdGluY3RpdmVJZGVudGlmaWVyc1Jl
cXVpcmVtZW50OjpSZXBseShyZXF1aXJlbWVudCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJu
IHJlcXVpcmVtZW50OworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OnBlcnNpc3RlbnRT
dGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3Vy
YXRpb24sIGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zKSBjb25zdAoreworICAg
IENETVJlcXVpcmVtZW50IHJlcXVpcmVtZW50IHsgQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQg
fTsKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIHJlcXVpcmVtZW50OworCisg
ICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNv
bmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6UGVy
c2lzdGVudFN0YXRlUmVxdWlyZW1lbnQ6OlJlcGx5KHJlcXVpcmVtZW50KSwgbV9pZGVudGlmaWVy
KTsKKyAgICByZXR1cm4gcmVxdWlyZW1lbnQ7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpkaXN0aW5j
dGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Cit7CisgICAgaWYgKCFt
X2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgZmxhZyB7IGZhbHNl
IH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkRpc3RpbmN0aXZlSWRlbnRpZmllcnNB
cmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpS
ZW1vdGVDRE1Qcm94eTo6RGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFu
ZENsZWFyYWJsZTo6UmVwbHkoZmxhZyksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIGZsYWc7
Cit9CisKK1JlZlB0cjxDRE1JbnN0YW5jZT4gUmVtb3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSgpCit7
CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkOworICAgIFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpDcmVh
dGVJbnN0YW5jZSgpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkNyZWF0ZUluc3RhbmNlOjpS
ZXBseShpZCwgY29uZmlndXJhdGlvbiksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFJlbW90ZUNETUluc3RhbmNlOjpjcmVh
dGUobWFrZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQor
eworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBtX2lkZW50aWZpZXIpOworfQorCitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ugc2Fu
aXRpemVkUmVzcG9uc2U7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlNhbml0aXplUmVz
cG9uc2UocmVzcG9uc2UpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlNhbml0aXplUmVzcG9u
c2U6OlJlcGx5KHNhbml0aXplZFJlc3BvbnNlKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4g
V1RGTW92ZShzYW5pdGl6ZWRSZXNwb25zZS5idWZmZXIoKSk7Cit9CisKK09wdGlvbmFsPFN0cmlu
Zz4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVkU2Vzc2lvbklkOworICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjpTYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpLCBNZXNzYWdl
czo6UmVtb3RlQ0RNUHJveHk6OlNhbml0aXplU2Vzc2lvbklkOjpSZXBseShzYW5pdGl6ZWRTZXNz
aW9uSWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzYW5pdGl6ZWRTZXNzaW9uSWQ7Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjNjMzRlZDJjMjAyM2FkZDIwYWVhODljN2RlNGE3YWMy
YzRiYmU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKKyNpbmNsdWRlICJSZW1vdGVDRE1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0NETVByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OkNETVByaXZhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JZGVu
dGlmaWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJik7CisgICAgdmlydHVhbCB+UmVtb3Rl
Q0RNKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIFJlbW90ZUNETShXZWFrUHRyPFJlbW90
ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiYmKTsKKworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmlu
YWw7CisgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1Jl
cXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpD
RE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25z
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVl
UGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNy
ZWF0ZUluc3RhbmNlKCkgZmluYWw7CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFs
OworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8U3Ry
aW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKworICAg
IFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KKyAgICBW
ZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZFJvYnVzdG5lc3NlczsgfQorICAgIGJvb2wg
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZp
Z3VyYXRpb24uc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7IH0KKyAgICBib29sIHN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNT
ZXNzaW9uczsgfQorCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7Cisg
ICAgUmVtb3RlQ0RNSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RNQ29uZmln
dXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3Vy
YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNjJjNDY0ZmRmZGNkOGMzNTc1NmIwZTM4ZGFkMGY4OTM5MDU4
ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJl
bW90ZUNETUNvbmZpZ3VyYXRpb24geworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNz
ZXM7CisgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICBib29sIHN1cHBv
cnRzU2Vzc2lvbnM7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHN1
cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkUm9idXN0
bmVzc2VzOworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOwor
ICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgfQorCisgICAgdGVtcGxh
dGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8
VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAgICBkZWNv
ZGVyID4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkSW5p
dERhdGFUeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
T3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAg
ICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAgICBpZiAoIXN1cHBv
cnRlZFJvYnVzdG5lc3NlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAg
IGRlY29kZXIgPj4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGlmICghc3Vw
cG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgICAgIGRl
Y29kZXIgPj4gc3VwcG9ydHNTZXNzaW9uczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1Nlc3Npb25z
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sK
KyAgICAgICAgICAgIFdURk1vdmUoKnN1cHBvcnRlZEluaXREYXRhVHlwZXMpLAorICAgICAgICAg
ICAgV1RGTW92ZSgqc3VwcG9ydGVkUm9idXN0bmVzc2VzKSwKKyAgICAgICAgICAgICpzdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlcywKKyAgICAgICAgICAgICpzdXBwb3J0c1Nlc3Npb25zLAorICAg
ICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGFmODNlMzgyOWVlYTM3M2VjYzQ2YzI2ODA1NWU2OTYy
OGE5MzllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvU2V0dGluZ3MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1GYWN0b3J5KFdlYlBy
b2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKworUmVtb3Rl
Q0RNRmFjdG9yeTo6flJlbW90ZUNETUZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3Rl
Q0RNRmFjdG9yeTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmIHNl
dHRpbmdzKQoreworICAgIGlmIChzZXR0aW5ncy51c2VHUFVQcm9jZXNzRm9yTWVkaWEoKSkgewor
ICAgICAgICBhdXRvJiBmYWN0b3JpZXMgPSBDRE1GYWN0b3J5OjpyZWdpc3RlcmVkRmFjdG9yaWVz
KCk7CisgICAgICAgIGZhY3Rvcmllcy5jbGVhcigpOworICAgICAgICBmYWN0b3JpZXMuYXBwZW5k
KHRoaXMpOworICAgIH0gZWxzZQorICAgICAgICBDRE1GYWN0b3J5OjpyZXNldEZhY3Rvcmllcygp
OworfQorCisKK2NvbnN0IGNoYXIqIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKCkK
K3sKKyAgICByZXR1cm4gIlJlbW90ZUNETUZhY3RvcnkiOworfQorCitHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgUmVtb3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworICAgIHJl
dHVybiBtX3Byb2Nlc3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKworYm9vbCBS
ZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKK3sKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAgIGdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJv
eHk6OlN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOworICAg
IHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBSZW1v
dGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAg
UmVtb3RlQ0RNSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb247CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNKGtleVN5c3RlbSks
IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETTo6UmVwbHkoaWQsIGNv
bmZpZ3VyYXRpb24pLCB7IH0pOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBSZW1vdGVDRE06OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92
ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rv
cnk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCwgUmVm
PFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9z
ZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNl
c3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uKFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fc2Vzc2lv
bnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2NlYmU4NGMyYjEyYWQ0MjM4
MzhhMzYyN2EwNjRlZWJkNDcwOTUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKQEAgLTAsMCArMSw4NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNRmFjdG9y
eS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBJ
UEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFJlbW90ZUNETTsK
K2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjsKK2NsYXNzIFdlYlByb2Nlc3M7CisKK2Ns
YXNzIFJlbW90ZUNETUZhY3RvcnkgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpDRE1GYWN0
b3J5CisgICAgLCBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlQ0RNRmFjdG9yeShXZWJQcm9jZXNzJik7
CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeSgpOworCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHN1cHBsZW1lbnROYW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvY2VzczsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYkNv
cmU6OlNldHRpbmdzJik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNE
TVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIHN1cHBv
cnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgSGFzaE1hcDxSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
Pj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE0+PiBtX2NkbXM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVlM2EzODE5YzE3
MDdiNTU4YjNmZDlhYWE4ODE2MzE1ODM5MmZhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCkBAIC0wLDAg
KzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNETUlkZW50
aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlm
aWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzczOWYwM2RjNTllYWQ3MWVkN2Ew
ZmMwM2I2Y2MxOTdkYWFkNTM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTAsMCArMSwxMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2UuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUluc3RhbmNl
PiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBm
YWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVDRE1JbnN0YW5jZShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwgV1RG
TW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZTo6UmVtb3RlQ0RN
SW5zdGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJiBj
b25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBt
X2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShj
b25maWd1cmF0aW9uKSkKK3sKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24pIC0+IFN1Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5
KQorICAgICAgICByZXR1cm4gRmFpbGVkOworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9
OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVu
dGlmaWVyKTsKKyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQor
CithdXRvIFJlbW90ZUNETUluc3RhbmNlOjpzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dl
ZChib29sIGFsbG93ZWQpIC0+IFN1Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5KQor
ICAgICAgICByZXR1cm4gRmFpbGVkOworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9Owor
ICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldERpc3RpbmN0aXZlSWRlbnRp
ZmllcnNBbGxvd2VkKGFsbG93ZWQpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
U2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQ6OlJlcGx5KHN1Y2NlZWRlZCksIG1faWRl
bnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKK30K
KworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29s
IGFsbG93ZWQpIC0+IFN1Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAg
ICByZXR1cm4gRmFpbGVkOworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQo
YWxsb3dlZCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRQZXJzaXN0ZW50
U3RhdGVBbGxvd2VkOjpSZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVy
biBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5z
dGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
Y2VydGlmaWNhdGUpIC0+IFN1Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAg
ICAgICByZXR1cm4gRmFpbGVkOworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAg
IG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFNlcnZlckNlcnRpZmljYXRlKGNl
cnRpZmljYXRlLmdldCgpKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFNl
cnZlckNlcnRpZmljYXRlOjpSZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJl
dHVybiBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK2F1dG8gUmVtb3RlQ0RN
SW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpIC0+
IFN1Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gRmFp
bGVkOworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OlNldFN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KSwgTWVzc2Fn
ZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFN0b3JhZ2VEaXJlY3Rvcnk6OlJlcGx5KHN1
Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2NlZWRl
ZCA6IEZhaWxlZDsKK30KKworUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gUmVt
b3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZVNlc3Npb24oKQoreworICAgIGlmICghbV9mYWN0b3J5KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXIgaWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRl
U2Vzc2lvbigpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lv
bjo6UmVwbHkoaWQpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQpKTsKKyAgICBt
X2ZhY3RvcnktPmFkZFNlc3Npb24oaWQsIHNlc3Npb24uY29weVJlZigpKTsKKyAgICByZXR1cm4g
c2Vzc2lvbjsKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0SERDUFN0YXR1cyhIRENQ
U3RhdHVzIHN0YXR1cykgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisg
ICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07Cisg
ICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0SERDUFN0YXR1cyhzdGF0dXMp
LCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0SERDUFN0YXR1czo6UmVwbHko
c3VjY2VlZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2Vl
ZGVkIDogRmFpbGVkOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1
ZDgyNmJhYTQxMmQ1NjBlMGMwNjk4YTBlMmRjNWU4MGUyMDhiZTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVt
b3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ0RNSW5zdGFuY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJl
bW90ZUNETUluc3RhbmNlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNETUluc3RhbmNlIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0YW5jZSgpID0gZGVmYXVsdDsKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZUNETUluc3RhbmNlPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uJiYpOworCisgICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6
CisgICAgUmVtb3RlQ0RNSW5zdGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1v
dGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
JiYpOworCisgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CisgICAgU3VjY2Vz
c1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQ
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAg
ICBTdWNjZXNzVmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsK
KyAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29u
ZmlndXJhdGlvbi5rZXlTeXN0ZW07IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldEhEQ1BT
dGF0dXMoSERDUFN0YXR1cykgZmluYWw7CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+
IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OworICAgIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Cit9
OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0RNX0lOU1RBTkNFKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2UsIFdlYkNvcmU6OkNETUluc3RhbmNlOjpJbXBsZW1lbnRhdGlvblR5cGU6
OlJlbW90ZSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NTMyZDcyZTdjZTRiODUzZjJkM2I5MzQ1NWUxOTI4MWM0MTlmYTQzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIHsKKyAgICBTdHJpbmcga2V5U3lzdGVtOworCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBrZXlTeXN0ZW07CisgICAgfQor
CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
eworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGtleVN5c3RlbTsKKyAgICAgICAgZGVjb2RlciA+
PiBrZXlTeXN0ZW07CisgICAgICAgIGlmICgha2V5U3lzdGVtKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUo
KmtleVN5c3RlbSksCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRmZmRlNjkxYzNlODk1Yjg4NTllNjIwNWE3MWUxMTVmYTliNGZlMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwor
I2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitlbnVtIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNWNjYmUyMzk2ZjliMmY4NmM5
YzZiMjZmMzNlMWJhMjM1YjAxNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTAsMCAr
MSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb246OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmIGlkKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZN
b3ZlKGlkKSkpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmIGlkKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUo
ZmFjdG9yeSkpCisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCit7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5
KSB7CisgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5n
KCksIGZhbHNlLCBGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0
b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZXF1ZXN0TGljZW5z
ZSh0eXBlLCBpbml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGEpKSwgW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBi
b29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbWVzc2FnZS5idWZmZXIoKSkg
eworICAgICAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJp
bmcoKSwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgY2FsbGJhY2sobWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBzZXNzaW9u
SWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxl
ZCk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
IHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNr
KGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpVcGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwg
V1RGTW92ZShyZXNwb25zZSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wg
c2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlz
LCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+
JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhz
ZXNzaW9uV2FzQ2xvc2VkLCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhw
aXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxl
ZCk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCwgU2Vzc2lvbkxvYWRGYWlsdXJl
OjpPdGhlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OkxvYWRTZXNzaW9uKHR5cGUsIHNlc3Np
b25JZCwgb3JpZ2luKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChPcHRpb25hbDxL
ZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2Vk
RXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCwg
U2Vzc2lvbkxvYWRGYWlsdXJlIGxvYWRGYWlsdXJlKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBXVEZN
b3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQsIGxvYWRGYWlsdXJl
KTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNh
bGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OkNsb3NlU2Vzc2lvbihzZXNzaW9uSWQp
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNh
bGxiYWNrKCk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9LCBXVEY6Om51bGxv
cHQsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25EYXRhKHNl
c3Npb25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5U3RhdHVz
VmVjdG9yJiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIE9wdGlv
bmFsPFJlZjxTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQorICAgICAgICAgICAg
cmVhbE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsK
KyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3Nh
Z2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1faWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9mS2V5
VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OlN0b3JlUmVjb3JkT2ZLZXlVc2FnZShzZXNzaW9uSWQpLCBtX2lkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVz
VmVjdG9yJiYga2V5U3RhdHVzZXMpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+dXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpOworfQorCit2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2Fn
ZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSkKK3sK
KyAgICBpZiAobV9jbGllbnQgJiYgbWVzc2FnZS5idWZmZXIoKSkKKyAgICAgICAgbV9jbGllbnQt
PnNlbmRNZXNzYWdlKHR5cGUsIG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSk7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGll
bnQtPnNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0OTg3OWY0ODM3ZmMzMjJmMWQxMTViNjg4
MTA0OTk1ZGQwOTZjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC0wLDAgKzEsNzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Np
b24uaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uIGZpbmFsIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgIHB1YmxpYyBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbigpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgUmVtb3RlQ0RNRmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0
cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8g
TWVzc2FnZXMKKyAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKTsK
KyAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJik7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0
IFN0cmluZyYpOworCisKKyAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3Zl
KGNsaWVudCk7IH0KKyAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51
bGxwdHI7IH0KKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkg
ZmluYWw7CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFr
UHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGMyMzkyZTdlZjg2MjA0NjIxZDI4NDE0
MzhiNWVkZjRkMzgxNTM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KQEAgLTAs
MCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMg
LT4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFVwZGF0ZUtl
eVN0YXR1c2VzKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtl
eVN0YXR1c2VzKQorICAgIFNlbmRNZXNzYWdlKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1NZXNz
YWdlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2FnZSkKKyAg
ICBTZXNzaW9uSWRDaGFuZ2VkKFN0cmluZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODZhY2Qx
MjY1YWYwYzg0NjM4OGUyM2Y5Y2NhMTZkOTAyMzM4ZmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2VudW0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyQ2FjaGVkU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNmNGYwZGUxMGQ4ODZmZjljZDEzNGZmZWI3MTg5MjdhY2JmODc4MDAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyQ2FjaGVkU3RhdGUuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YVBsYXllckVudW1zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVRpbWVSYW5nZXMuaD4K
KyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1
Y3QgUmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZSB7CisgICAgTWVkaWFUaW1lIGN1cnJlbnRU
aW1lOworICAgIE1lZGlhVGltZSBkdXJhdGlvbjsKKyAgICBNZWRpYVRpbWUgbWluVGltZVNlZWth
YmxlOworICAgIE1lZGlhVGltZSBtYXhUaW1lU2Vla2FibGU7CisgICAgV2ViQ29yZTo6UGxhdGZv
cm1UaW1lUmFuZ2VzIGJ1ZmZlcmVkUmFuZ2VzOworICAgIGJvb2wgcGF1c2VkIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgbG9hZGluZ1Byb2dyZXNzZWQgeyBmYWxzZSB9OworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgZW5jb2RlciA8PCBjdXJyZW50VGltZTsKKyAgICAgICAgZW5jb2RlciA8PCBk
dXJhdGlvbjsKKyAgICAgICAgZW5jb2RlciA8PCBtaW5UaW1lU2Vla2FibGU7CisgICAgICAgIGVu
Y29kZXIgPDwgbWF4VGltZVNlZWthYmxlOworICAgICAgICBlbmNvZGVyIDw8IGJ1ZmZlcmVkUmFu
Z2VzOworICAgICAgICBlbmNvZGVyIDw8IHBhdXNlZDsKKyAgICAgICAgZW5jb2RlciA8PCBsb2Fk
aW5nUHJvZ3Jlc3NlZDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAg
ICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlTWVkaWFQbGF5ZXJDYWNoZWRTdGF0ZT4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGN1cnJl
bnRUaW1lOworICAgICAgICBkZWNvZGVyID4+IGN1cnJlbnRUaW1lOworICAgICAgICBpZiAoIWN1
cnJlbnRUaW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBP
cHRpb25hbDxNZWRpYVRpbWU+IGR1cmF0aW9uOworICAgICAgICBkZWNvZGVyID4+IGR1cmF0aW9u
OworICAgICAgICBpZiAoIWR1cmF0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IG1pblRpbWVTZWVrYWJsZTsKKyAgICAg
ICAgZGVjb2RlciA+PiBtaW5UaW1lU2Vla2FibGU7CisgICAgICAgIGlmICghbWluVGltZVNlZWth
YmxlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxNZWRpYVRpbWU+IG1heFRpbWVTZWVrYWJsZTsKKyAgICAgICAgZGVjb2RlciA+PiBtYXhUaW1l
U2Vla2FibGU7CisgICAgICAgIGlmICghbWF4VGltZVNlZWthYmxlKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpQbGF0Zm9ybVRp
bWVSYW5nZXM+IGJ1ZmZlcmVkUmFuZ2VzOworICAgICAgICBkZWNvZGVyID4+IGJ1ZmZlcmVkUmFu
Z2VzOworICAgICAgICBpZiAoIWJ1ZmZlcmVkUmFuZ2VzKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBwYXVzZWQ7CisgICAgICAgIGRl
Y29kZXIgPj4gcGF1c2VkOworICAgICAgICBpZiAoIXBhdXNlZCkKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gbG9hZGluZ1Byb2dyZXNz
ZWQ7CisgICAgICAgIGRlY29kZXIgPj4gbG9hZGluZ1Byb2dyZXNzZWQ7CisgICAgICAgIGlmICgh
bG9hZGluZ1Byb2dyZXNzZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisK
KyAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmN1cnJlbnRUaW1lKSwgV1RGTW92ZSgqZHVyYXRp
b24pLCBXVEZNb3ZlKCptaW5UaW1lU2Vla2FibGUpLCBXVEZNb3ZlKCptYXhUaW1lU2Vla2FibGUp
LCBXVEZNb3ZlKCpidWZmZXJlZFJhbmdlcyksIFdURk1vdmUoKnBhdXNlZCksIFdURk1vdmUoKmxv
YWRpbmdQcm9ncmVzc2VkKSB9fTsKKyAgICB9CisKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCBhZTAxNjFhYWQ5NDc0ZDZiMGYxZjkwMGIwNTQ0
ZjU5ODBkMzY5OGZmLi5iOWY0ZDJhN2UzMjdlYmUzMjBkNTdlNzU4YmFiMDNlNTdhNmFkNjU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFZJREVP
X1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5o
IgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMDlkNzk4NzFmNWI2ZjM4N2Q0ZjVmYjY1NTFlZjlhMDQ2N2M0
NjNiOC4uNDhjYTlkZTk5YWJjMGIwOTUyMTE4ZWRkNmExOWEyZWI5MTg4YmNkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcApAQCAtMTg5LDE3ICsxODksMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICBt
X2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShwb2xpY3lE
ZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGRhdGEsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCks
IG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsg
cHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJl
c3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50
ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOwotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9p
bnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwg
ZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9h
ZGVyKQotICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmgKaW5kZXggNTgzZTM3OWM4OWVjZmE5NTMwYjBhYmZhMWM2OWZlYTlkNTM5NjZmYi4uMjY5MDhl
ODIzZDc5MjQ0ZTU3ODZkYjA0YTU5NjllZjFmYzY1ODA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw3ICsz
Niw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNz
IERhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogY2xhc3Mg
Rm9ybURhdGFSZWZlcmVuY2U7CiB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
OwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcAppbmRleCAzNGU4NmMxMWUyNDg2YzdhMTYwMzZkN2I0NjhmYjc4ZDI3
NThmZDYxLi5jNTBmNTVhZTkyNjNjMTE2ODE0MWFhNDU3MGEyZGRlYzYxNjY0MDdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhj
b25zdCBjaGFyKiBkYXRhLCBzaXplCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJ
ZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LCBzaXplKSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNo
QmxvYkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOThiMTVi
ODdmYzEzZGEyZGJmNDQzYmE5OGE0ZDg2ZDdhOWQzNTQxOS4uM2UxOTljOWFmOThjNWQ0YmQ4ODlk
YTk3MjUwMzUyZDRiMmQxYjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xOTE0LDkgKzE5MTQsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcgogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IENhbGxiYWNrSUQ6OmZyb21JbnRlZ2VyKGNhbGxiYWNrSWRlbnRpZmllcik7CiAg
ICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdlKCkgfSkgewogICAgICAgICBp
ZiAoZGF0YSkKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9KSk7CisgICAgICAgICAg
ICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0lj
b24oY2FsbGJhY2tJRCwgeyAqZGF0YSB9KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihj
YWxsYmFja0lELCB7IG51bGxwdHIsIDAgfSkpOworICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsg
fSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBlNDU4Mzc0OWI2Zjk2YjVjMWRlZDFlMDZhNDMwYWFjODkxNTg3YmZkLi44
ZmJjNzQzMWJlNzdhMGM5NjI1YWQzMTg0N2ZhZTM2Y2E5MDgzYzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzIwLDYgKzMyMCw5IEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmgiCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5LmgiCisjZW5kaWYKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM1MDAs
NyArMzUwMyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2U7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRp
Y19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBk
YXRhUmVmZXJlbmNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5kaWYK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJl
bmNlLCBjYWxsYmFja0lEKSk7CiB9CkBAIC0zNTgxLDcgKzM1ODQsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDYWxsYmFja0lE
IGNhbGxiYWNrSQogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVm
ZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YVJlZmVyZW5j
ZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2VuZGlmCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJh
Y2tJRCkpOwogfQpAQCAtMzY4NSw2ICszNjg4LDkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOworI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3Vw
cGxlbWVudDxSZW1vdGVDRE1GYWN0b3J5PigpLT51cGRhdGVQcmVmZXJlbmNlcyhzZXR0aW5ncyk7
CisjZW5kaWYKICNlbmRpZgogfQogCkBAIC00OTE5LDcgKzQ5MjUsNyBAQCB2b2lkIFdlYlBhZ2U6
OmRyYXdQYWdlc1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
IHByaW50SW5mbwogewogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0
YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJzdCwgY291
bnQsIHBkZlBhZ2VEYXRhKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFD
YWxsYmFjayh7IENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpIH0sIGNhbGxiYWNr
SUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayh7IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHBkZlBhZ2VEYXRhLmdldCgpKSB9LCBjYWxsYmFja0lEKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90
IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQpAQCAtNjU2
MywxMiArNjU2OSwxMiBAQCB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NAogICAgIGhhbmRsZXItPnRh
c2tEaWRSZWNlaXZlUmVzcG9uc2UodGFza0lkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklk
ZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBhdXRvKiBoYW5kbGVy
ID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVu
dGlmaWVyKTsKICAgICBBU1NFUlQoaGFuZGxlcik7CiAKLSAgICBoYW5kbGVyLT50YXNrRGlkUmVj
ZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2l6ZSgpLCBkYXRhLmRhdGEoKSk7CisgICAg
aGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGRhdGEuZGF0YSgpKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVu
dGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCkBAIC02NzkwLDcgKzY3OTYsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaQogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVy
KGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGF0dGFjaG1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5
b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
YzdjZjM4YzViYmEyMDFjZWQ3ODhjZDAzZDVhMjA0ZDRhY2E0ZjJhNy4uNzNjNTkyY2M4NGY3NDhj
MmY0ODk5NTg2N2JlNmUyZTlhZWVhYzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTU1LDYgKzE1NSw3IEBAIG5hbWVzcGFjZSBJUEMgewogY2xh
c3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTExOTQsNyArMTE5NSw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDYWxsYmFja0lEKTsKLSAgICB2b2lk
IHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0
aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5n
SW1hZ2VEYXRhLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1
dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNp
emUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBD
YWxsYmFja0lEKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpA
QCAtMTY3NCw3ICsxNjc1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXJsU2NoZW1lVGFza0Rp
ZFBlcmZvcm1SZWRpcmVjdGlvbih1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3Qg
dGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRhc2tE
aWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lk
ZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1l
VGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAg
ICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZp
ZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAKICAgICB2b2lkIHNldElzU3VzcGVuZGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDQ3YzljMDhhZGVlNDU4NWQ5MTMzNDZiMWFiZGVlODY3
YzVmMWNiNTcuLmI1ZDcyYjRlN2Y2MjAzZmYzY2JjNTIyMjZkNzY4MzVmYjIwNGU0NGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE3NCw2ICsxNzQsMTAgQEAK
ICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3MuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjZW5kaWYKKwogI2Rl
ZmluZSBSRUxFQVNFX0xPR19TRVNTSU9OX0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50
b1VJbnQ2NCgpIDogMCkKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5u
ZWwsICIlcCAtIFtzZXNzaW9uSUQ9JSIgUFJJdTY0ICJdIFdlYlByb2Nlc3M6OiIgZm10LCB0aGlz
LCBSRUxFQVNFX0xPR19TRVNTSU9OX0lELCAjI19fVkFfQVJHU19fKQogCkBAIC0yNDAsNiArMjQ0
LDEwIEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgIGFkZFN1cHBsZW1lbnQ8UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyPigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVDRE1G
YWN0b3J5PigpOworI2VuZGlmCisKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2UoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391510</attachid>
            <date>2020-02-23 21:23:00 -0800</date>
            <delta_ts>2020-02-28 17:12:57 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-208090-20200223212259.patch</filename>
            <type>text/plain</type>
            <size>268209</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ5OTU0ODNlZGFmNmRl
ODIyNjcwN2ZlYTBlMTc4MDU2NDI2MTFiOS4uZTRiODU4OTMxNTdmZWQyNDdjM2UzZjBjOTYxNzc4
NjBkYmFhNjU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5OjpyZXNldEZhY3Rvcmll
cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVxdWlyZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1
cHBvcnRlZFJvYnVzdG5lc3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydGVk
SW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0
ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnN1cHBv
cnRlZFJvYnVzdG5lc3MgY29uc3QpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAyMC0wMi0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBTdG9wIHVzaW5nIFFUS2l0IGZvciByZW5kZXJpbmcgV0sxIHZpZGVvIGZ1
bGxzY3JlZW4gY29udHJvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWM3MjdiZjkzMzdkMGNhMjVlYzFjY2Y5ZDhl
NGZlMDY3NWI0Mzk3Ni4uN2YxNzgxMWQxNDJhZmFmYTZhYjgyNTk1MTQ3NDkxYzY4ZjljZjI2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMjcgQEAKKzIwMjAtMDItMjEgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQ
SSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1G
YWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24sIGFuZCBhbGwKKyAgICAgICAgb2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3Rz
LgorCisgICAgICAgIEFsbG93IHRoZSBleGlzdGluZyBDRE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3
b3JrIG5vcm1hbGx5IGJ5IGV4cGxpY2l0bHkgY2xlYXJpbmcgb3V0IGFsbCB0aGUgZXhpc3Rpbmcg
CisgICAgICAgIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlzIGVuYWJsZWQsIGFuZCByZXNldHRpbmcg
dGhvc2UgZmFjdG9yaWVzIHRvIGRlZmF1bHQgd2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgZGlzYWJs
ZWQuCisKKyAgICAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGlzIG1hZGUgbW9y
ZSBlZmZpY2llbnQgYnkgdXNpbmcgdGhlIHNhbWUgZW5jb2RlL2RlY29kZSBwYXRoIGFzIGlzIHVz
ZWQgaW4KKyAgICAgICAgV2ViQ29yZUFyZ3VtZW50Q29kZXJzOiB0aGUgU2hhcmVkQnVmZmVyIGlz
IGNvcGllZCBpbnRvIHNoYXJlZCBtZW1vcnksIGFuZCBvbmx5IGEgaGFuZGxlIGlzIHBhc3NlZCBh
Y3Jvc3MKKyAgICAgICAgdGhlIFhQQyBib3VuZGFyeS4gVGhpcyByZXF1aXJlcyBleGlzdGluZyB1
c2VycyB0byBoYW5kbGUgcmVjZWl2aW5nIGEgSVBDOjpTaGFyZWRCdWZmZXJEYXRhSGFuZGxlIG9u
IHRoZQorICAgICAgICByZW1vdGUgc2lkZSBvZiB0aGUgWFBDIGJvdW5kYXJ5LCBidXQgdGhpcyBp
cyB0cml2aWFsLCBhbmQgbWFueSBjYWxsIHNpdGVzIHJlcXVpcmUgYSBTaGFyZWRCdWZmZXIgb24g
dGhlCisgICAgICAgIHJlbW90ZSBzaWRlIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhpcyBjb2RlIGNv
dWxkIGJlIGltcHJvdmVkIGJ5IGFsbG93aW5nIHRoZSBTaGFyZWRNZW1vcnkgb2JqZWN0IGJlIGFk
b3B0ZWQKKyAgICAgICAgYnkgdGhlIFNoYXJlZEJ1ZmZlciBvYmplY3QgYXQgY3JlYXRpb24gdGlt
ZSwgbGVhZGluZyB0byB6ZXJvLWNvcHkgZGVjb2RpbmcsIGJ1dCBpcyBub3QgZG9uZSBpbiB0aGlz
IHBhdGNoLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFj
dG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNl
c3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojph
ZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3Zl
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZEluc3Rh
bmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0
YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFu
Y2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24p
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmg6IEFk
ZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1l
c3NhZ2VzLmluOiAKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
UHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0UGVyc2lzdGVudFN0
YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNl
dFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUlu
c3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OmNvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjppbnN0YW5jZSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRl
TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Ojpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpjbG9zZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1
c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNUHJveHk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmln
dXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpwZXJz
aXN0ZW50U3RhdGVSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5
OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXplKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVy
S2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZTo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U6OmRlY29kZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3I+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW06CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0
YW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE06OlJlbW90ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3Vw
cG9ydHNDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpz
dXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6cGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1Db25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNRmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0
b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZh
Y3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFj
dG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6YWRk
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Np
b24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3Rv
cnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRl
bnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZVNlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0SERDUFN0YXR1cyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUVuY3J5cHRpb25TY2hlbWUuaC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZW5kTWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hh
bmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9u
U2NoZW1lLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJDYWNoZWRTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJDYWNoZWRTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJDYWNoZWRTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZHJhd1BhZ2VzVG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAyLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQg
Zm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNjcmVlbiBjb250cm9scwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggYWQ0ZjcxZDdjNGI0OTY5MTAzMjE2MzNjYWFmYzM4ZDYwZjYyY2YxZC4uNWFiN2Jh
NTEzYjYwMTFhZmEzMmUxMTZhYjY4YmE1MTM5YjZhNTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xMDMxLDYgKzEwMzEsMjAgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKICAgICBwbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAogCisgICAgcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNRmFjdG9yeS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2UuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisg
ICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKKyAgICBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKKyAgICBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisgICAgcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaAorICAgIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNU2Vzc2lvblR5cGUuaAorCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJvdmlkZXIu
aAogICAgIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgKICAgICBwbGF0
Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggNGJiYjJiY2U2MTg3NGI3ZWUxNDhhNDE2ODU1
MGE2YjE1NjQzOTJhMC4uYzRlMTQyNmEwYzNmZmI1YWE4MTBkNGM1ZDBhNjhiZDA3ZTlmZWY1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAt
MTk1LDcgKzE5NSw3IEBAIE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gQ0RN
OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhCiAgICAgICAgICAgICBpZiAo
aW5pdERhdGFUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgaWYgKG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBl
KGluaXREYXRhVHlwZSkpCisgICAgICAgICAgICBpZiAobV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAg
ICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKGluaXREYXRhVHlwZSk7CiAgICAgICAgIH0K
IApAQCAtNDYwLDcgKzQ2MCw3IEBAIE9wdGlvbmFsPFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlh
Q2FwYWJpbGl0eT4+IENETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yCiAgICAgICAgIC8v
IDMuMTEuIElmIGNvbnRlbnQgdHlwZSBpcyBub3Qgc3RyaWN0bHkgYSBhdWRpby92aWRlbyB0eXBl
LCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uCiAgICAgICAgIC8vIDMuMTIuIElmIHJv
YnVzdG5lc3MgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcgYW5kIGNvbnRhaW5zIGFuIHVucmVjb2du
aXplZCB2YWx1ZSBvciBhIHZhbHVlIG5vdCBzdXBwb3J0ZWQgYnkKICAgICAgICAgLy8gICAgICAg
aW1wbGVtZW50YXRpb24sIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4gU3RyaW5nIGNv
bXBhcmlzb24gaXMgY2FzZS1zZW5zaXRpdmUuCi0gICAgICAgIGlmICghcm9idXN0bmVzcy5pc0Vt
cHR5KCkgJiYgIW1fcHJpdmF0ZS0+c3VwcG9ydHNSb2J1c3RuZXNzKHJvYnVzdG5lc3MpKQorICAg
ICAgICBpZiAoIXJvYnVzdG5lc3MuaXNFbXB0eSgpICYmICFtX3ByaXZhdGUtPnN1cHBvcnRlZFJv
YnVzdG5lc3NlcygpLmNvbnRhaW5zKHJvYnVzdG5lc3MpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgLy8gMy4xMy4gSWYgdGhlIHVzZXIgYWdlbnQgYW5kIGltcGxlbWVudGF0aW9u
IGRlZmluaXRlbHkgc3VwcG9ydCBwbGF5YmFjayBvZiBlbmNyeXB0ZWQgbWVkaWEgZGF0YSBmb3Ig
dGhlCkBAIC02MTIsNyArNjEyLDcgQEAgYm9vbCBDRE06OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25z
dAogCiBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5z
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpOworICAgIHJldHVybiBtX3ByaXZhdGUg
JiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFU
eXBlKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkYTE5YmJmZjJjN2NlODJiZWZhODAzNWFkNzU0MmUz
ZTlmMjJhNjlkLi4yOWZhYjQ5OTA2ODI1ODMyYTVhZGRkOTlhODBlOGYzNGQ4ZDMwOGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246
OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYKICAgICAgICAgLy8gNi41LiBMZXQgc2Vzc2lvbiBjbG9zZWQgYmUgZmFsc2UuCiAgICAgICAg
IC8vIDYuNi4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMg
b2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAgICAgICAvLyA2LjcuIFVzZSB0aGUgY2Rt
IHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Np
b24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRS
ZXNwb25zZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRv
dWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNl
KG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBzYW5pdGl6ZWRSZXNwb25zZS5yZWxlYXNlTm9u
TnVsbCgpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91
YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1l
c3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOTBiMDExZTM1NWJkY2I3YTM0N2NlMDI5N2RiMWM0MmQ4OGY5NDYz
Yi4uZjg3M2I3Y2YxZDk2OGZmZDIyNTBlZWQwZGJiY2JiZGZiZmY5NWRmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA2NSw2
ICs0MDY1LDE5IEBACiAJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTYx
N0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggKi87IH07CiAJCUNEM0E0OTYyMTdBOUQw
MUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTU5MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZm
ZXIuaCAqLzsgfTsKIAkJQ0QzQTQ5NjUxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0
OTVDMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggKi87IH07CisJCUNEM0NF
MEY4MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY3NTY5QjIxNUMyM0E0MDBFRkNC
NTAgLyogQ0RNRW5jcnlwdGlvblNjaGVtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEY5MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1GYWN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0
QTVEMjFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNRmFjdG9yeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZBMjQwMUFBRDkwMDRCQTAxRCAv
KiBDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q5NEE1Q0UxRjcxQ0I2QTAwRjUyNUM1IC8qIENETUluc3RhbmNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkIyNDAxQUFE
OTAwNEJBMDFEIC8qIENETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5RDM3NUEyMTUxNjNFNDAwNDk2NTdCIC8qIENETUlu
c3RhbmNlU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUNEM0NFMEZDMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTdGF0dXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ0MUY3MUNC
NkMwMEY1MjVDNSAvKiBDRE1LZXlTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGRDI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q5NEE1Q0QxRjcxQ0I2OTAwRjUyNUM1IC8qIENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEMzFGNzFD
QjZDMDBGNTI1QzUgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkYyNDAxQUFEQTAwNEJBMDFEIC8q
IENETU1lc3NhZ2VUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDk0QTVENjFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNTWVzc2FnZVR5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMDI0
MDFBQURBMDA0QkEwMUQgLyogQ0RNUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1Q0YxRjcxQ0I2QTAwRjUyNUM1IC8qIENETVByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
RDNDRTEwMTI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNGMUY3MUNCNjEwMEY1MjVDNSAvKiBD
RE1Qcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUNEM0NFMTAyMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1SZXF1aXJlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1Q0MxRjcxQ0I2OTAw
RjUyNUM1IC8qIENETVJlcXVpcmVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDMyNDAxQUFEQTAwNEJBMDFEIC8qIENETVJlc3Ry
aWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q5NEE1RDAxRjcxQ0I2QjAwRjUyNUM1IC8qIENETVJlc3RyaWN0aW9ucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTA0MjQwMUFBREEw
MDRCQTAxRCAvKiBDRE1TZXNzaW9uVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1RDUxRjcxQ0I2RDAwRjUyNUM1IC8qIENETVNlc3Npb25U
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0QzRTIxREQyMTgzNDQ0QTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyMURCMjE4MzNG
NTEwMEU2NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QzRTI1MUMxODA0NkIwNjAwRTI3RjU2
IC8qIEdyaWRBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDNFMjUxQjE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjUyNDE4MDQ2QkNEMDBF
MjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzRTI1MjIxODA0NkJDRDAwRTI3RjU2IC8qIENT
U0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCAqLzsgfTsKQEAgLTQxOTYsNyArNDIwOSw3IEBACiAJ
CUNERjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwRjE4MjA1NDA2MDBGMkI0MjQg
LyogTW9ja1RyYWNrcy5oICovOyB9OwogCQlDREY0QjcxMjFFMDA4N0FFMDBFMjM1QTIgLyogTGVn
YWN5Q0RNU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIExlZ2FjeUNETVNlc3Npb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREY0QjcxNTFF
MDBCN0U1MDBFMjM1QTIgLyogQ0RNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERjRCNzEzMUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwICovOyB9
OwotCQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0QjcxNDFFMDBCN0U1MDBFMjM1QTIgLyog
Q0RNLmggKi87IH07CisJCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE0MUUwMEI3RTUw
MEUyMzVBMiAvKiBDRE0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDREY0QjcxODFFMDFDQjkxMDBFMjM1QTIgLyogTWVkaWFLZXlzUmVzdHJpY3Rp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0
QjcxNzFFMDFDQjkxMDBFMjM1QTIgLyogTWVkaWFLZXlzUmVzdHJpY3Rpb25zLmggKi87IH07CiAJ
CUNERjRCNzFBMUUwMUQzRDAwMEUyMzVBMiAvKiBNZWRpYUtleVNlc3Npb25UeXBlLmlkbCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE5MUUwMUQz
RDAwMEUyMzVBMiAvKiBNZWRpYUtleVNlc3Npb25UeXBlLmlkbCAqLzsgfTsKIAkJQ0RGNEI3MUUx
RTAxRTExQTAwRTIzNUEyIC8qIEpTTWVkaWFLZXlTZXNzaW9uVHlwZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MUMxRTAxRTExQTAwRTIzNUEy
IC8qIEpTTWVkaWFLZXlTZXNzaW9uVHlwZS5oICovOyB9OwpAQCAtMjkyNjMsOSArMjkyNzYsMjIg
QEAKIAkJCQk2NTUwQjY5RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRDk0QTVERTFGNzJGNTdCMDBGNTI1QzUgLyogQ0RNQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDRDNDRTBGODI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRW5jcnlwdGlvblNj
aGVtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRjkyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQjcwNDVBMUY3NDY1QTEwMDM5MjNERiAv
KiBDRE1GYWlyUGxheVN0cmVhbWluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkEyNDAx
QUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBG
QjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRDNDRTBGQzI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5U3RhdHVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRDNDRTBGRDI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkUyNDAxQUFEOTAwNEJBMDFEIC8q
IENETU1lZGlhQ2FwYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkYyNDAxQUFE
QTAwNEJBMDFEIC8qIENETU1lc3NhZ2VUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEw
MDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Qz
MTg2MjMxOTlGMUUyQTAwMzBBMEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBp
biBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcm94eS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UxMDIyNDAxQUFEQTAwNEJBMDFEIC8qIENETVJlcXVp
cmVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwMzI0MDFBQURBMDA0QkEwMUQgLyog
Q0RNUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU1OTU5NzFCRjI2RTIxMDBB
MUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0QzQ0UxMDQyNDAxQUFEQTAwNEJBMDFEIC8qIENETVNlc3Npb25UeXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhBMkQgLyogQ2VydGlmaWNhdGVJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MUI4RjBCNTIxOTUzRDY1MDAwQzJCMDAgLyogQ2VydGlmaWNh
dGVJbmZvQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzNkZEMTUxNkM3ODI2NTAwRjg4N0Mx
IC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDllN2E5NjQ4NDQ0OTkwZTcxYjQzZDZmNzQ0Nzcx
M2QzMmZkMGIyMDMuLjExZTI3MmI3M2RjZDg3NGM3MGU5M2MyZjViYzAzZDFkNGJjMzBiNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMjU2MSwxNSArMjU2
MSwyNSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgc3RhdGUpCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpCit7CisgICAgaWYgKCFtX3BsYXllcikK
KyAgICAgICAgcmV0dXJuOworICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSBoYXNFdmVudExpc3Rl
bmVycygid2Via2l0bmVlZGtleSIpIHx8IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpICYmICFkb2N1bWVudCgpLnF1aXJr
cygpLmhhc0Jyb2tlbkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydFF1aXJrKCkpOworICAgIG1fcGxh
eWVyLT5zZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3VsZENvbnRpbnVlKTsKK30K
KyNlbmRpZgorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV93ZWJLaXRNZWRpYUtleXMgPyBtX3dlYktpdE1lZGlhS2V5cy0+Y2FjaGVkS2V5Rm9y
S2V5SWQoa2V5SWQpIDogbnVsbHB0cjsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCiB7CiAgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxlZ2FjeUVuY3J5
cHRlZE1lZGlhQVBJRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghaGFzRXZlbnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXkiKQogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCkBAIC0yNTgwLDE0ICsyNTkwLDEyIEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEp
CiAgICAgICAgICkgewogICAgICAgICBtX2Vycm9yID0gTWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlh
RXJyb3I6Ok1FRElBX0VSUl9FTkNSWVBURUQpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50
TmFtZXMoKS5lcnJvckV2ZW50KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgYXV0byBldmVudCA9IFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0RGF0YSk7CiAgICAg
ZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2
ZW50KFdURk1vdmUoZXZlbnQpKTsKLQotICAgIHJldHVybiB0cnVlOwogfQogCiBTdHJpbmcgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3QKQEAgLTUxMjksNiArNTEzNywxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5n
aW5lV2FzVXBkYXRlZCgpCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICBzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdXBkYXRl
U2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpCkBAIC01ODkxLDYgKzU5MDMsMTEg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIAog
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50
TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogeworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCkKKyAgICAgICAgdXBkYXRlU2hvdWxkQ29u
dGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgorCiAgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVu
dE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCiAg
ICAgICAgIHJldHVybiBOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShs
aXN0ZW5lciksIG9wdGlvbnMpOwogCkBAIC01OTEyLDYgKzU5MjksMTEgQEAgYm9vbCBIVE1MTWVk
aWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
UmVmPEV2ZW50TGkKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGNv
bnN0IExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpCisgICAgICAgIHVwZGF0ZVNob3Vs
ZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKKwogICAgIGlmIChldmVudFR5cGUgIT0g
ZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50
KQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxp
c3RlbmVyLCBvcHRpb25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCBlNzE1NjNjZmY2MWE1MTQ1NTY3MjRkZmQzY2E3MGIwMTA5ZmZmNTYwLi5jYTM3NDliZGRi
NmUwYjZmMWM0ZjE4NjMwMTliZDY0OTY3OTUxZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtNjgyLDcgKzY4Miw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxh
eWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QgZmluYWw7Ci0g
ICAgYm9vbCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9p
ZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CiAgICAgU3RyaW5nIG1l
ZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlm
CiAKQEAgLTY5Niw2ICs2OTYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBDRE1DbGllbnQKICAgICB2
b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSBmaW5hbDsK
ICNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisgICAgdm9pZCB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtl
eSgpOworI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
ICAgICB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5n
ZWQoYm9vbCkgZmluYWw7CkBAIC0xMTY4LDYgKzExNzIsNyBAQCBwcml2YXRlOgogICAgIE1lZGlh
UHJvdmlkZXIgbV9tZWRpYVByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCisgICAgYm9vbCBtX2hhc05lZWRrZXlMaXN0ZW5lciB7IGZhbHNlIH07CiAgICAgUmVm
UHRyPFdlYktpdE1lZGlhS2V5cz4gbV93ZWJLaXRNZWRpYUtleXM7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlv
blNjaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5j
cnlwdGlvblNjaGVtZS5oCmluZGV4IDc0YjNhYTdkN2JkYjAwYTI2NzU2YTAyMzY1NjZmMzY4ODEy
YmNlM2IuLjFhN2E1NjI3ZGJjYTY0MWI0OWNlN2U1NmU2NzE2ZTMxOGE5ODhiZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25T
Y2hlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmgKQEAgLTI3LDEzICsyNywyNyBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotZW51bSBjbGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIHsKK2VudW0gY2xhc3MgQ0RN
RW5jcnlwdGlvblNjaGVtZSA6IHVpbnQ4X3QgewogICAgIGNlbmMsCiAgICAgY2JjcywKIH07CiAK
IH0KIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWUsCisgICAgICAgIFdlYkNv
cmU6OkNETUVuY3J5cHRpb25TY2hlbWU6OmNlbmMsCisgICAgICAgIFdlYkNvcmU6OkNETUVuY3J5
cHRpb25TY2hlbWU6OmNiY3MKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKaW5k
ZXggNGJiNTk5ZmE4MDczZDNiODU1ZDg0NjE3ODYxOWRiYzAyNjEwNThmMi4uNjYxZDViNGViNzUy
ZWE1NWFhMmQ4ZTRmOWVlZDYzODZlZGRhYzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKQEAgLTU3LDYgKzU3LDEx
IEBAIHZvaWQgQ0RNRmFjdG9yeTo6dW5yZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYgZmFjdG9y
eSkKICAgICByZWdpc3RlcmVkRmFjdG9yaWVzKCkucmVtb3ZlQWxsKCZmYWN0b3J5KTsKIH0KIAor
dm9pZCBDRE1GYWN0b3J5OjpyZXNldEZhY3RvcmllcygpCit7CisgICAgcGxhdGZvcm1SZWdpc3Rl
ckZhY3RvcmllcyhyZWdpc3RlcmVkRmFjdG9yaWVzKCkpOworfQorCiAjaWYgIVVTRShHU1RSRUFN
RVIpICYmICFVU0UoQVZGT1VOREFUSU9OKQogdm9pZCBDRE1GYWN0b3J5OjpwbGF0Zm9ybVJlZ2lz
dGVyRmFjdG9yaWVzKFZlY3RvcjxDRE1GYWN0b3J5Kj4mKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDQ0ZWFhYjA3
ZTc1N2FmZTU4YjUzNjFmNWFmMTJiMjQ3NzZhMDM1MmUuLmUxYWU2MDQyMTZhOTc1OTJmMzNjYjgz
NjJmYzJjMjFhMmIwODhiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQyLDcgKzQyLDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmlu
ZyYpID0gMDsKIAotICAgIHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiByZWdpc3RlcmVkRmFj
dG9yaWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4m
IHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBy
ZXNldEZhY3RvcmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
RmFjdG9yeShDRE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5y
ZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCA4ZjlmM2ViODc0NWMz
NTIwMjgzMTRjNjA2ZDI4OWQ0ZTNmNzFhMDQ4Li43ZmUwOWYwYWYzZmQ3MzAzNjIzNWMyMjc3YmFj
ZGViYTA2NDliMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgICAg
ICBNb2NrLAogICAgICAgICBDbGVhcktleSwKICAgICAgICAgRmFpclBsYXlTdHJlYW1pbmcsCisg
ICAgICAgIFJlbW90ZSwKICAgICB9OwogICAgIHZpcnR1YWwgSW1wbGVtZW50YXRpb25UeXBlIGlt
cGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0ID0gMDsKIApAQCAtNjgsNyArNjksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CiAK
LSAgICBlbnVtIGNsYXNzIEhEQ1BTdGF0dXMgeworICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyA6
IHVpbnQ4X3QgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWYWxpZCwKICAgICAgICAgT3V0
cHV0UmVzdHJpY3RlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggODcyNWEzMWQ4YmIzZTIy
YmUyMWRmMDdlMzIwYjM2ZTc1MDM4NmUxYS4uZDQ2NGI3NGQxYzcyMDJhOWEzMzlkZmY2NWQwNmUw
ODIwODk2OWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTcyLDkgKzcyLDkgQEAgcHVi
bGljOgogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVu
dDo6S2V5U3RhdHVzVmVjdG9yOwogICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2Fn
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9u
YWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hh
bmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKLSAgICBlbnVt
IGNsYXNzIFNlc3Npb25Mb2FkRmFpbHVyZSB7CisgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZh
aWx1cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKICAgICAgICAgTm9TZXNzaW9uRGF0YSwK
ICAgICAgICAgTWlzbWF0Y2hlZFNlc3Npb25UeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAppbmRleCBhZDk2OTYyMzYw
NGNkMTQ3MDU1YTI3YjczMzZmNjc3YzBiM2FmMmM0Li5jYzVlNzE4NmY3NGVmOGU4MTRjYjNhZjc1
NWUxNjFhNjVjMjA4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNS2V5U3RhdHVzIHsKK2VudW0gY2xhc3Mg
Q0RNS2V5U3RhdHVzIDogdWludDhfdCB7CiAgICAgVXNhYmxlLAogICAgIEV4cGlyZWQsCiAgICAg
UmVsZWFzZWQsCkBAIC00NCw0ICs0NiwyMCBAQCBlbnVtIGNsYXNzIENETUtleVN0YXR1cyB7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXMsCisgICAgV2ViQ29y
ZTo6Q0RNS2V5U3RhdHVzOjpVc2FibGUsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpFeHBp
cmVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6UmVsZWFzZWQsCisgICAgV2ViQ29yZTo6
Q0RNS2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1
czo6T3V0cHV0RG93bnNjYWxlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlN0YXR1c1Bl
bmRpbmcsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yCisgICAgPjsK
K307CisKK30KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDYxMmQ2NDVmYWE1MjQ4ZjcxZjFjMTU2N2Y0NTA3
ZTg5ZjNiMzFjZTUuLjg1MjU4N2NlZGEwNTEyMTQ0Nzk1MjJmYWMzOGU0YzBmYjk4NzQ5ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTQ4LDYgKzQ4LDY3IEBAIHN0
cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIHsKICAgICBDRE1SZXF1aXJlbWVudCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXIgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBDRE1S
ZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGUgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsK
ICAgICBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+IHNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CisgICAgICAgIGVuY29kZXIgPDwgaW5p
dERhdGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAg
ICAgZW5jb2RlciA8PCB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlOwor
ICAgICAgICBlbmNvZGVyIDw8IHNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IGxhYmVsOworICAgICAgICBkZWNvZGVyID4+IGxhYmVsOworICAgICAgICBpZiAoIWxh
YmVsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBpbml0
RGF0YVR5cGVzOworICAgICAgICBpZiAoIWluaXREYXRhVHlwZXMpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFi
aWxpdHk+PiBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgZGVjb2RlciA+PiBhdWRpb0NhcGFi
aWxpdGllczsKKyAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2Fw
YWJpbGl0eT4+IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAgICBkZWNvZGVyID4+IHZpZGVvQ2Fw
YWJpbGl0aWVzOworICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4g
ZGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRl
bnRpZmllcjsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXIpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAKKyAgICAgICAgT3B0aW9uYWw8Q0RNUmVx
dWlyZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50
U3RhdGU7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+
PiBzZXNzaW9uVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc2Vzc2lvblR5cGVzOworICAgICAg
ICBpZiAoIXNlc3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCisgICAgICAg
ICAgICBXVEZNb3ZlKCppbml0RGF0YVR5cGVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmF1ZGlv
Q2FwYWJpbGl0aWVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnZpZGVvQ2FwYWJpbGl0aWVzKSwK
KyAgICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAqcGVyc2lz
dGVudFN0YXRlLAorICAgICAgICAgICAgV1RGTW92ZSgqc2Vzc2lvblR5cGVzKSwKKyAgICAgICAg
fX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxp
dHkuaAppbmRleCA5MDFiNTRmZjA1MDhlZGE5YmJiODhjNWMxZGI4NjUzOGRjZTE0MjgyLi5mODRh
MGQxMmFiNGNkNTIwZTNmMGUwNGQ2NGViZWZjNjMxNjI1ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxp
dHkuaApAQCAtMzksNiArMzksMzkgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAg
U3RyaW5nIGNvbnRlbnRUeXBlOwogICAgIFN0cmluZyByb2J1c3RuZXNzOwogICAgIE9wdGlvbmFs
PENETUVuY3J5cHRpb25TY2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBlbmNvZGVyIDw8IGNvbnRlbnRUeXBlOworICAgICAgICBlbmNvZGVyIDw8
IHJvYnVzdG5lc3M7CisgICAgICAgIGVuY29kZXIgPDwgZW5jcnlwdGlvblNjaGVtZTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RN
TWVkaWFDYXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAg
IE9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVu
dFR5cGU7CisgICAgICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcm9idXN0bmVzczsKKyAgICAg
ICAgZGVjb2RlciA+PiByb2J1c3RuZXNzOworICAgICAgICBpZiAoIXJvYnVzdG5lc3MpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFs
PENETUVuY3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBkZWNvZGVy
ID4+IGVuY3J5cHRpb25TY2hlbWU7CisgICAgICAgIGlmICghZW5jcnlwdGlvblNjaGVtZSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAg
ICAgICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCisgICAgICAgICAgICBXVEZNb3ZlKCpyb2J1
c3RuZXNzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmVuY3J5cHRpb25TY2hlbWUpLAorICAgICAg
ICB9fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaApp
bmRleCBlNWY3OTZhOWUwZTA3NTFhYTAyNzgyYjliNjY2Y2EyMzFlZjdlNjA5Li45NWJmMjhjMmFh
OTRhM2RhNTA0NWI1ZWMwMGYzNThjZDI2ZDk1Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKQEAgLTMwLDkg
KzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETU1lc3Nh
Z2VUeXBlIHsKK2VudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBMaWNl
bnNlUmVxdWVzdCwKICAgICBMaWNlbnNlUmVuZXdhbCwKICAgICBMaWNlbnNlUmVsZWFzZSwKQEAg
LTQxLDQgKzQzLDE4IEBAIGVudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgewogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsCisgICAgICAgIFdlYkNv
cmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6Q0RN
TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdl
VHlwZTo6TGljZW5zZVJlbGVhc2UsCisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpJ
bmRpdmlkdWFsaXphdGlvblJlcXVlc3QKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCAyNWY3ODE2YTJmZTFkYTZmOTBjMmZlZjc3
NzU1MTQwNmFhMGY0YTAzLi43NDlmY2RmMmZjMzdhNWU5ZmU2MjVkNTNhM2UwMTFjNzFjNGFlZDMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCkBAIC00MSwxMSArNDEsMTEgQEAgY2xhc3MgQ0RNUHJpdmF0ZSB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlw
ZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVz
c2VzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBDRE1SZXF1aXJl
bWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQu
aAppbmRleCA2OWFjMTJkMzE2YmY2NjU3YmIwYTI0ZGFmN2FlNGZhMGZkNGYxYzk4Li41YjBiNzc4
MGQyN2RmZWIxOTNkY2U2ZWNkYTcxNzg1MjhmN2NkNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50LmgKQEAgLTMw
LDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETVJl
cXVpcmVtZW50IHsKK2VudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90IHsKICAgICBS
ZXF1aXJlZCwKICAgICBPcHRpb25hbCwKICAgICBOb3RBbGxvd2VkCkBAIC00MCw0ICs0MiwxNyBA
QCBlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpDRE1SZXF1aXJlbWVudD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAg
ICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50LAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJl
bWVudDo6UmVxdWlyZWQsCisgICAgICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpPcHRpb25h
bCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQKKyAgICA+Owor
fTsKKworfQorCiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25z
LmgKaW5kZXggYzUyZTI4MmExMmU5MWE0ODgxMGJkMThiODdlYjZhZDYzOGYyMTBhOC4uOWNhMmFj
NTllOGIxMzU0NjNhNTJkYjQ1ZTgwNzMxZjUwYzY5NGYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgKQEAg
LTM2LDYgKzM2LDM5IEBAIHN0cnVjdCBDRE1SZXN0cmljdGlvbnMgewogICAgIGJvb2wgZGlzdGlu
Y3RpdmVJZGVudGlmaWVyRGVuaWVkIHsgZmFsc2UgfTsKICAgICBib29sIHBlcnNpc3RlbnRTdGF0
ZURlbmllZCB7IGZhbHNlIH07CiAgICAgSGFzaFNldDxDRE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRI
YXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDRE1TZXNzaW9u
VHlwZT4+IGRlbmllZFNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAg
IGVuY29kZXIgPDwgZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkOworICAgICAgICBlbmNvZGVy
IDw8IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsKKyAgICAgICAgZW5jb2RlciA8PCBkZW5pZWRTZXNz
aW9uVHlwZXM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3Rh
dGljIE9wdGlvbmFsPENETVJlc3RyaWN0aW9ucz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisg
ICAgeworICAgICAgICBPcHRpb25hbDxib29sPiBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQ7
CisgICAgICAgIGRlY29kZXIgPj4gZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkOworICAgICAg
ICBpZiAoIWRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVudFN0YXRlRGVu
aWVkOworICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsKKyAgICAgICAg
aWYgKCFwZXJzaXN0ZW50U3RhdGVEZW5pZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIE9wdGlvbmFsPEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUsIFdURjo6SW50
SGFzaDxDRE1TZXNzaW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lv
blR5cGU+Pj4gZGVuaWVkU2Vzc2lvblR5cGVzOworICAgICAgICBkZWNvZGVyID4+IGRlbmllZFNl
c3Npb25UeXBlczsKKyAgICAgICAgaWYgKCFkZW5pZWRTZXNzaW9uVHlwZXMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAg
KmRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCwKKyAgICAgICAgICAgICpwZXJzaXN0ZW50U3Rh
dGVEZW5pZWQsCisgICAgICAgICAgICBXVEZNb3ZlKCpkZW5pZWRTZXNzaW9uVHlwZXMpLAorICAg
ICAgICB9fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUu
aAppbmRleCA2MDU3NGE1YTY5M2E5NmM0OWY0OWZiNzM0OTZlZDc1YjdlMWU2ZmJiLi5lMDdjMzAw
Mjc5MzA1Zjc3NDNmMjJmY2Y1NDA2ZjJjZmE2ODFkZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKQEAgLTMw
LDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETVNl
c3Npb25UeXBlIHsKK2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90IHsKICAgICBU
ZW1wb3JhcnksCiAgICAgUGVyc2lzdGVudFVzYWdlUmVjb3JkLAogICAgIFBlcnNpc3RlbnRMaWNl
bnNlCkBAIC00MCw0ICs0MiwxNyBAQCBlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIHsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZT4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlLAorICAgICAg
ICBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5LAorICAgICAgICBXZWJDb3JlOjpD
RE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVjb3JkLAorICAgICAgICBXZWJDb3JlOjpD
RE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2UKKyAgICA+OworfTsKKworfQorCiAjZW5k
aWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAppbmRleCA0NTExMWRjNzViNTUwODBjZWY0ZTVmYjM4YWUyNjMzYjM5ZWE3MjMzLi44NjRkNmUz
ZGU4M2IwMmMzYjFjMGQzYWRiNTY1N2IzY2U3YjYxOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbi5oIgogI2luY2x1ZGUgIkNETVJlc3RyaWN0aW9ucy5oIgogI2luY2x1ZGUgIkNETVNl
c3Npb25UeXBlLmgiCisjaW5jbHVkZSAiSW5pdERhdGFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+
CkBAIC0yOTAsMTAgKzI5MSwxMyBAQCBib29sIENETUZhY3RvcnlDbGVhcktleTo6c3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiBDRE1Qcml2YXRlQ2xlYXJLZXk6OkNE
TVByaXZhdGVDbGVhcktleSgpID0gZGVmYXVsdDsKIENETVByaXZhdGVDbGVhcktleTo6fkNETVBy
aXZhdGVDbGVhcktleSgpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1
cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QK
K1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZEluaXREYXRh
VHlwZXMoKSBjb25zdAogewotICAgIC8vIGBrZXlpZHNgIGFuZCAnY2VuYycgYXJlIHRoZSBvbmx5
IHN1cHBvcnRlZCBpbml0IGRhdGEgdHlwZS4KLSAgICByZXR1cm4gKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpIHx8IGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImNlbmMiKSB8fCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJ3ZWJtIikpOworICAgIHJldHVybiB7CisgICAgICAg
IEluaXREYXRhUmVnaXN0cnk6OmtleWlkc05hbWUoKSwKKyAgICAgICAgSW5pdERhdGFSZWdpc3Ry
eTo6Y2VuY05hbWUoKSwKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6d2VibU5hbWUoKSwKKyAg
ICB9OwogfQogCiBzdGF0aWMgYm9vbCBjb250YWluc1BlcnNpc3RlbnRMaWNlbnNlVHlwZShjb25z
dCBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+JiB0eXBlcykKQEAgLTMzNyw3ICszNDEsNyBAQCBib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9u
cyhjb25zdCBDRE1LZXlTeXN0ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZh
dGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Np
b25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBl
LCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAog
ewogICAgIC8vIE9ubHkgc3VwcG9ydCB0aGUgJ3RlbXBvcmFyeScgYW5kICdwZXJzaXN0ZW50LWxp
Y2Vuc2UnIHNlc3Npb24gdHlwZXMuCiAgICAgaWYgKHNlc3Npb25UeXBlICE9IENETVNlc3Npb25U
eXBlOjpUZW1wb3JhcnkgJiYgc2Vzc2lvblR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3Rl
bnRMaWNlbnNlKQpAQCAtMzQ1LDEwICszNDksMTAgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYgc2UK
ICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1i
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYg
cm9idXN0bmVzcykgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0CiB7CiAgICAgLy8gT25seSBlbXB0eSBgcm9i
dXN0bmVzc2Agc3RyaW5nIGlzIHN1cHBvcnRlZC4KLSAgICByZXR1cm4gcm9idXN0bmVzcy5pc0Vt
cHR5KCk7CisgICAgcmV0dXJuIHsgZW1wdHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQg
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVz
dHJpY3Rpb25zKSBjb25zdApAQCAtNDk4LDcgKzUwMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpCiAgICAgICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVE
CiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhl
IHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmgKaW5kZXggNjcwNGFlN2E5NTdmMzJmZTFmODQ5ODNlZDNiM2Y2NTAyYTUzMTVhMi4u
NGFiOWRlMGYwMmNlZWJiMjBhOTNjZGY2MWUzYjc3MGY1ZmRlODIzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oCkBAIC03NCwxMSArNzQsMTEgQEAgcHVibGljOgogICAgIENETVByaXZhdGVD
bGVhcktleSgpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVDbGVhcktleSgpOwogCi0gICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7Cisg
ICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5h
bDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0
aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1JvYnVzdG5l
c3MoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlz
dGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBDRE1SZXF1
aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoQ0RNSW5zdGFu
Y2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6IG1fcGFyZW50SW5zdGFuY2UocGFyZW50KSB7
IH0KICAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Np
b25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNTdkZmNiZjRiYzdjNDg4NDRkMzgxY2IzNWVj
YzY0M2MxYWFiNGI5Mi4uZGIwYjJmOGE3ZTBmMjY5NmExZDhkYjZmNGQ0ZjQ3YWFlYzhlYmQ0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cApAQCAtNjU3LDYgKzY1NywxNCBAQCB2b2lkIE1lZGlhUGxheWVyOjphdHRlbXB0VG9EZWNyeXB0
V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIAogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3Zv
aWQgTWVkaWFQbGF5ZXI6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91
bGQpCit7CisgICAgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkID0gc2hvdWxkOworICAg
IG1fcHJpdmF0ZS0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGQpOworfQor
I2VuZGlmCisKIE1lZGlhVGltZSBNZWRpYVBsYXllcjo6ZHVyYXRpb24oKSBjb25zdAogewogICAg
IHJldHVybiBtX3ByaXZhdGUtPmR1cmF0aW9uTWVkaWFUaW1lKCk7CkBAIC0xMzEyLDkgKzEzMjAs
OSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IE1lZGlhUGxheWVyOjpjYWNoZWRLZXlGb3JLZXlJZChj
b25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXll
ckNhY2hlZEtleUZvcktleUlkKGtleUlkKTsKIH0KIAotYm9vbCBNZWRpYVBsYXllcjo6a2V5TmVl
ZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKFVp
bnQ4QXJyYXkqIGluaXREYXRhKQogewotICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllcktl
eU5lZWRlZChpbml0RGF0YSk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5p
dERhdGEpOwogfQogCiBTdHJpbmcgTWVkaWFQbGF5ZXI6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKaW5kZXggN2U2Y2I4YTM5MGRmN2ZlMWE3YWFlMDE3MzlkYzk0OGY3NzY2MjFlZS4uYWVm
M2NlZTRhYWI5ZWEyMGM1NjllNjdhNDFlMTIwYjc2NDBlZmE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0yMDAsNyArMjAwLDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVh
bCBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3Qg
U3RyaW5nJikgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgYm9vbCBtZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIHsgfQogICAgIHZpcnR1
YWwgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICNlbmRpZgogCkBAIC0zNjYsNiArMzY2LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2Um
KTsKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKGJvb2wpOworICAgIGJvb2wgc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZDsgfQorI2VuZGlmCisKICAg
ICBib29sIHBhdXNlZCgpIGNvbnN0OwogICAgIGJvb2wgc2Vla2luZygpIGNvbnN0OwogCkBAIC01
MTksNyArNTI0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJp
bmcmIGtleUlkKSBjb25zdDsKLSAgICBib29sIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0
YSk7CisgICAgdm9pZCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOwogICAgIFN0cmlu
ZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAjZW5kaWYKIApAQCAtNjY1LDYg
KzY3MCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8
TWVkaWFTdHJlYW1Qcml2YXRlPiBtX21lZGlhU3RyZWFtOwogI2VuZGlmCisjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgYm9v
bCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxzZSB9OworI2VuZGlmCiB9Owog
CiBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCA5ZjdmNmU2YjAyZDNi
ZWJlMDkwZWJjYzMyYTRiMGRjYTFjYzE3NWE4Li43YTgyMDQ3MGY5OTlhYzk5YTZhOTlkOGYzNDI3
NmM5ZjQ1NTkwYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjQzLDYgKzI0MywxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktl
eU5lZWRlZChib29sKSB7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDRmYzY3ODdkZDhkOTA3Y2FkNmEyNzdmMzliMWVkMzJl
ZDY3OWE2ZDguLmI2YmFiZmNkZTVhMGQ0YjgxMThkMDNjYzkyZjFkNjE5ZDYxZDc3ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMjQ3LDkgKzI0Nyw5
IEBAIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3RlbShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCkgPSBkZWZhdWx0OwogQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjp+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCkgPSBkZWZhdWx0OwogCi1i
b29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHZhbGlkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlw
ZSk7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcih2YWxpZEluaXREYXRhVHlwZXMoKSk7CiB9CiAK
IGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKQEAg
LTMwNSw3ICszMDUsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9y
dHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRAogICAgIHJldHVybiBzdXBw
b3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RN
U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlw
ZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3Vy
YXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKHNlc3Npb25UeXBlID09IENETVNlc3Npb25UeXBlOjpU
ZW1wb3JhcnkpIHsKICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09
IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKQEAgLTMxNiwxMyArMzE2LDEwIEBAIGJvb2wgQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24oQ0RNU2Vzc2lvCiAgICAgcmV0dXJuIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25maWd1
cmF0aW9uKTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
Um9idXN0bmVzcyhjb25zdCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0CitWZWN0b3I8QXRvbVN0
cmluZz4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMo
KSBjb25zdAogewotICAgIGlmIChyb2J1c3RuZXNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KICAgICAvLyBGSVhNRTogRGV0ZXJtaW5lIGFuIGVudW1lcmF0ZWQgbGlzdCBvZiBy
b2J1c3RuZXNzIHZhbHVlcyBzdXBwb3J0ZWQgYnkgRlBTLgotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4geyBlbXB0eUF0b20oKSB9OwogfQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29u
c3QKQEAgLTM2Niw3ICszNjMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIXN1cHBvcnRzSW5p
dERhdGFUeXBlKGluaXREYXRhVHlwZSkpCisgICAgaWYgKCF2YWxpZEluaXREYXRhVHlwZXMoKS5j
b250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
aW5pdERhdGFUeXBlID09IHNpbmZOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmgKaW5kZXggNTM4Njk2OWY5NDk3NmYzODM2ODAxODc0MWJhZmQxMjU1MWUyOGI4
NS4uMzg3YjlmOTI1YWQ3YWZiYWUyZDJjNTYxMmY4NGI0MzRjMGYxMGY0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6
CiAgICAgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAgICAgdmlydHVhbCB+Q0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBl
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3Vw
cG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlv
bnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9u
cyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25m
aWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0
cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBw
b3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IG92ZXJyaWRlOwogICAgIENE
TVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVh
cmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAKaW5kZXggNzBlYWMzNmE0Nzk3ODE1YTFhZjI0ZTJkNTdiMDIyNmZiNDk3
OWM0Ni4uOGE0ZTE0ODA2OTFlMWQ4YjZmZTgxMjY0YjkzOGI5ZmVkZTMxYzIxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwCkBAIC0xOTMxLDcgKzE5MzEsOSBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdh
aXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Ugog
CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpOwogICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUo
aW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgaWYgKCFtX293bmVyLT5w
bGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKKyAgICAgICAgbV9vd25lci0+cGxh
eWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisKKyAgICAgICAgaWYgKCFtX293bmVy
LT5wbGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJLCBhdlJlcXVl
c3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggYjExZjcxYTliNWUzOGJmNjk4YjEzOTQ5
ZGRkZTg2ZjNkZDk5NGNjMS4uN2YwZTJkNWFjMDBlNjA2MmQzNWJhYzQ1ZDZlMWU3MWQ0NDAzZTgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgog
CiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3MzI2Nzc1ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0NjQ3
Y2I4ZDMxLi5mMDliMjg5YTMzZTdlYzA0MGYwNGQxZjZmOTlhZjhlZjkwZDk3NzA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtNTgwLDcgKzU4MCw3IEBAIHN0YXRpYyBib29sIGlzRXF1
YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJl
dHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25z
ZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Np
b25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykp
IHsKICAgICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdKTsKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIFttX2N1
cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJl
c3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVz
cG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCku
cmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29u
dGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJl
YW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1d
OwogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2Fs
bGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1
Y2Nlc3MgY2FsbGJhY2suCiAgICAgc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uIG1ldGhv
ZCA9IHByb3RvY29sX2dldE1ldGhvZERlc2NyaXB0aW9uKEBwcm90b2NvbChBVkNvbnRlbnRLZXlT
ZXNzaW9uRGVsZWdhdGUpLCBAc2VsZWN0b3IoY29udGVudEtleVNlc3Npb246Y29udGVudEtleVJl
cXVlc3REaWRTdWNjZWVkOiksIE5PLCBZRVMpOwpAQCAtMTE0MCw3ICsxMTQwLDggQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlm
aWVyQ2hhbmdlZChOU0RhdGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zZXNzaW9uSWQgPSBz
ZXNzaW9uSWQ7Ci0gICAgbV9jbGllbnQtPnNlc3Npb25JZENoYW5nZWQobV9zZXNzaW9uSWQpOwor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNlc3Npb25JZENoYW5nZWQobV9z
ZXNzaW9uSWQpOwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6Z3JvdXBTZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoQVZDb250ZW50S2V5UmVwb3J0
R3JvdXAqIGdyb3VwLCBOU0RhdGEgKnNlc3Npb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggYjM3YzQ0MTEzMTQ5ODg3OTU0NmVjOGE1N2EwZGQ4ZTExZjc4NDY5Ny4uZDc4
YzdjYWE2MDIwODNmYTNiODNiMzNjNzYwZGQ0ZjQxMTJkNjNiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0xNjc4LDkgKzE2NzgsMTIgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAg
ICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKFN0cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAw
KTsKIAogICAgICAgICBhdXRvIGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUo
aW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgaWYgKCFwbGF5ZXIoKS0+
a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKKyAgICAgICAgcGxheWVyKCktPmtleU5lZWRlZChp
bml0RGF0YS5wdHIoKSk7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICAgICAgaWYg
KCFwbGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCisjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICAgICAgaWYgKG1fY2RtSW5zdGFu
Y2UpIHsKQEAgLTE3MTMsNyArMTcxNiw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigp
LT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVk
KGluaXREYXRhLnB0cigpKTsKKworICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51
ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
bV9rZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleUlELCBhdlJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCBjZTVkOGY3ZDZiZGYzOGI1OTIyMDkz
MDJhNmU2ZDcxYjM2OTY2MzJkLi4wYTRkNjU3NTBhMTU0YzVlNWVlMTliNTgzMGM5ZmJhZTAwMDFl
M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtOTgs
NiArOTgsMTEgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiYgdHlwZXMpCiAgICAgICAgIG1fc3VwcG9ydGVkRGF0YVR5cGVzLmFwcGVu
ZCh0eXBlKTsKIH0KIAordm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkUm9idXN0bmVz
cyhWZWN0b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3NlcykKK3sKKyAgICBtX3N1cHBvcnRlZFJvYnVz
dG5lc3MgPSByb2J1c3RuZXNzZXMubWFwKFtdIChhdXRvJiByb2J1c3RuZXNzKSAtPiBBdG9tU3Ry
aW5nIHsgcmV0dXJuIHJvYnVzdG5lc3M7IH0pOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJp
dmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewogICAgIHJl
dHVybiBtYWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CkBAIC0xMDgsMTEg
KzExMywxOCBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3Rv
cnkpCiB7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06
OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCi0g
ICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGlu
aXREYXRhVHlwZSk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9mYWN0b3J5
LT5zdXBwb3J0ZWREYXRhVHlwZXMoKTsKKyAgICByZXR1cm4geyB9OworfQorCitWZWN0b3I8QXRv
bVN0cmluZz4gTW9ja0NETTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3Ru
ZXNzKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZp
Z3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KSBjb25zdApAQCAtMTM5LDcgKzE1MSw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNDb25maWd1
cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhD
b25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nl
c3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vz
c2lvblR5cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCku
Y29udGFpbnMoc2Vzc2lvblR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDgsMTMg
KzE2MCw2IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgTW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVz
cykgY29uc3QKLXsKLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5
LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0bmVzcyk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCiBNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwg
Y29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QKIHsKICAgICBpZiAobV9mYWN0b3J5
KQpAQCAtMTk5LDcgKzIwNCw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNv
bnN0CiAKIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAg
aWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghc3VwcG9y
dGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YSk7CkBAIC0zMjUsNyArMzMwLDcg
QEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2Us
IFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNz
aW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFj
dG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxs
cHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzMzLDcgKzMzOCw3IEBAIHZvaWQgTW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5n
PiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmlu
ZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAg
aWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkg
ewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oCmluZGV4IDM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1
MDU5ZjEuLjZjYjkxNWM4NTAxNTU4ZjEwYmI4ZmM1YjJkYTUyODM1MDQwZjBlYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGlj
OgogICAgIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lv
blR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7IH0KICAgICB2
b2lkIHNldFN1cHBvcnRlZFNlc3Npb25UeXBlcyhWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4m
JiB0eXBlcykgeyBtX3N1cHBvcnRlZFNlc3Npb25UeXBlcyA9IFdURk1vdmUodHlwZXMpOyB9CiAK
LSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsg
cmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsgfQotICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9i
dXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3MpIHsgbV9zdXBwb3J0ZWRSb2J1c3Ru
ZXNzID0gV1RGTW92ZShyb2J1c3RuZXNzKTsgfQorICAgIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5n
PiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0
bmVzczsgfQorICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYm
KTsKIAogICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVt
ZW50OyB9CiAgICAgdm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoTWVk
aWFLZXlzUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpIHsgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJz
UmVxdWlyZW1lbnQgPSByZXF1aXJlbWVudDsgfQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgog
ICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4g
bV9zdXBwb3J0ZWREYXRhVHlwZXM7CiAgICAgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+IG1f
c3VwcG9ydGVkU2Vzc2lvblR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkUm9i
dXN0bmVzczsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwog
ICAgIFZlY3RvcjxNZWRpYUtleUVuY3J5cHRpb25TY2hlbWU+IG1fc3VwcG9ydGVkRW5jcnlwdGlv
blNjaGVtZXM7CiAgICAgYm9vbCBtX3JlZ2lzdGVyZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2Nh
bkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKQEAgLTEwOSwxMSArMTA5LDExIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1vY2tDRE1JbnN0YW5jZTsKIAotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOworICAg
IFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7
CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0
aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiwgY29u
c3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBz
dXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9u
VHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwog
ICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0
cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBwZXJzaXN0
ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgTWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CkBAIC0xNTcsNyArMTU3LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBlNjg2YzYzYzE4ZjM1
ODZmZmNhNzRlMTczMWMwZmYyNzc0MWIwZDNiLi5jNWFmM2I1ZmJlMGNhYmI4YjJkZTMwZDA4NmQz
M2E0Zjc5NDc5MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CkBAIC0xNiw2ICsxNiwxMCBAQCAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVBy
b2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBs
ZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNz
YWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBA
IC0xMDgsNiArMTEyLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDFmY2Y3ZTQxMTA3ZmIzZjdiZTJiYzY5OTkzNjZhMDVm
OGU2NTA4MjguLmM3M2UyODczZDliZmNhNzE0NjZjOTQ3MzExM2I5MDAyNjBiNTE3NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTI5
LDYgKzEyOSwyMSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMGQxNzI1NTg3NWExNmVjNmQzZTZhZmQyNTA2YjUx
NTU3NjM1NDA0Li4yZDAwNzU4N2E0NTg2MTMwNmY0MmRjYzM1MDhkNjVjZmNiZTYyZWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDYsNiArMTQ2LDExIEBAIE1FU1NBR0VfUkVD
RUlWRVJTID0gXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
ciBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgXAogICAgIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAorICAgIFJlbW90ZUNETVByb3h5IFwKKyAgICBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkgXAorICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkgXAorICAg
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCiAgICAgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGEzOTRlMDk0MzFlMDI3NjhmYTEwNzQ3Y2VjZjJiOTNlOWRmOTE2MjUuLjM5MDli
Yzg2OTU3ZTYwYjQyYjIzNGY5ZTMzZmEwM2ZiYmMxNGQ5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTU4
LDEwICs1OCwxOCBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotCiAjaW5j
bHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIK
KyNlbmRpZgorCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTE4OSw2ICsxOTcsMTcgQEAgTGliV2ViUlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmxpYldlYlJUQ0NvZGVjc1Byb3h5KCkKIH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUNETUZhY3RvcnlQcm94eSYgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y2RtRmFjdG9yeVByb3h5KCkKK3sKKyAgICBpZiAoIW1fY2RtRmFj
dG9yeVByb3h5KQorICAgICAgICBtX2NkbUZhY3RvcnlQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PigqdGhpcyk7CisKKyAgICByZXR1cm4gKm1fY2RtRmFjdG9yeVByb3h5
OworfQorI2VuZGlmCisKKwogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKQEAgLTIzOSw2ICsyNTgsMjcgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIEkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5
UHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1NZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVBy
b3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZl
Q0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2RlcikKQEAgLTI1OSw2ICsyOTksMjcgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNz
KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFj
dG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5k
aWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgp
LmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI2OSw3ICszMzAsNyBAQCBjb25zdCBTdHJpbmcm
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAog
ICAgIHJldHVybiBtX2dwdVByb2Nlc3MtPm1lZGlhQ2FjaGVEaXJlY3RvcnkobV9zZXNzaW9uSUQp
OwogfQogCi0jaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiBjb25zdCBT
dHJpbmcmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdAogewogICAgIHJldHVybiBtX2dwdVByb2Nlc3MtPm1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkobV9zZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMGVjMjM4Y2QwNjI1MzgzNDc1OWJm
ZTk2YmJhZTBhZGViYjM1MWE3ZS4uZjAwMDFjZTQ4YWQwZTljMGY2ZjBmY2JlMGZmM2NmODVhMTc0
MTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgR1BVUHJvY2VzczsKIGNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5OwogY2xhc3MgUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOworY2xhc3MgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiBjbGFzcyBS
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyOwpAQCAtNzYsNiArNzcsMTAgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyJiBzZXNzaW9uTWFuYWdlcigpOwogCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkmIGNkbUZhY3RvcnlQcm94eSgp
OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQ
cm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwogCkBAIC0xMTgsNiArMTIzLDEwIEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0Nv
ZGVjc1Byb3h5OwogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcj4gbV9zZXNzaW9uTWFuYWdlcjsKKworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4g
bV9jZG1GYWN0b3J5UHJveHk7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3Rv
cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWI0YWZkNGI0MzY3NzdkMWM0ZDEzZjg3MGI0NGRk
MmIzNjk4MTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKKyNpbmNsdWRlICJSZW1vdGVDRE1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NE
TUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUNETUZhY3RvcnlQcm94
eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbikKK3sK
K30KKworUmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojp+UmVtb3RlQ0RNRmFjdG9yeVByb3h5KCkgPSBk
ZWZhdWx0OworCitzdGF0aWMgQ0RNRmFjdG9yeSogZmFjdG9yeUZvcktleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBhdXRvJiBmYWN0b3JpZXMgPSBDRE1GYWN0b3J5Ojpy
ZWdpc3RlcmVkRmFjdG9yaWVzKCk7CisgICAgYXV0byBmb3VuZEluZGV4ID0gZmFjdG9yaWVzLmZp
bmRNYXRjaGluZyhbJl0gKGF1dG8mIGZhY3RvcnkpIHsgcmV0dXJuIGZhY3RvcnktPnN1cHBvcnRz
S2V5U3lzdGVtKGtleVN5c3RlbSk7IH0pOworICAgIGlmIChmb3VuZEluZGV4ID09IG5vdEZvdW5k
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZmFjdG9yaWVzW2ZvdW5kSW5k
ZXhdOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZp
ZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGF1
dG8gZmFjdG9yeSA9IGZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVtKTsKKyAgICBpZiAoIWZh
Y3RvcnkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIHByaXZhdGVDRE0gPSBmYWN0b3J5LT5jcmVhdGVDRE0oa2V5U3lz
dGVtKTsKKyAgICBpZiAoIXByaXZhdGVDRE0pIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHByb3h5ID0gUmVtb3RlQ0RN
UHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92ZShwcml2YXRlQ0RNKSk7Cisg
ICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlQ0RNSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAg
ICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBwcm94eS0+Y29uZmlndXJh
dGlvbigpOworICAgIGFkZFByb3h5KGlkZW50aWZpZXIsIFdURk1vdmUocHJveHkpKTsKKyAgICBj
b21wbGV0aW9uKFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwor
fQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbikKK3sKKyAgICBjb21wbGV0aW9uKGZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJl
bW90ZUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAg
ICBwcm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IGlmIChhdXRvKiBpbnN0YW5jZSA9IG1faW5zdGFuY2VzLmdldChtYWtlT2JqZWN0SWRlbnRpZmll
cjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSkpKQorICAgICAgICBpbnN0YW5jZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0
KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJU
eXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChtYWtl
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6
OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBtX2luc3RhbmNlcy5nZXQo
bWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZT4oZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgaW5zdGFuY2UtPmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAg
ICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVu
Y29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkUHJveHkoUmVtb3Rl
Q0RNSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiYmIHByb3h5
KQoreworICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVz
LnNldChpZCwgV1RGTW92ZShwcm94eSkpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94
eTo6cmVtb3ZlUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9w
cm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmIGlu
c3RhbmNlKQoreworICAgIEFTU0VSVCghbV9pbnN0YW5jZXMuY29udGFpbnMoaWQpKTsKKyAgICBt
X2luc3RhbmNlcy5zZXQoaWQsIFdURk1vdmUoaW5zdGFuY2UpKTsKK30KKwordm9pZCBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciBpZCkKK3sKKyAgICBBU1NFUlQobV9pbnN0YW5jZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX2lu
c3RhbmNlcy5yZW1vdmUoaWQpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
ZmllciYgaWQpCit7CisgICAgcmV0dXJuIG1faW5zdGFuY2VzLmdldChpZCk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhpZCkp
OworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNlc3Npb24pKTsKK30KKwordm9pZCBS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhpZCkp
OworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOWIxY2NjOTViYmQzZmUzYjlmMzM1MmQ4NTAwMjc3YTRiZmQzOTMzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUZhY3RvcnlQcm94eS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlUHJveHk7CitjbGFzcyBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTsKK2NsYXNzIFJlbW90ZUNETVByb3h5Oworc3RydWN0IFJlbW90
ZUNETUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eSBmaW5hbCA6
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1v
dGVDRE1GYWN0b3J5UHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYp
OworICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnlQcm94eSgpOworCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RN
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpOworCisgICAgdm9pZCBhZGRQcm94eShSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlUHJveHkoUmVtb3Rl
Q0RNSWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+JiYpOwor
ICAgIHZvaWQgcmVtb3ZlSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKKyAg
ICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBnZXRJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyKTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb247CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsIHsgfQorICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdl
cworICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biYmKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKyAgICBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgSGFzaE1h
cDxSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+PiBt
X3Byb3hpZXM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5Pj4gbV9pbnN0YW5jZXM7CisgICAgSGFz
aE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0N2M1ZTZl
NjFjNDIwNzgzMWRhMGJkMTE4YTZhYWViNDBkMzMxMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1GYWN0
b3J5UHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlQ0RNKFN0cmluZyBrZXlTeXN0ZW0p
IC0+IChXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlJlbW90
ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0
c0tleVN5c3RlbShTdHJpbmcga2V5U3lzdGVtKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3Vz
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlZDkyNTQ1YjdmZDBk
NGQzMmY1MTI0MjUxZjhiMDAxNWNjYTk1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTAsMCAr
MSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
RE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYg
ZmFjdG9yeSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYpCit7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJj4oeworICAg
ICAgICBwcml2LT5rZXlTeXN0ZW0oKSwKKyAgICB9KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+KG5ldyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdU
Rk1vdmUoZmFjdG9yeSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsK
K30KKworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFr
UHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBSZWY8Q0RNSW5zdGFuY2U+JiYg
cHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1
cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2luc3Rh
bmNlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1
cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3Rh
bmNlUHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSA9PSBDRE1JbnN0YW5jZTo6U3VjY2VlZGVkKTsK
K30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXREaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzQWxsb3dlZChib29sIGFsbG93ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1faW5zdGFuY2UtPnNldERpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkKGFsbG93ZWQpID09IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOwor
fQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQoYm9vbCBhbGxvd2VkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b24pCit7CisgICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5zZXRQZXJzaXN0ZW50U3RhdGVBbGxv
d2VkKGFsbG93ZWQpID09IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYmIGNlcnRpZmljYXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFjZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAg
ICAgICBjb21wbGV0aW9uKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNv
bXBsZXRpb24obV9pbnN0YW5jZS0+c2V0U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVm
ZmVyKCkucmVsZWFzZU5vbk51bGwoKSkgPT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uKQoreworICAgIGNvbXBsZXRpb24obV9pbnN0YW5jZS0+c2V0U3RvcmFnZURpcmVjdG9yeShk
aXJlY3RvcnkpID09IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYgY29tcGxldGlvbikKK3sK
KyAgICBhdXRvIHByaXZTZXNzaW9uID0gbV9pbnN0YW5jZS0+Y3JlYXRlU2Vzc2lvbigpOworICAg
IGlmICghcHJpdlNlc3Npb24gfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlc3Np
b24gPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1f
ZmFjdG9yeS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVhc2VOb25OdWxsKCksIGlkZW50aWZpZXIp
OworICAgIG1fZmFjdG9yeS0+YWRkU2Vzc2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24p
KTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OnNldEhEQ1BTdGF0dXMoV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXMg
c3RhdHVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgY29tcGxldGlvbihtX2luc3RhbmNlLT5zZXRIRENQU3RhdHVzKHN0YXR1cykgPT0gQ0RNSW5z
dGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdkZjZmMTExMWY3MTIwNzQ2N2NmM2NiYjc4MDdlZWQ4OTFkNGFlYTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIENETUluc3RhbmNlOworc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247Cit9
CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3Vy
YXRpb247CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTsKKworY2xhc3MgUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+
IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNE
TUluc3RhbmNlPiYmKTsKKyAgICB+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpOworCisgICAgY29u
c3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOyB9CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2UmIGluc3RhbmNlKCkgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQorCitwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUlu
c3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiYmKTsK
KworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAg
ICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZv
aWQgY3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJik7CisgICAgdm9pZCBzZXRIRENQU3RhdHVzKFdl
YkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7
CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNlOworICAgIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKKyAgICBI
YXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lvbnM7Cit9OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDIx
OTc0NjdkMDk2NTNmNDBkMDdmZTc5NWMwNmY5ZDA1NDc2NzA4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNE
TUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlU2Vzc2lvbigpIC0+IChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpIFN5bmNocm9ub3Vz
CisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNo
cm9ub3VzCisgICAgU2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCBhbGxvd2Vk
KSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworICAgIFNldFBlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQoYm9vbCBhbGxvd2VkKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworICAgIFNl
dFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0aWZp
Y2F0ZSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKKyAgICBTZXRTdG9yYWdlRGlyZWN0
b3J5KFN0cmluZyBkaXJlY3RvcnkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAg
U2V0SERDUFN0YXR1cyhXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cyBzdGF0dXMpIC0+
IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg1MjFkNjg4ZTgwZTAxYWE4NDVkZDA5MGIyM2M4
OGUxMThjZjcyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTAsMCArMSwxMjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eT4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZShXZWFr
UHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBSZWY8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHNlc3Npb25Qcm94eSA9IHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4obmV3IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50aWZpZXIp
KTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHktPm1fc2Vz
c2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Npb25Qcm94
eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUo
ZmFjdG9yeSkpCisgICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6flJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KCkKK3sKK30KKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwg
QXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIGlmICghaW5p
dERhdGEuYnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCks
IGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24t
PnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVs
ZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNj
ZWVkZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNl
c3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZl
cigpKSB7CisgICAgICAgIGNvbXBsZXRpb24odHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9u
LT51cGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwgKnJlc3BvbnNlLmJ1ZmZlcigpLCBbY29t
cGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChib29sIHNlc3Npb25DbG9zZWQsIE9wdGlv
bmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBP
cHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1
ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uKHNlc3Npb25DbG9zZWQs
IFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwgV1RGTW92ZSht
ZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAg
ICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Np
b24oTGljZW5zZVR5cGUgdHlwZSwgU3RyaW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbiwgTG9h
ZFNlc3Npb25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5sb2FkU2Vz
c2lvbih0eXBlLCBzZXNzaW9uSWQsIG9yaWdpbiwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBs
ZXRpb24pXSAoT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYg
a2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0aW9uYWw8
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9h
ZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShr
ZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
dWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQsIGZhaWx1cmUpOworICAg
IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Np
b24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxl
dGlvbikKK3sKKyAgICBtX3Nlc3Npb24tPmNsb3NlU2Vzc2lvbihzZXNzaW9uSWQsIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKCkgbXV0YWJsZSB7IGNvbXBsZXRpb24oKTsgfSk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNl
c3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRp
b24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywg
T3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
T3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBleHBpcmVkU2Vzc2lvbkRh
dGFSZWZlcmVuY2U7CisgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQorICAgICAgICAg
ICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlKFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsKKyAgICAgICAgY29tcGxldGlv
bihXVEZNb3ZlKGtleVN0YXR1c2VzKSwgV1RGTW92ZShleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVu
Y2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0p
OworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzdG9yZVJlY29yZE9m
S2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgbV9zZXNzaW9uLT5zdG9y
ZVJlY29yZE9mS2V5VXNhZ2Uoc2Vzc2lvbklkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3Rh
dHVzZXMpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykp
LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6U2VuZE1lc3NhZ2UodHlwZSwgV1RGTW92ZShtZXNzYWdlKSksIG1f
aWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNl
c3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKG1fZmFj
dG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lv
bklkQ2hhbmdlZChzZXNzaW9uSWQpLCBtX2lkZW50aWZpZXIpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTg0NjQwODNkY2FjM2Q3YWQ1
ZDU0YWViMWNmZDBjYjIzMGJkNTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKQEAgLTAsMCAr
MSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0
YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYsIFJlZjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIp
OworICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KCk7CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwg
UmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CisKKyAgICAvLyBUeXBlcworICAgIHVzaW5nIExpY2Vuc2VUeXBlID0gV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZTsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvcjsKKyAgICB1c2luZyBN
ZXNzYWdlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlOworICAgIHVzaW5n
IFNlc3Npb25Mb2FkRmFpbHVyZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lv
bkxvYWRGYWlsdXJlOworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBib29sLCBib29sKT47CisgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+
JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCk+OworICAg
IHVzaW5nIExvYWRTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgT3B0aW9uYWw8ZG91YmxlPiYmLCBPcHRpb25hbDxNZXNz
YWdlPiYmLCBib29sLCBTZXNzaW9uTG9hZEZhaWx1cmUpPjsKKyAgICB1c2luZyBDbG9zZVNlc3Np
b25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CisgICAgdXNpbmcgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVj
dG9yJiYsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mJiwgYm9vbCk+
OworICAgIHVzaW5nIFN0b3JlUmVjb3JkQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+OworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlJiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKTsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoU3RyaW5nIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBs
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgU3RyaW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbiwg
TG9hZFNlc3Npb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCByZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2smJik7CisgICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQpOworCisgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
CisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7Cisg
ICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlc3Npb25JZENoYW5n
ZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQ
cm94eT4gbV9mYWN0b3J5OworICAgIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IG1f
c2Vzc2lvbjsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIzM2VlOWMzMTVjZjI4OWYyN2ZhZjcxYTJjZGIz
YmQ0OWZiMTE2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkgTm90UmVmQ291bnRlZCB7CisKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNl
KFN0cmluZyBzZXNzaW9uSWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5
cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9v
bCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4
cGlyYXRpb24sIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4g
bWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBT
dHJpbmcgb3JpZ2luKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBp
cmF0aW9uLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1l
c3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VT
ZXNzaW9uKFN0cmluZyBzZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRh
dGEoU3RyaW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNl
VHlwZSB0eXBlKSAtPiAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3IgY2hhbmdlZEtleXMsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4g
bWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdl
KFN0cmluZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRkODBiYWEzMzcw
MGFiMTI5M2VmNjI3NmYwYjI2NDM3NTkwN2UxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETVByb3h5PiBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Q
cml2YXRlPiYmIHByaXYpCit7CisgICAgaWYgKCFwcml2KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24sIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24m
Jj4oeworICAgICAgICBwcml2LT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCksCisgICAgICAgIHBy
aXYtPnN1cHBvcnRlZFJvYnVzdG5lc3NlcygpLAorICAgICAgICBwcml2LT5zdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcygpLAorICAgICAgICBwcml2LT5zdXBwb3J0c1Nlc3Npb25zKCkKKyAgICB9
KTsKKyAgICAvLyBVc2UgbmV3KCkgdG8gYWNjZXNzIENETVByaXZhdGUncyBwcml2YXRlIGNvbnN0
cnVjdG9yLgorICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+KG5ldyBS
ZW1vdGVDRE1Qcm94eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eShXZWFr
UHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8Q0RN
UHJpdmF0ZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4mJiBjb25m
aWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3By
aXZhdGUoV1RGTW92ZShwcml2KSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pKQoreworfQorCitSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBk
ZWZhdWx0OworCit2b2lkIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2
YXRlLT5zdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJl
bW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IENETVJlc3Ry
aWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPnN1cHBvcnRzQ29uZmlndXJh
dGlvbldpdGhSZXN0cmljdGlvbnMoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSk7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBDRE1TZXNzaW9uVHlwZSYgdHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5zdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24odHlwZSwgY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90
ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxl
dGlvbihtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEodHlwZSwgKmRhdGEuYnVmZmVyKCkpKTsK
K30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVt
ZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0
IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENE
TVJlcXVpcmVtZW50KT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVzdHJp
Y3Rpb25zKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnBlcnNpc3RlbnRTdGF0ZVJlcXVp
cmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNv
bnN0IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KENETVJlcXVpcmVtZW50KT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2
YXRlLT5wZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fy
ZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPmRpc3RpbmN0aXZl
SWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uZmlndXJhdGlvbikp
OworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpjcmVhdGVJbnN0YW5jZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7CisgICAgYXV0byBwcml2YXRlSW5zdGFu
Y2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7CisgICAgaWYgKCFwcml2YXRlSW5zdGFu
Y2UgfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluc3RhbmNlID0gUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIHByaXZhdGVJbnN0YW5j
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBpbnN0YW5jZS0+Y29uZmlndXJhdGlvbigpOworICAgIG1f
ZmFjdG9yeS0+YWRkSW5zdGFuY2UoaWRlbnRpZmllciwgV1RGTW92ZShpbnN0YW5jZSkpOworICAg
IGNvbXBsZXRpb24oaWRlbnRpZmllciwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBtX3ByaXZhdGUt
PmxvYWRBbmRJbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiByZXNwb25zZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJik+
JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNw
b25zZSgqcmVzcG9uc2UuYnVmZmVyKCkpKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6c2Fu
aXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRp
b24obV9wcml2YXRlLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpKTsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBkMGFiOTA1NTQ4NmU3Yzk0NmNiNWMzMzI5ODc0MjlmMWU0YWRiZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNUHJpdmF0ZTsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKK2VudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90Owor
ZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CitzdHJ1Y3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbjsKK3N0cnVjdCBDRE1SZXN0cmljdGlvbnM7Cit9CisKK25hbWVzcGFjZSBJ
UEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlUHJveHk7CitzdHJ1Y3QgUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uOworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb247CisK
K2NsYXNzIFJlbW90ZUNETVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Citw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gY3JlYXRl
KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6Q0RNUHJpdmF0ZT4mJik7CisgICAgflJlbW90ZUNETVByb3h5KCk7CisKKyAgICBjb25zdCBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9j
b25maWd1cmF0aW9uLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90
ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZh
Y3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYsIFVu
aXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHN1cHBvcnRzQ29uZmlndXJh
dGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25z
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCk+JiYpOwor
ICAgIHZvaWQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQpPiYmKTsKKyAgICB2
b2lkIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUo
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY3JlYXRlSW5zdGFuY2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbiYmKT4mJik7CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpOworICAg
IHZvaWQgc2FuaXRpemVSZXNwb25zZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYmKT4mJik7CisgICAgdm9pZCBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+JiYp
PiYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICBV
bmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjRlNTM1MzFhZTc0NGQw
NDUxNzE5NDEzYjQzYmZhYzE1Njg0MGJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1Qcm94eSBOb3RSZWZDb3VudGVk
IHsKKyAgICBTdXBwb3J0c0NvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91
cworICAgIFN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoc3RydWN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgc3RydWN0IFdlYkNv
cmU6OkNETVJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMpIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMKKyAgICBTdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oZW51bTp1aW50
OF90IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlIHR5cGUsIHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMKKyAgICBTdXBwb3J0c0luaXREYXRhKEF0b21TdHJpbmcgdHlwZSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAg
ICBEaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoc3RydWN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgc3RydWN0IFdlYkNvcmU6OkNETVJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbnMpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNUmVx
dWlyZW1lbnQgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIFBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVt
ZW50KHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRp
b24sIHN0cnVjdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKSAtPiAoZW51
bTp1aW50OF90IFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHJlc3VsdCkgU3luY2hyb25vdXMKKyAg
ICBEaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKHN0
cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIC0+
IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBDcmVhdGVJbnN0YW5jZSgpIC0+IChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3VzCisgICAg
TG9hZEFuZEluaXRpYWxpemUoKQorICAgIFNhbml0aXplUmVzcG9uc2UoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTYW5pdGl6ZVNlc3Npb25JZChTdHJpbmcgc2Vz
c2lvbklkKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiByZXN1bHQpIFN5bmNocm9ub3VzCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IDVlZmU2NjI1ZDZmMmY5MGFkZWQ3N2Q4YzU1OTdk
ZjNjNzg4ZjMxZGIuLjQ4MTQ1ODQ3NTJhMTNiMGNlODUwMzQ4OTVkZjkxNDEwMGM1YWE0MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCkBAIC00Nyw2ICs0OCwx
MCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00OTAsMTcgKzQ5NSwxNiBA
QCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29s
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkq
KQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50
OEFycmF5KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKIH0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25z
dCBTdHJpbmcmLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGluaXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9p
ZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5n
Rm9yS2V5Q2hhbmdlZCgpCkBAIC02ODIsNiArNjg2LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6a2V5QWRkZWQoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8q
IGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNk
bUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXll
ci0+Y2RtSW5zdGFuY2VBdHRhY2hlZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwor
dm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3Rh
bmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3Rv
cnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2Rt
SW5zdGFuY2VEZXRhY2hlZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGlu
c3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZh
Y3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+
YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsK
K30KKyNlbmRpZgorCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+
c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGQpOworfQorI2VuZGlmCisKIHZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewog
ICAgIG1fcGxheWVyLT5iZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5k
ZXggMTZiYjJkZGZhMjE0NzQ3MGU4NjAwYWI3MTM5NmE1OWNkZjU0NDlmYS4uMjA4OTZiOTU1NTQ4
MTBiNWNjZmRjMjVjYWQ1NmE0ZDBhYTg2OTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0
NiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTI2
LDYgKzEzMSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFj
aGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0Rl
Y3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlm
CisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7
CisjZW5kaWYKKwogICAgIHZvaWQgYmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lk
IGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpOwogCkBAIC0xNjgsNyArMTgzLDcgQEAgcHJpdmF0ZToK
IAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKLSAgICBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsK
KyAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBT
dHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7
CiAjZW5kaWYKIApAQCAtMjUyLDYgKzI2NywxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Okxh
eW91dFJlY3QgbV92aWRlb0NvbnRlbnRCb3hSZWN0OwogICAgIGZsb2F0IG1fdmlkZW9Db250ZW50
U2NhbGUgeyAxLjAgfTsKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5
TmVlZGVkIHsgZmFsc2UgfTsKKyNlbmRpZgorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgY29uc3QgTG9nZ2VyJiBtX2xvZ2dlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCBjYTY2MzE0ZGZiZTZkMzFiZTA5OTUyYzVmMjgyZjEwNjE4ZmViZWJh
Li4yOWQyODY5YzE2NDJkOGZjMjY2ZTg5MWNiNjE4ZTQ4MjRiMGIyMjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzMsOSArNzMsMTYgQEAgbWVzc2FnZXMgLT4gUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKICAgICAjIFNldENETVNlc3Npb24KICAgICBLZXlBZGRlZCgpCi0gICAg
IyBDZG1JbnN0YW5jZUF0dGFjaGVkCi0gICAgIyBDZG1JbnN0YW5jZURldGFjaGVkCi0gICAgIyBB
dHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlCisjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgQ2RtSW5zdGFuY2VBdHRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciBpbnN0YW5jZUlkKQorICAgIENkbUluc3RhbmNlRGV0YWNoZWQoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyAgICBBdHRlbXB0VG9E
ZWNyeXB0V2l0aEluc3RhbmNlKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlu
c3RhbmNlSWQpCisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQoYm9vbCBzaG91bGQpCiAjZW5kaWYKIAogICAgIEJlZ2luU2ltdWxhdGVkSERDUEVycm9y
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA2NzJiZWM0
OGVhNzljNjgyYzEyNDVlNTI2ZjA0ODhjNjc5OTY4MGI3Li41M2E4MDc4MTdiMmE2YjFkZGY1MTM0
NTg2ZWYyZTcxMDJmNjgyNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suY3BwCkBAIC0xNDksMTMgKzE0OSwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvbwogICAg
IHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNw
b25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9
KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV90
aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGggfSk7
CisgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYgZm9ybURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRl
eCBkMzNjYmZmMTA4OWNjMTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi41MDgwMGYzNTAyMjM2
MmY5NmNhMjFiNWU3ZWJkMDdkOGQ0MmEyZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3Mg
Rm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKaW5kZXggYTc0OWFhYjg3MDA1NGNlYjY5MGU1ZjE0ZjQwNzU2M2ZmY2QwZjliOC4u
ODhmNGYyZmE2NDI2MzM0OWI3YWQyMmQwNmY0M2EyN2Y3MjMzNTFhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtOTYsMTIgKzk2LDYgQEAgc3RydWN0
IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92
ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci1jbGFz
cyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kaW5nVHlw
ZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHR5cGVkZWYgRGF0YVJl
ZmVyZW5jZSBUeXBlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1Y3QgQ29k
aW5nVHlwZTxzdGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx0eXBl
bmFtZSBDb2RpbmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkYWQ0
NjYwNDYzMmU5MjY5ZjE5MWQxNWM4MGRkMjExZTU0ODRlN2EzLi5iZmIzMzk1NzY5NmYyZTcyYTIz
NDgyMzQyMjUyYjcyYmQ3OTQyODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yNSw0MCArMjUsNTEgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSgpID0gZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKKyAgICB7CisgICAgfQorICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQorICAgIHsKKyAgICB9CiAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2Rh
dGEoYnVmZmVyKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShzdGQ6Om1ha2VfcGFpcihk
YXRhLCBzaXplKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSkKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAg
ICB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKworICAgIGNvbnN0IGNoYXIqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5zaXplKCkgOiAwOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQogCiAgICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHN3aXRjaE9uKG1fZGF0YSwKLSAg
ICAgICAgICAgIFtlbmNvZGVyID0gJmVuY29kZXJdIChjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICB1aW50NjRf
dCBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+
cmVzZXJ2ZShidWZmZXJTaXplICsgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgICAgICAgICAgICAg
KmVuY29kZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbGVt
ZW50LnNlZ21lbnQtPmRhdGEoKSksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpLCAxKTsKLSAgICAg
ICAgICAgIH0sIFtlbmNvZGVyID0gJmVuY29kZXJdIChjb25zdCBzdGQ6OnBhaXI8Y29uc3QgdWlu
dDhfdCosIHNpemVfdD4mIHBhaXIpIG11dGFibGUgewotICAgICAgICAgICAgICAgIHVpbnQ2NF90
IGJ1ZmZlclNpemUgPSBwYWlyLnNlY29uZDsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5yZXNl
cnZlKGJ1ZmZlclNpemUgKyBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgICAgICAgICAqZW5j
b2RlciA8PCBidWZmZXJTaXplOwotICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCwgMSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICk7CisgICAgICAgIGVuY29kZXIgPDwgbV9idWZmZXI7CisgICAgfQorCisgICAgc3Rh
dGljIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IGJ1ZmZlcjsKKyAgICAgICAgZGVjb2RlciA+PiBidWZmZXI7CisgICAgICAgIGlmICgh
YnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHsgV1RGTW92ZSgqYnVmZmVyKSB9OwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBWYXJpYW50PHN0
ZDo6cGFpcjxjb25zdCB1aW50OF90Kiwgc2l6ZV90PiwgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDI2MDQ5MGZiN2I1NmE4OGNmZjBkOWI4OWMxYTcxNjhhZWQwZDE4NWMuLjcxNjRjMzczNDMx
MDFmZWYwYzNkNWYwZGI2N2M1MmNkNjE4YjVlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtMjI3LDYgKzIyNyw5IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5v
dF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6Ok1ETlNSZWdpc3Rlcklk
ZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXInLAorICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4YzlmYTIxYWYzOGE3
MTYyYzZjMjA5ZTkzOTQ2ODkwNmEyNWMzY2EzLi44YmY4ZDNkNTVlYTU1NDY1NDdiYzEzN2U0MjY4
NDBhNGExMWY4MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTMyMDMsNCArMzIwMyw3MyBAQCBPcHRpb25hbDxTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRm
bwogfQogI2VuZGlmCiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVy
LCBidWZmZXIuZ2V0KCkpOworfQorCitPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2FnZSkKK3sKKyAgICBlbmNvZGVyIDw8IG1lc3Nh
Z2UuZmlyc3Q7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3Nh
Z2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOworfQorCitP
cHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZVR5
cGUgdHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIG1ha2VPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246Ok1lc3NhZ2U+KHsgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgfSk7Cit9
CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3Rvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMpCit7CisgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oa2V5U3RhdHVzZXMuc2l6ZSgpKTsKKyAgICBm
b3IgKGF1dG8mIGtleVN0YXR1cyA6IGtleVN0YXR1c2VzKSB7CisgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGtleSA9IGtleVN0YXR1cy5maXJzdC5jb3B5UmVmKCk7CisgICAgICAgIGVuY29k
ZXIgPDwga2V5IDw8IGtleVN0YXR1cy5zZWNvbmQ7CisgICAgfQorfQorCitPcHRpb25hbDxXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXM7
CisgICAga2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRhU2l6ZSk7CisKKyAg
ICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7ICsraSkgeworICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5KSB8
fCAha2V5KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1cyBzdGF0dXM7CisgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAga2V5U3RhdHVzZXMudW5jaGVja2VkQXBwZW5kKHsga2V5LnJlbGVh
c2VOb25OdWxsKCksIHN0YXR1cyB9KTsKKyAgICB9CisgICAgcmV0dXJuIGtleVN0YXR1c2VzOwor
fQorI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKIH0gLy8gbmFtZXNwYWNlIElQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBl
MzgxNGUyMWY4MzM2YWFmMmY0NDQzMjMyZTM0NGUwMDc0ZGFlMmExLi44MTAwYzkyNDNmYWRiODc2
MWM2ZTMxN2VhM2VmMzRiMDhhMWYyZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTUsNiArNTUsMTEgQEAKICNpbmNsdWRlIDxXZWJLaXRB
ZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQWRkaXRpb25zLmg+CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisjZW5kaWYKKwogI2lm
IFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpA
QCAtMTAwLDYgKzEwNSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0
ZXBzVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWlu
dHM7CkBAIC04MjksNiArODM1LDIzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiB7CiB9OwogI2VuZGlmCiAK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJik7Cisg
ICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4g
ZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC05NjUsNCAr
OTg4LDI4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V1RGTG9nTGV2ZWw+IHsKICAg
ICA+OwogfTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFp
bHVyZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlLAorICAgIFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lLAorICAgIFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb1Nlc3Npb25EYXRhLAorICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRj
aGVkU2Vzc2lvblR5cGUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9u
TG9hZEZhaWx1cmU6OlF1b3RhRXhjZWVkZWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVyCisgICAgPjsKK307CisKK3RlbXBsYXRlIDw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkhEQ1BTdGF0dXMsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlVua25v
d24sCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlZhbGlkLAorICAgIFdl
YkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdl
YkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpPdXRwdXREb3duc2NhbGVkCisgICAgPjsK
K307CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGE1ZDBi
ZTE0MjcxZjYzMDZmODM2YjhmZGJkN2Q0MjBmMjk1MjQ2ZWEuLmVmMTFiMDgxMDI2Nzg4NmE2NmE2
NzkzMTA0YjAxMzRiMGEwZGQxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzEsNiArMzEsMTAgQEAgR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCiBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBHUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUZhY3RvcnlQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
Y3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZS5jcHAKQEAgLTM5LDYgKzQzLDcgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAKIAorCiBOZXR3
b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTUzNCw2ICs1MzksMTAgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJh
Y2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlw
ZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0KaW5kZXggNzg5N2UyOGUzYzhjYTIyNzQ1MWZkNTc0MWY3ZGQxNTVj
YzdkZTE1Zi4uMzQzYmExYjEwMzczMjQyNWI2MDI3N2U4ZjU4MTBmMTdkODFhYWI3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
QEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlNhZmVC
cm93c2luZ1NQSS5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgorI2ltcG9ydCAi
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgi
CiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUu
aCIKQEAgLTE4MywxMyArMTg0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmFnQ2FyZXRS
ZWN0KGNvbnN0IEludFJlY3QmIGRyYWdDYXJldFJlY3QpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1l
bnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRhY2htZW50LCBjb25zdCBTdHJpbmcmIHByZWZl
cnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2
b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0
YWNobWVudD4mJiBhdHRhY2htZW50LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCiB7CiAg
ICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBk
YXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW3Bh
Z2VDbGllbnQoKS5hbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpXSk7CisgICAgYXV0
byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW3BhZ2VDbGllbnQoKS5hbGxvY0ZpbGVXcmFwcGVySW5z
dGFuY2UoKSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YVJlZmVyZW5jZS5idWZmZXIo
KS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKV0pOwogICAgIFtmaWxlV3JhcHBlciBzZXRQ
cmVmZXJyZWRGaWxlbmFtZTpwcmVmZXJyZWRGaWxlTmFtZV07CiAgICAgYXR0YWNobWVudC0+c2V0
RmlsZVdyYXBwZXIoZmlsZVdyYXBwZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjk3MWY5NmY0ZGY4M2ViZjUwNWIyZGRjNGFlMjdlNmNh
N2Q1Y2M3NS4uMGZiZjAzNTIyZTVlZjk1YWQyN2ZjNTUxOWQ4ZjZmMGZlMTkxNTI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02OTA2LDEzICs2OTA2LDEz
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2Us
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2so
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8RGF0YUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVl
KEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNp
emUoKSkucHRyKCkpOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFs
dWUoQVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSkucHRyKCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Ym9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCkBAIC05MDgxLDcgKzkwODEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwog
ICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihDYWxs
YmFja0lEIGNhbGxiYWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIGRhdGFD
YWxsYmFjayhkYXRhLCBjYWxsYmFja0lEKTsKIH0KQEAgLTkzMTIsNyArOTMxMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFj
aG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmls
ZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5m
aWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRh
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlJiBkYXRhKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBJZGVudGlm
aWVyVG9BdHRhY2htZW50TWFwOjppc1ZhbGlkS2V5KGlkZW50aWZpZXIpKTsKIApAQCAtOTQxOSw3
ICs5NDE5LDcgQEAgV2ViUGFnZVByb3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cyBXZWJQYWdlUHJveHk6OndpbGxVcGRhdGVBdHRhY2htZW4KIAogI2lmICFQTEFURk9STShDT0NP
QSkKIAotdm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxB
UEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQ
STo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBiMzE1NDU0OGEwOGI1ODhkZmIzNDYyNjFiYzdkZTNkYmI3NTRmNmNmLi5mMzMyYzVk
MjBkYmE4ZjFkYWYyNzNiMGM2ZjFlNWM4YjJiZmRlNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMTkzLDYgKzE5Myw3IEBAIGVudW0gY2xhc3MgSW5zcGVjdG9y
VGFyZ2V0VHlwZSA6IHVpbnQ4X3Q7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERlY29kZXI7CiBj
bGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1MDEsNyArMTUwMiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogCiAgICAgdm9pZCBnZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgV2ViS2l0OjpDYWxsYmFj
a0lEKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24o
V2ViS2l0OjpDYWxsYmFja0lELCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
KTsKIAogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCBmb2N1c2VkKTsKICAgICB2b2lkIHNldFdpbmRv
d0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwpAQCAtMjAwNSw3ICsyMDA2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBi
b29sIGhhbmRsZWQpOwogCiAgICAgdm9pZCB2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7
CisgICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBib29sQ2FsbGJhY2soYm9v
bCByZXN1bHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tJRCk7CkBAIC0yMTgzLDEyICsyMTg0LDEyIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdG9wQWxsVVJMU2NoZW1lVGFza3MoV2ViUHJvY2Vzc1Byb3h5KiA9IG51bGxwdHIpOwog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0
YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
KTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRmlsZVBhdGgoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRhKFZl
Y3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwogICAgIHZvaWQgY2xv
bmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHRvSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50
KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0
dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9p
ZCBwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHBsYXRmb3JtQ2xvbmVBdHRhY2htZW50KFJl
ZjxBUEk6OkF0dGFjaG1lbnQ+JiYgZnJvbUF0dGFjaG1lbnQsIFJlZjxBUEk6OkF0dGFjaG1lbnQ+
JiYgdG9BdHRhY2htZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGUzOWRjMjViYmQ4ZjhiMTVkNjY4MThmNmQ2ZDgyYTNi
NTY5OTk0OTIuLmE1ZTZmOTY1MTFlNTBhODE0M2RiNmYyYWQzZTI2NGU5MmI5YWFhZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTUzMCw3ICs1MzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpCiAKICAgICBHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHN0cnVjdCBX
ZWJDb3JlOjpMaW5rSWNvbiBpY29uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAg
ICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YSk7CisgICAgRmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEp
OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDJjY2ZiNjVhODRhMjdjZmJlNzY1YmY3NWI5MTZjNjUzMTIzZjYzMjQuLmRkMjhlYmUwOTQxMTVm
NTZkZWJlZTgxMWRhOGEyMzU0MWY0NTE3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5NSw2ICsxNjk1LDcgQEAKIAkJQ0QxOUQy
RUEyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxOUQyRTgyMDQ2NDA2
RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMjg2NUVFMjI1NTU2MjAwMDYw
NkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2QUM3
IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVEMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNz
VGFza1N0YXRlT2JzZXJ2ZXIubW0gKi87IH07CisJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0EzNSAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0NjYxODEyNDAxMDU2NDAwNDdD
QTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07
CiAJCUNENDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMDYx
RTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi87IH07CiAJCUNE
NDkxQjBEMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDQ5MUIwQjFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwRTFFNzMyRTREMDAwMDkwNjYgLyogVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEMxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTE3MTcsNiArMTcxOCwyMCBAQAog
CQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQTI5QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oICovOyB9OwogCQlDREE5M0RCMDIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVl
blRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVs
bHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyog
RnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi87IH07CisJCUNEQUMy
MEI0MjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCMjIzRkI1OEYyMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovOyB9OworCQlDREFDMjBDMzIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCNjIzRkMyRjczMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMEM0MjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlLmggKi87IH07CisJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmln
dXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RN
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBC
QTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi87IH07CisJCUNEQUMyMEM5MjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQzIzRkMyRjc0
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovOyB9Owor
CQlDREFDMjBDQTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCRDIz
RkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IH07CisJCUNE
QUMyMENEMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMDIzRkMyRjc1MDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovOyB9OworCQlDREFDMjBDRTIzRkMyRjc1MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi87IH07CisJCUNEQUMyMENGMjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyog
UmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAv
KiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFD
MjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CisJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBFQzIzRkMzODM4MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OworCQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0
YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICovOyB9
OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RD
QTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAq
LzsgfTsKIAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ1MTFDQkM0ODJG
MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKQEAgLTQ5NDUsNiArNDk2MCwxMCBAQAog
CQlDRDE5RDJFOTIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGlj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHA7
IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyog
UHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUYXNrU3Rh
dGVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFRDIyNTU1
NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdD
QTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFC
MDUxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5MDY2
IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNENDkxQjBBMUU3MzJEMTIwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5ODYsNiArNTAwNSw0MyBAQAogCQlDREEy
OUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3Vj
aFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVl
blRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlz
dGljUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNo
ZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5U
b3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjA3ODIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAv
KiBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBQzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBBRTIzRkI1ODJC
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjEyM0ZCNThF
MjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMzIzRkI1OEYyMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlQ0RNRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMy
MEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQkUyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCRjIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMw
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29u
ZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVGMjNGQzM4MzkwMDIxREVF
MyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMzIzRkMzODNBMDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90
ZUNETVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFD
MjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBwYXRoID0gaW9zL2Z1
bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEQzI4MzFDMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHBhdGgg
PSBpb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBDRk5ldHdvcmsuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3JrOyBwYXRoID0gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTUyNjYsNiArNTMyMiwyMCBAQAogCQkJCTA3OTIzMTMyMjM5
QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkwN0Ix
RDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluICovLAogCQkJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkYyM0ZDMkY3NTAwMjFERUUzIC8q
IFJlbW90ZUNETS5jcHAgKi8sCisJCQkJQ0RBQzIwQkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90
ZUNETS5oICovLAorCQkJCUNEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25m
aWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnkuY3BwICovLAorCQkJCUNEQUMyMEMwMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVD
RE1GYWN0b3J5LmggKi8sCisJCQkJQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBCQjIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2UuY3BwICovLAorCQkJCUNEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZS5oICovLAorCQkJCUNEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQlDREFDMjBCNjIzRkMyRjczMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkUy
M0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8sCisJCQkJ
Q0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICov
LAorCQkJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24ubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLywKIAkJCQkwN0I5M0ZGNTIzQUYwQ0I4
MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJMDc5
MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgKi8s
CiAJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5oICovLApAQCAtNTI5MSw2ICs1MzYxLDE4IEBACiAJCQkJMUQwRUNFQTkyM0ZDODRCQjAwRDE3
MkY2IC8qIGNvY29hICovLAogCQkJCTA3MUJDNTdFMjNDQTVEQjEwMDY4MEQ3QyAvKiBSZW1vdGVB
dWRpb1RyYWNrUHJveHkuY3BwICovLAogCQkJCTA3MUJDNTdGMjNDQTVEQjEwMDY4MEQ3QyAvKiBS
ZW1vdGVBdWRpb1RyYWNrUHJveHkuaCAqLywKKwkJCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjA3ODIzRkIxRTIxMDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggKi8sCisJCQkJQ0RBQzIwN0MyM0ZCMUVG
OTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlD
REFDMjBCMzIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8s
CisJCQkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHku
aCAqLywKKwkJCQlDREFDMjBCMTIzRkI1OEUyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBBRjIzRkI1ODJCMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEFFMjNGQjU4MkIw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oICovLAorCQkJCUNEQUMy
MEFEMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNz
YWdlcy5pbiAqLywKKwkJCQlDREFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJv
eHkuY3BwICovLAorCQkJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94
eS5oICovLAorCQkJCUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5t
ZXNzYWdlcy5pbiAqLywKIAkJCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTA3MjVFRkFDMjM5QUUzODUwMEE1MzhB
OSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovLAogCQkJCTA3MjVFRkFCMjM5
QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
biAqLywKQEAgLTk2MjUsNiArOTcwNywyMSBAQAogCQkJCTFBMDQzQjVDMTI0RDVFOUQwMEZGQkZC
NSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTFBOEVGQTZFMTI1MkI4
NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUE4
RUZBNkYxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlD
REFDMjBGMjIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBGMzIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RN
RmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBFRTIzRkMzODM5MDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIw
RjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAorCQkJCUNEQUMyMEVCMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGNjIzRkMzODNCMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNENDY2MTgx
MjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAorCQkJCUNENDY2MTgyMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlcy5oICovLAorCQkJCUNENDY2MTgwMjQwMTA1NjQwMDQ3Q0EzNSAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFD
MjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQUMyMEVEMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjEyM0ZD
MzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBs
aWVzLmggKi8sCisJCQkJQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBGNDIzRkMzODNBMDAyMURFRTMgLyog
UmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVF
MyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTBGRjI0QTJCMTg3
OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKIAkJCQkwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMDc5MjMxNDMyMzlDQkNC
NjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCkBAIC0xMDUyNCw2ICsxMDYyMSwxNiBAQAogCQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgz
MiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUU2ODg3
MDFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdGRDMxODIyMkIzNTE1RTAwOEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENEMjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFD
MjBDRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0RBQzIwQzQyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDMzIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzkyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8q
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFCMTZBRUExNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTIyMjAsNiArMTIzMjcsMTEgQEAKIAkJCQlDMTVDQkIzNzIzRjM3RUNC
MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1
NEMzMUIyMTJGNERBNjAwNDlDMTc0IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2Vy
dmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NB
MzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFD
MjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRBMkQxODc5RTRC
QzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5RTAwMjVBODhEIC8qIFJl
bW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCmluZGV4IDNmNWI2MTgxZTA2ZTBhODQ2ODhiZGE5MTZmMTBkODdhNjFkMTRi
ZTcuLjkyZmY3N2ViYzc3MzNhNTFmYjE3YzdhNzYzYzc2ODc2YzYyYWVjZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2Vi
UGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1N0cmluZ1JlZlByaXZhdGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVK
U1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4ZGZmNTBmMzA4OGVkNDVjNTkwZWM4MWUyYzA5YTEz
OGJhN2E1MzVmLi5jNjAyNGNhZDlhOTU3NDJiZjdkNjJiMTkyNjlhN2NiNjZjZjA3MjNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgog
I2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC00NCw2
ICs0NiwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwMSw2ICsxMDcsMTIgQEAg
dm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVt
ZW50PFJlbW90ZUNETUZhY3Rvcnk+KCktPmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2ZjYz
YjIzMGY2MjdkMTJjYzZlYzNlZjdkZDZjZTZhZDEyOTdhYTZhLi4zMzBkMjZkYWEyMDRkY2E0MTdj
YmI5MjhmODljNjZkMmUxYWE0OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBA
IC00OSw2ICs0OSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVkaWE7CkBAIC0x
MTYsMTggKzEyMCwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjbwogICAgIGlmICh1cmwuaXNM
b2NhbEZpbGUoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwog
ICAgICAgICBhdXRvIGZpbGVTeXN0ZW1QYXRoID0gdXJsLmZpbGVTeXN0ZW1QYXRoKCk7Ci0gICAg
ICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IGZhbHNlOwogCisgICAgICAgIGF1dG8gY3JlYXRl
RXh0ZW5zaW9uID0gWyZdIHsKICNpZiBIQVZFKFNBTkRCT1hfSVNTVUVfUkVBRF9FWFRFTlNJT05f
VE9fUFJPQ0VTU19CWV9BVURJVF9UT0tFTikKLSAgICAgICAgYXV0byBhdWRpdFRva2VuID0gbV9t
YW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpOwotICAgICAgICBBU1NF
UlQoYXVkaXRUb2tlbik7Ci0gICAgICAgIGlmIChhdWRpdFRva2VuKQotICAgICAgICAgICAgY3Jl
YXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1
ZGl0VG9rZW4oZmlsZVN5c3RlbVBhdGgsIGF1ZGl0VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKLSAg
ICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKGF1dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihmaWxl
U3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpLCBoYW5kbGUpOworICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKLSAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlU3lzdGVtUGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHksIGhhbmRsZSk7CisgICAgICAgICAgICByZXR1cm4gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVTeXN0ZW1QYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKTsKKyAgICAgICAgfTsKIAotICAgICAgICBpZiAoIWNy
ZWF0ZWRFeHRlbnNpb24pIHsKKyAgICAgICAgaWYgKCFjcmVhdGVFeHRlbnNpb24oKSkgewogICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUgdG8gY3JlYXRlIHNhbmRib3ggZXh0ZW5zaW9u
IGhhbmRsZSBmb3IgR1BVUHJvY2VzcyB1cmwuXG4iKTsKICAgICAgICAgICAgIG1fY2FjaGVkU3Rh
dGUubmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7
CiAgICAgICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwpAQCAtODk5LDE5
ICs5MDIsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLXZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJiBpbnN0
YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0
YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFuY2VBdHRhY2hlZChkb3duY2FzdDxSZW1vdGVD
RE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYp
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1J
bnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8
UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNkbUluc3RhbmNlRGV0YWNoZWQoZG93
bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsK
IH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0
dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5j
ZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpBdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKGRvd25jYXN0PFJlbW90ZUNETUlu
c3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC05MTksNiArOTI1
LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5Q2hhbmdl
ZCgpCiAgICAgbV9wbGF5ZXItPndhaXRpbmdGb3JLZXlDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25z
dCBTdHJpbmcmIGluaXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEpCit7
CisgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoaW5pdERhdGEu
ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpOworICAgIG1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRh
dGFFbmNvdW50ZXJlZChpbml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGFCdWZmZXIpKTsKK30K
KwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXkoKSBjb25zdAog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC05MjYsNiArOTM4LDEzIEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QKIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkQ29udGludWVBZnRl
cktleU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChzaG91bGQpLCBtX2lkKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQog
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50
YXRpb24oKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggMTMyZjMwYWIy
OWI2ZTUwOWYxMTM5NDkyNTgwYTZlMzY3MWNjNzkwOS4uZmUyOTMxODBlZGI5NWMyM2E3NjM0N2Yx
MzBhN2M0NmM0YjhkMDRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0xMzIsNiAr
MTMyLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lk
IHdhaXRpbmdGb3JLZXlDaGFuZ2VkKCk7CisgICAgdm9pZCBpbml0aWFsaXphdGlvbkRhdGFFbmNv
dW50ZXJlZChjb25zdCBTdHJpbmcmLCBJUEM6OkRhdGFSZWZlcmVuY2UmJik7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC0zMTcsNiArMzE4LDEwIEBA
IHByaXZhdGU6CiAgICAgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKSBm
aW5hbDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGJvb2wgcmVxdWly
ZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0VGV4
dFRyYWNrUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6VGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KaW5kZXgg
ZTg4OTdiNmExMGExMGQ0YjcwMDkyOThjN2FhMjcyOGJmZTExMjk3YS4uMzNlMmE5OGQ0Nzk4Nzlk
MjE1YjRkMDQxYWZlN2FiNTBlODM2MmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUubWVzc2FnZXMuaW4KQEAgLTc1LDYgKzc1LDcgQEAgbWVzc2FnZXMgLT4gTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKICAgICBXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCisgICAgSW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQoU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlIGluaXRE
YXRhKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc1YjVkYWE4YTI5YmNkOThlNjI3MDkzMTc1YzlmNzA2NWI5YTcwYTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5j
cHAKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NETVJlc3RyaWN0aW9ucy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4gUmVtb3Rl
Q0RNOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNE
TUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24p
Cit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+KG5ldyBSZW1vdGVDRE0o
V1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsK
K30KKworUmVtb3RlQ0RNOjpSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZh
Y3RvcnksIFJlbW90ZUNETUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYm
IGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAs
IG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKQoreworfQorCitib29sIFJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNv
bnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGJvb2wgc3VwcG9ydHMgeyBmYWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpT
dXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Q
cm94eTo6U3VwcG9ydHNDb25maWd1cmF0aW9uOjpSZXBseShzdXBwb3J0cyksIG1faWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitib29sIFJlbW90ZUNETTo6c3VwcG9ydHND
b25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykg
Y29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYm9vbCBzdXBwb3J0cyB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6
OlN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uZmlndXJhdGlvbiwgcmVz
dHJpY3Rpb25zKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c0NvbmZpZ3VyYXRp
b25XaXRoUmVzdHJpY3Rpb25zOjpSZXBseShzdXBwb3J0cyksIG1faWRlbnRpZmllcik7CisgICAg
cmV0dXJuIHN1cHBvcnRzOworfQorCitib29sIFJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlw
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiB0eXBlLCBjb25zdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAoreworICAgIGlmICgh
bV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1cHBvcnRzIHsg
ZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNTZXNzaW9uVHlw
ZVdpdGhDb25maWd1cmF0aW9uKHR5cGUsIGNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3Rl
Q0RNUHJveHk6OlN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbjo6UmVwbHkoc3Vw
cG9ydHMpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0czsKK30KKworYm9vbCBS
ZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5zdXBw
b3J0ZWRJbml0RGF0YVR5cGVzLmNvbnRhaW5zKHR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBib29sIHN1cHBvcnRzIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Q
cm94eTo6U3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKSwgTWVzc2FnZXM6OlJlbW90ZUNETVBy
b3h5OjpTdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb246OlJlcGx5KHN1cHBvcnRz
KSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK0NETVJlcXVpcmVt
ZW50IFJlbW90ZUNETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IENETVJlc3RyaWN0
aW9ucyYgcmVzdHJpY3Rpb25zKSBjb25zdAoreworICAgIENETVJlcXVpcmVtZW50IHJlcXVpcmVt
ZW50IHsgQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQgfTsKKyAgICBpZiAoIW1fZmFjdG9yeSkK
KyAgICAgICAgcmV0dXJuIHJlcXVpcmVtZW50OworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJv
eHk6OkRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25maWd1cmF0aW9uLCByZXN0
cmljdGlvbnMpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkRpc3RpbmN0aXZlSWRlbnRpZmll
cnNSZXF1aXJlbWVudDo6UmVwbHkocmVxdWlyZW1lbnQpLCBtX2lkZW50aWZpZXIpOworICAgIHJl
dHVybiByZXF1aXJlbWVudDsKK30KKworQ0RNUmVxdWlyZW1lbnQgUmVtb3RlQ0RNOjpwZXJzaXN0
ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKK3sK
KyAgICBDRE1SZXF1aXJlbWVudCByZXF1aXJlbWVudCB7IENETVJlcXVpcmVtZW50OjpOb3RBbGxv
d2VkIH07CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiByZXF1aXJlbWVudDsK
KworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpQZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVu
dChjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6
OlBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50OjpSZXBseShyZXF1aXJlbWVudCksIG1faWRlbnRp
Zmllcik7CisgICAgcmV0dXJuIHJlcXVpcmVtZW50OworfQorCitib29sIFJlbW90ZUNETTo6ZGlz
dGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAoreworICAgIGlm
ICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGZsYWcgeyBm
YWxzZSB9OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbmZpZ3VyYXRpb24pLCBNZXNzYWdl
czo6UmVtb3RlQ0RNUHJveHk6OkRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmln
aW5BbmRDbGVhcmFibGU6OlJlcGx5KGZsYWcpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBm
bGFnOworfQorCitSZWZQdHI8Q0RNSW5zdGFuY2U+IFJlbW90ZUNETTo6Y3JlYXRlSW5zdGFuY2Uo
KQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6
Q3JlYXRlSW5zdGFuY2UoKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5j
ZTo6UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24pLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1vdGVDRE1JbnN0YW5jZTo6
Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQpLCBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXpl
KCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0
b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVyKTsKK30KKwor
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
IHNhbml0aXplZFJlc3BvbnNlOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTYW5pdGl6
ZVJlc3BvbnNlKHJlc3BvbnNlKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTYW5pdGl6ZVJl
c3BvbnNlOjpSZXBseShzYW5pdGl6ZWRSZXNwb25zZSksIG1faWRlbnRpZmllcik7CisgICAgcmV0
dXJuIFdURk1vdmUoc2FuaXRpemVkUmVzcG9uc2UuYnVmZmVyKCkpOworfQorCitPcHRpb25hbDxT
dHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplZFNlc3Npb25JZDsKKyAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKSwgTWVz
c2FnZXM6OlJlbW90ZUNETVByb3h5OjpTYW5pdGl6ZVNlc3Npb25JZDo6UmVwbHkoc2FuaXRpemVk
U2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2FuaXRpemVkU2Vzc2lvbklk
OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYzYzM0ZWQyYzIwMjNhZGQyMGFlYTg5YzdkZTRh
N2FjMmM0YmJlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETSBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpDRE1Qcml2YXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNETT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RN
SWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOworICAgIHZpcnR1YWwgflJl
bW90ZUNETSgpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBSZW1vdGVDRE0oV2Vha1B0cjxS
ZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNvbmZp
Z3VyYXRpb24mJik7CisKKyAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBz
dXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBj
b25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0
IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmll
cnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29y
ZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29y
ZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0
aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVu
aXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNl
PiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOworICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFs
PFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisK
KyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9Cisg
ICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRSb2J1c3RuZXNzZXM7IH0KKyAgICBi
b29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9j
b25maWd1cmF0aW9uLnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOyB9CisgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBv
cnRzU2Vzc2lvbnM7IH0KKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5
OworICAgIFJlbW90ZUNETUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlbW90ZUNETUNv
bmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25m
aWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYyYzQ2NGZkZmRjZDhjMzU3NTZiMGUzOGRhZDBmODkz
OTA1ODg2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVj
dCBSZW1vdGVDRE1Db25maWd1cmF0aW9uIHsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9y
dGVkSW5pdERhdGFUeXBlczsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0
bmVzc2VzOworICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8
PCBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRlZFJv
YnVzdG5lc3NlczsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRl
czsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0c1Nlc3Npb25zOworICAgIH0KKworICAgIHRl
bXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1Db25m
aWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlv
bmFsPFZlY3RvcjxBdG9tU3RyaW5nPj4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAg
ZGVjb2RlciA+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAgICBpZiAoIXN1cHBvcnRl
ZEluaXREYXRhVHlwZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIE9wdGlvbmFsPFZlY3RvcjxBdG9tU3RyaW5nPj4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOwor
ICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgaWYgKCFz
dXBwb3J0ZWRSb2J1c3RuZXNzZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAg
ICAgICBkZWNvZGVyID4+IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgICAgICBpZiAo
IXN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1Nlc3Npb25zOworICAgICAg
ICBkZWNvZGVyID4+IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgICAgIGlmICghc3VwcG9ydHNTZXNz
aW9ucykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJu
IHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKSwKKyAgICAg
ICAgICAgIFdURk1vdmUoKnN1cHBvcnRlZFJvYnVzdG5lc3NlcyksCisgICAgICAgICAgICAqc3Vw
cG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMsCisgICAgICAgICAgICAqc3VwcG9ydHNTZXNzaW9ucywK
KyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNRmFjdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRhZjgzZTM4MjllZWEzNzNlY2M0NmMyNjgwNTVl
Njk2MjhhOTM5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE0uaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlQ0RNRmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeShX
ZWJQcm9jZXNzJiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7Cit9CisKK1Jl
bW90ZUNETUZhY3Rvcnk6On5SZW1vdGVDRE1GYWN0b3J5KCkgPSBkZWZhdWx0OworCit2b2lkIFJl
bW90ZUNETUZhY3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYkNvcmU6OlNldHRpbmdz
JiBzZXR0aW5ncykKK3sKKyAgICBpZiAoc2V0dGluZ3MudXNlR1BVUHJvY2Vzc0Zvck1lZGlhKCkp
IHsKKyAgICAgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3Rv
cmllcygpOworICAgICAgICBmYWN0b3JpZXMuY2xlYXIoKTsKKyAgICAgICAgZmFjdG9yaWVzLmFw
cGVuZCh0aGlzKTsKKyAgICB9IGVsc2UKKyAgICAgICAgQ0RNRmFjdG9yeTo6cmVzZXRGYWN0b3Jp
ZXMoKTsKK30KKworCitjb25zdCBjaGFyKiBSZW1vdGVDRE1GYWN0b3J5OjpzdXBwbGVtZW50TmFt
ZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVDRE1GYWN0b3J5IjsKK30KKworR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24mIFJlbW90ZUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkKK3sKKyAg
ICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK2Jv
b2wgUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pCit7CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwgeyB9KTsK
KyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
UmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorewor
ICAgIFJlbW90ZUNETUlkZW50aWZpZXIgaWQ7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETShrZXlTeXN0
ZW0pLCBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE06OlJlcGx5KGlk
LCBjb25maWd1cmF0aW9uKSwgeyB9KTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gUmVtb3RlQ0RNOjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIFdU
Rk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1G
YWN0b3J5OjphZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQs
IFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbikKK3sKKyAgICBBU1NFUlQo
IW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwgV1RGTW92
ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6cmVtb3ZlU2Vzc2lvbihS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3Nl
c3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3Rvcnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkp
KQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNjZWJlODRjMmIxMmFk
NDIzODM4YTM2MjdhMDY0ZWViZDQ3MDk1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCkBAIC0wLDAgKzEsODUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUZh
Y3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNldHRpbmdzOworfQorCituYW1lc3Bh
Y2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBSZW1vdGVD
RE07CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb247CitjbGFzcyBXZWJQcm9jZXNzOwor
CitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5IGZpbmFsCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6Q0RN
RmFjdG9yeQorICAgICwgcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZUNETUZhY3RvcnkoV2ViUHJvY2Vz
cyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnkoKTsKKworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHByb2Nlc3MoKSBjb25z
dCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQ
cm9jZXNzQ29ubmVjdGlvbigpOworCisgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBX
ZWJDb3JlOjpTZXR0aW5ncyYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB2b2lkIGFkZFNlc3Npb24o
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbj4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpDRE1Qcml2YXRlPiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBz
dXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIEhhc2hNYXA8UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPj4gbV9jZG1zOworICAgIFdlYlByb2Nlc3MmIG1fcHJvY2Vz
czsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlZTNhMzgx
OWMxNzA3YjU1OGIzZmQ5YWFhODgxNjMxNTgzOTJmYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaApAQCAt
MCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYvT2Jq
ZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVDRE1J
ZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JZGVudGlmaWVyID0gT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM3MzlmMDNkYzU5ZWFkNzFl
ZDdhMGZjMDNiNmNjMTk3ZGFhZDUzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC0wLDAgKzEsMTMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUluc3RhbmNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxSZW1vdGVDRE1JbnN0
YW5jZT4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+
JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUlu
c3RhbmNlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2UoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCks
IFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2U6OlJlbW90
ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAg
ICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1v
dmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uKSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFj
dG9yeSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFs
c2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5OjpJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246OlJlcGx5KHN1Y2NlZWRlZCksIG1f
aWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsK
K30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0Fs
bG93ZWQoYm9vbCBhbGxvd2VkKSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9y
eSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2Ug
fTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXREaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzQWxsb3dlZChhbGxvd2VkKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6OlNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkOjpSZXBseShzdWNjZWVkZWQpLCBt
X2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7
Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQo
Ym9vbCBhbGxvd2VkKSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAg
ICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRQZXJzaXN0ZW50U3RhdGVBbGxv
d2VkKGFsbG93ZWQpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0UGVyc2lz
dGVudFN0YXRlQWxsb3dlZDo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAgICBy
ZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQorCithdXRvIFJlbW90ZUNE
TUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGNlcnRpZmljYXRlKSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkK
KyAgICAgICAgcmV0dXJuIEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShjZXJ0aWZpY2F0ZS5nZXQoKSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpT
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZTo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQorCithdXRvIFJlbW90
ZUNETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
KSAtPiBTdWNjZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJu
IEZhaWxlZDsKKworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSksIE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTdG9yYWdlRGlyZWN0b3J5OjpSZXBs
eShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdWNjZWVkZWQgPyBTdWNj
ZWVkZWQgOiBGYWlsZWQ7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+
IFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9y
eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyIGlkOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkNy
ZWF0ZVNlc3Npb24oKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkNyZWF0ZVNl
c3Npb246OlJlcGx5KGlkKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIWlkKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHNlc3Npb24gPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBXVEZNb3ZlKGlkKSk7Cisg
ICAgbV9mYWN0b3J5LT5hZGRTZXNzaW9uKGlkLCBzZXNzaW9uLmNvcHlSZWYoKSk7CisgICAgcmV0
dXJuIHNlc3Npb247Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFuY2U6OnNldEhEQ1BTdGF0dXMo
SERDUFN0YXR1cyBzdGF0dXMpIC0+IFN1Y2Nlc3NWYWx1ZQoreworICAgIGlmICghbV9mYWN0b3J5
KQorICAgICAgICByZXR1cm4gRmFpbGVkOworCisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9
OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldEhEQ1BTdGF0dXMoc3Rh
dHVzKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldEhEQ1BTdGF0dXM6OlJl
cGx5KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1
Y2NlZWRlZCA6IEZhaWxlZDsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNWQ4MjZiYWE0MTJkNTYwZTBjMDY5OGEwZTJkYzVlODBlMjA4YmUwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3Vy
YXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBSZW1vdGVDRE1JbnN0YW5jZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5jZSB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2UoKSA9IGRlZmF1bHQ7Cisg
ICAgc3RhdGljIFJlZjxSZW1vdGVDRE1JbnN0YW5jZT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RN
RmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiYmKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
ZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2
YXRlOgorICAgIFJlbW90ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwg
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbiYmKTsKKworICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQorICAgIFN1
Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0
aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUg
c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUg
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CisgICAgU3VjY2Vzc1ZhbHVlIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmlu
YWw7CisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRI
RENQU3RhdHVzKEhEQ1BTdGF0dXMpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9u
OworfTsKKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NETV9JTlNUQU5DRShXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlLCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SW1wbGVtZW50YXRpb25U
eXBlOjpSZW1vdGUpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjUzMmQ3MmU3Y2U0Yjg1M2YyZDNiOTM0NTVlMTkyODFjNDE5ZmE0Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiB7CisgICAgU3RyaW5nIGtleVN5c3RlbTsK
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwga2V5U3lzdGVtOworICAg
IH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxS
ZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBrZXlTeXN0ZW07CisgICAgICAgIGRlY29k
ZXIgPj4ga2V5U3lzdGVtOworICAgICAgICBpZiAoIWtleVN5c3RlbSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZN
b3ZlKCprZXlTeXN0ZW0pLAorICAgICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZmZkZTY5MWMzZTg5NWI4ODU5ZTYyMDVhNzFlMTE1ZmE5YjRmZTBhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworZW51bSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVjY2JlMjM5NmY5YjJm
ODZjOWM2YjI2ZjMzZTFiYTIzNWIwMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC0w
LDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3Rvcnks
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV1RGTW92ZShmYWN0b3J5KSwg
V1RGTW92ZShpZCkpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZN
b3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQoreworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
dHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFj
dG9yeSkgeworICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0
cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExp
Y2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlv
biwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVy
KCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5
U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGNhbGxiYWNrKG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgc2Vz
c2lvbklkLCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBG
YWlsZWQpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxs
YmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFp
bGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5
cGUsIFdURk1vdmUocmVzcG9uc2UpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChi
b29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNz
YWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJh
Y2soc2Vzc2lvbldhc0Nsb3NlZCwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdl
ZEV4cGlyYXRpb24pLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBG
YWlsZWQpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFp
bHVyZTo6T3RoZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpMb2FkU2Vzc2lvbih0eXBlLCBz
ZXNzaW9uSWQsIG9yaWdpbiksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoT3B0aW9u
YWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hh
bmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVk
ZWQsIFNlc3Npb25Mb2FkRmFpbHVyZSBsb2FkRmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwg
V1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkLCBsb2FkRmFp
bHVyZSk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb246OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNz
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAg
ICBjYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpDbG9zZVNlc3Npb24oc2Vzc2lv
bklkKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAg
ICBjYWxsYmFjaygpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSwgV1RGOjpu
dWxsb3B0LCBGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5
LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0
YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0
YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBP
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKKyAgICAgICAg
ICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxs
KCk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxN
ZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNvcmRP
ZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQoreworICAgIGlmICghbV9mYWN0b3J5
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpTdG9yZVJlY29yZE9mS2V5VXNhZ2Uoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0
YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1l
c3NhZ2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2Up
Cit7CisgICAgaWYgKG1fY2xpZW50ICYmIG1lc3NhZ2UuYnVmZmVyKCkpCisgICAgICAgIG1fY2xp
ZW50LT5zZW5kTWVzc2FnZSh0eXBlLCBtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCkp
OworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZChj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKHNlc3Npb25JZCk7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDk4NzlmNDgzN2ZjMzIyZjFkMTE1
YjY4ODEwNDk5NWRkMDk2Y2RkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VT
ZXNzaW9uLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbiBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsICBwdWJsaWMgV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsKKyAgICB2aXJ0dWFsIH5SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24oKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIFJlbW90ZUNETUZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllciYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAg
IC8vIE1lc3NhZ2VzCisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3Im
Jik7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYpOworICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChj
b25zdCBTdHJpbmcmKTsKKworCisgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xpZW50KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RG
TW92ZShjbGllbnQpOyB9CisgICAgdm9pZCBjbGVhckNsaWVudCgpIGZpbmFsIHsgbV9jbGllbnQg
PSBudWxscHRyOyB9CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7Cisg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAg
V2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IG1fY2xpZW50OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhjMjM5MmU3ZWY4NjIwNDYyMWQy
ODQxNDM4YjVlZGY0ZDM4MTUzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3Nh
Z2VzIC0+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBVcGRh
dGVLZXlTdGF0dXNlcyhXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciBrZXlTdGF0dXNlcykKKyAgICBTZW5kTWVzc2FnZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RN
TWVzc2FnZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIG1lc3NhZ2Up
CisgICAgU2Vzc2lvbklkQ2hhbmdlZChTdHJpbmcgc2Vzc2lvbklkKQorfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg2
YWNkMTI2NWFmMGM4NDYzODhlMjNmOWNjYTE2ZDkwMjMzOGZlMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitlbnVtIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlIHsgfTsKK3Vz
aW5nIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllckNhY2hlZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyQ2FjaGVkU3RhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZjRmMGRlMTBkODg2ZmY5Y2QxMzRmZmViNzE4OTI3YWNiZjg3ODAwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllckNhY2hlZFN0YXRlLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFQbGF5ZXJFbnVtcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2Vz
Lmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RydWN0IFJlbW90ZU1lZGlhUGxheWVyQ2FjaGVkU3RhdGUgeworICAgIE1lZGlhVGltZSBjdXJy
ZW50VGltZTsKKyAgICBNZWRpYVRpbWUgZHVyYXRpb247CisgICAgTWVkaWFUaW1lIG1pblRpbWVT
ZWVrYWJsZTsKKyAgICBNZWRpYVRpbWUgbWF4VGltZVNlZWthYmxlOworICAgIFdlYkNvcmU6OlBs
YXRmb3JtVGltZVJhbmdlcyBidWZmZXJlZFJhbmdlczsKKyAgICBib29sIHBhdXNlZCB7IHRydWUg
fTsKKyAgICBib29sIGxvYWRpbmdQcm9ncmVzc2VkIHsgZmFsc2UgfTsKKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgY3VycmVudFRpbWU7CisgICAgICAgIGVuY29kZXIg
PDwgZHVyYXRpb247CisgICAgICAgIGVuY29kZXIgPDwgbWluVGltZVNlZWthYmxlOworICAgICAg
ICBlbmNvZGVyIDw8IG1heFRpbWVTZWVrYWJsZTsKKyAgICAgICAgZW5jb2RlciA8PCBidWZmZXJl
ZFJhbmdlczsKKyAgICAgICAgZW5jb2RlciA8PCBwYXVzZWQ7CisgICAgICAgIGVuY29kZXIgPDwg
bG9hZGluZ1Byb2dyZXNzZWQ7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+
CisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZU1lZGlhUGxheWVyQ2FjaGVkU3RhdGU+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBj
dXJyZW50VGltZTsKKyAgICAgICAgZGVjb2RlciA+PiBjdXJyZW50VGltZTsKKyAgICAgICAgaWYg
KCFjdXJyZW50VGltZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBkdXJhdGlvbjsKKyAgICAgICAgZGVjb2RlciA+PiBkdXJh
dGlvbjsKKyAgICAgICAgaWYgKCFkdXJhdGlvbikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBtaW5UaW1lU2Vla2FibGU7Cisg
ICAgICAgIGRlY29kZXIgPj4gbWluVGltZVNlZWthYmxlOworICAgICAgICBpZiAoIW1pblRpbWVT
ZWVrYWJsZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0
aW9uYWw8TWVkaWFUaW1lPiBtYXhUaW1lU2Vla2FibGU7CisgICAgICAgIGRlY29kZXIgPj4gbWF4
VGltZVNlZWthYmxlOworICAgICAgICBpZiAoIW1heFRpbWVTZWVrYWJsZSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGxhdGZv
cm1UaW1lUmFuZ2VzPiBidWZmZXJlZFJhbmdlczsKKyAgICAgICAgZGVjb2RlciA+PiBidWZmZXJl
ZFJhbmdlczsKKyAgICAgICAgaWYgKCFidWZmZXJlZFJhbmdlcykKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcGF1c2VkOworICAgICAg
ICBkZWNvZGVyID4+IHBhdXNlZDsKKyAgICAgICAgaWYgKCFwYXVzZWQpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRpbmdQcm9n
cmVzc2VkOworICAgICAgICBkZWNvZGVyID4+IGxvYWRpbmdQcm9ncmVzc2VkOworICAgICAgICBp
ZiAoIWxvYWRpbmdQcm9ncmVzc2VkKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworCisgICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpjdXJyZW50VGltZSksIFdURk1vdmUoKmR1
cmF0aW9uKSwgV1RGTW92ZSgqbWluVGltZVNlZWthYmxlKSwgV1RGTW92ZSgqbWF4VGltZVNlZWth
YmxlKSwgV1RGTW92ZSgqYnVmZmVyZWRSYW5nZXMpLCBXVEZNb3ZlKCpwYXVzZWQpLCBXVEZNb3Zl
KCpsb2FkaW5nUHJvZ3Jlc3NlZCkgfX07CisgICAgfQorCit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggYWUwMTYxYWFkOTQ3NGQ2YjBmMWY5MDBi
MDU0NGY1OTgwZDM2OThmZi4uYjlmNGQyYTdlMzI3ZWJlMzIwZDU3ZTc1OGJhYjAzZTU3YTZhZDY1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAK
IAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShW
SURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlc1JlcGxp
ZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDA5ZDc5ODcxZjViNmYzODdkNGY1ZmI2NTUxZWY5YTA0
NjdjNDYzYjguLjQ4Y2E5ZGU5OWFiYzBiMDk1MjExOGVkZDZhMTlhMmViOTE4OGJjZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTE4OSwxNyArMTg5LDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAg
ICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9s
aWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6
ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3
b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRo
ZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5p
c0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1
dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxv
YWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YSA9IFdURk1vdmUoZGF0
YSksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29y
ZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJmYTFjNjlmZWE5ZDUzOTY2ZmIuLjI2
OTA4ZTgyM2Q3OTI0NGU1Nzg2ZGIwNGE1OTY5ZWYxZmM2NTgwODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYs
NyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIElQQyB7Ci1j
bGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIGNs
YXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmKTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBpbnQ2NF90IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3Jr
ZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzRlODZjMTFlMjQ4NmM3YTE2MDM2ZDdiNDY4ZmI3
OGQyNzU4ZmQ2MS4uYzUwZjU1YWU5MjYzYzExNjgxNDFhYTQ1NzBhMmRkZWM2MTY2NDA3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTEyOSw3ICsxMjksNyBA
QCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1
bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZQogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSkgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50
aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZp
bmlzaEJsb2JMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDk4
YjE1Yjg3ZmMxM2RhMmRiZjQ0M2JhOThhNGQ4NmQ3YTlkMzU0MTkuLjNlMTk5YzlhZjk4YzVkNGJk
ODg5ZGE5NzI1MDM1MmQ0YjJkMWI2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cApAQCAtMTkxNCw5ICsxOTE0LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNo
ZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXIKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZpZXIp
OwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAgICAg
ICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOworICAgICAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRp
bmdJY29uKGNhbGxiYWNrSUQsIHsgKmRhdGEgfSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0lj
b24oY2FsbGJhY2tJRCwgeyBudWxscHRyLCAwIH0pKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lE
LCB7IH0pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggZTQ1ODM3NDliNmY5NmI1YzFkZWQxZTA2YTQzMGFhYzg5MTU4N2Jm
ZC4uOGZiYzc0MzFiZTc3YTBjOTYyNWFkMzE4NDdmYWUzNmNhOTA4M2MyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMyMCw2ICszMjAsOSBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5oIgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNRmFjdG9yeS5oIgorI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0z
NTAwLDcgKzM1MDMsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURh
dGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQot
ICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAg
ICAgZGF0YVJlZmVyZW5jZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2Vu
ZGlmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJl
ZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMzU4MSw3ICszNTg0LDcgQEAgdm9pZCBXZWJQ
YWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0kKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGF0
YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CisgICAgICAgIGRhdGFSZWZl
cmVuY2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKICNlbmRpZgogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNh
bGxiYWNrSUQpKTsKIH0KQEAgLTM2ODUsNiArMzY4OCw5IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCktPnVwZGF0ZVByZWZlcmVuY2VzKHNldHRpbmdzKTsK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGlu
Z3MpOworI2VuZGlmCiAjZW5kaWYKIH0KIApAQCAtNDkxOSw3ICs0OTI1LDcgQEAgdm9pZCBXZWJQ
YWdlOjpkcmF3UGFnZXNUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFn
ZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgZmlyc3Qs
IGNvdW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
YXRhQ2FsbGJhY2soeyBDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSB9LCBjYWxs
YmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2so
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZQYWdlRGF0YS5nZXQoKSkgfSwgY2FsbGJhY2tJRCkp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGSW1wbChGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50
MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSkKQEAg
LTY1NjMsMTIgKzY1NjksMTIgQEAgdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjQKICAgICBoYW5kbGVy
LT50YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHRhc2tJZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRs
ZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEo
dWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgYXV0byogaGFu
ZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVy
SWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0Rp
ZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOwor
ICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXpl
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhLmRhdGEoKSkpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVy
SWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQpAQCAtNjc5MCw3ICs2Nzk2LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmkKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRp
ZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0
ZUxheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IGM3Y2YzOGM1YmJhMjAxY2VkNzg4Y2QwM2Q1YTIwNGQ0YWNhNGYyYTcuLjczYzU5MmNjODRm
NzQ4YzJmNDg5OTU4NjdiZTZlMmU5YWVlYWMxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCBuYW1lc3BhY2UgSVBDIHsK
IGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xMTk0LDcgKzExOTUsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xv
c2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZp
bGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0
YSwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKQEAgLTE2NzQsNyArMTY3NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVybFNjaGVtZVRh
c2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2
NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB1cmxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRh
c2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHVybFNj
aGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0
X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYp
OwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVu
dGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogCiAgICAgdm9pZCBzZXRJc1N1c3BlbmRlZChib29sKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0N2M5YzA4YWRlZTQ1ODVkOTEzMzQ2YjFhYmRl
ZTg2N2M1ZjFjYjU3Li5iNWQ3MmI0ZTdmNjIwM2ZmM2NiYzUyMjI2ZDc2ODM1ZmIyMDRlNDRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNzQsNiArMTc0LDEw
IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlmCisK
ICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25J
RC0+dG9VSW50NjQoKSA6IDApCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5l
bCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBj
aGFubmVsLCAiJXAgLSBbc2Vzc2lvbklEPSUiIFBSSXU2NCAiXSBXZWJQcm9jZXNzOjoiIGZtdCwg
dGhpcywgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMjQwLDYg
KzI0NCwxMCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICBhZGRTdXBwbGVtZW50PFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGFkZFN1cHBsZW1lbnQ8UmVtb3Rl
Q0RNRmFjdG9yeT4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391511</attachid>
            <date>2020-02-23 21:27:04 -0800</date>
            <delta_ts>2020-02-23 21:49:57 -0800</delta_ts>
            <desc>Part 1: WebCore</desc>
            <filename>bug-208090-20200223212703.patch</filename>
            <type>text/plain</type>
            <size>62767</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uYmZmNzBhNDgxMzU5MWJiOGIzOGY2ZmZjNGE3MTYy
ZDI0OThhNjI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5OjpyZXNldEZhY3Rvcmll
cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVxdWlyZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1
cHBvcnRlZFJvYnVzdG5lc3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydGVk
SW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0
ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnN1cHBv
cnRlZFJvYnVzdG5lc3MgY29uc3QpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYW4gdW51c2VkIGxvY2FsIHZhcmlhYmxlIGFmdGVy
IHIyNTY4MDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFkNGY3MWQ3YzRiNDk2OTEwMzIxNjMzY2Fh
ZmMzOGQ2MGY2MmNmMWQuLjVhYjdiYTUxM2I2MDExYWZhMzJlMTE2YWI2OGJhNTEzOWI2YTU1NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTAzMSw2ICsxMDMxLDIwIEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCiAgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKIAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAor
ICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorICAgIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZVNlc3Npb24uaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0
YXR1cy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgK
KyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisgICAgcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
LmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAorICAgIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKKwogICAgIHBsYXRmb3JtL2dh
bWVwYWQvR2FtZXBhZFByb3ZpZGVyLmgKICAgICBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92
aWRlckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDRiYmIy
YmNlNjE4NzRiN2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAuLmM0ZTE0MjZhMGMzZmZiNWFhODEw
ZDRjNWQwYTY4YmQwN2U5ZmVmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBPcHRpb25hbDxNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24+IENETTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdCBN
ZWRpYQogICAgICAgICAgICAgaWYgKGluaXREYXRhVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChtX3ByaXZhdGUgJiYgbV9wcml2YXRl
LT5zdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgICAgICAgICAgaWYgKG1f
cHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhp
bml0RGF0YVR5cGUpKQogICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChpbml0
RGF0YVR5cGUpOwogICAgICAgICB9CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBPcHRpb25hbDxWZWN0
b3I8TWVkaWFLZXlTeXN0ZW1NZWRpYUNhcGFiaWxpdHk+PiBDRE06OmdldFN1cHBvcnRlZENhcGFi
aWxpdGllc0ZvcgogICAgICAgICAvLyAzLjExLiBJZiBjb250ZW50IHR5cGUgaXMgbm90IHN0cmlj
dGx5IGEgYXVkaW8vdmlkZW8gdHlwZSwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgog
ICAgICAgICAvLyAzLjEyLiBJZiByb2J1c3RuZXNzIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nIGFu
ZCBjb250YWlucyBhbiB1bnJlY29nbml6ZWQgdmFsdWUgb3IgYSB2YWx1ZSBub3Qgc3VwcG9ydGVk
IGJ5CiAgICAgICAgIC8vICAgICAgIGltcGxlbWVudGF0aW9uLCBjb250aW51ZSB0byB0aGUgbmV4
dCBpdGVyYXRpb24uIFN0cmluZyBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgotICAgICAg
ICBpZiAoIXJvYnVzdG5lc3MuaXNFbXB0eSgpICYmICFtX3ByaXZhdGUtPnN1cHBvcnRzUm9idXN0
bmVzcyhyb2J1c3RuZXNzKSkKKyAgICAgICAgaWYgKCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAh
bV9wcml2YXRlLT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKS5jb250YWlucyhyb2J1c3RuZXNzKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIDMuMTMuIElmIHRoZSB1c2VyIGFn
ZW50IGFuZCBpbXBsZW1lbnRhdGlvbiBkZWZpbml0ZWx5IHN1cHBvcnQgcGxheWJhY2sgb2YgZW5j
cnlwdGVkIG1lZGlhIGRhdGEgZm9yIHRoZQpAQCAtNjEyLDcgKzYxMiw3IEBAIGJvb2wgQ0RNOjpz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKIAogYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBl
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKTsK
KyAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBl
cygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IENE
TTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggZGExOWJiZmYy
YzdjZTgyYmVmYTgwMzVhZDc1NDJlM2U5ZjIyYTY5ZC4uMjlmYWI0OTkwNjgyNTgzMmE1YWRkZDk5
YTgwZThmMzRkOGQzMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDAxLDcgKzQwMSw3IEBA
IHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25z
ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0IHNlc3Npb24gY2xv
c2VkIGJlIGZhbHNlLgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhlIENETSBpbnN0YW5j
ZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAg
ICAgLy8gNi43LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0g
ICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nl
c3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXND
bG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGNo
YW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFs
PENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Np
b246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNl
U2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgc2FuaXRp
emVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Ns
b3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hh
bmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdiMThhNTBhNDRmNmE4ZTYz
ZDE0YzMyODg0MzM1Njc5MDFkMTEyMGIuLmQ3MTM2MTViMDBhYzFhMjUzNGFhZTk0OWE3NDg3N2Yx
YjNkOWY5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQwNjUsNiArNDA2NSwxOSBAQAogCQlDRDNBNDk1RjE3QTlEMDFCMDAy
NzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEM0E0OTU2MTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oICov
OyB9OwogCQlDRDNBNDk2MjE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1OTE3QTlEMDFC
MDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggKi87IH07CiAJCUNEM0E0OTY1MTdBOUQwMUIwMDI3
NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVy
TGlzdC5oICovOyB9OworCQlDRDNDRTBGODI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRW5jcnlwdGlv
blNjaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RGNzU2OUIyMTVDMjNBNDAwRUZDQjUwIC8qIENETUVuY3J5cHRpb25TY2hlbWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGOTI0MDFB
QUQ5MDA0QkEwMUQgLyogQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1RDIxRjcxQ0I2QjAwRjUyNUM1IC8qIENETUZhY3Rvcnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDND
RTBGQTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNFMUY3MUNCNkEwMEY1MjVDNSAvKiBD
RE1JbnN0YW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOUQzNzVBMjE1
MTYzRTQwMDQ5NjU3QiAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGQzI0MDFBQUQ5MDA0QkEwMUQg
LyogQ0RNS2V5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDk0QTVENDFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNS2V5U3RhdHVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkQyNDAx
QUFEOTAwNEJBMDFEIC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNEMUY3MUNCNjkwMEY1MjVD
NSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkUyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TU1lZGlhQ2FwYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q5NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NF
MEZGMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1NZXNzYWdlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1RDYxRjcxQ0I2RDAwRjUyNUM1IC8q
IENETU1lc3NhZ2VUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQ0QzQ0UxMDAyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNGMUY3MUNC
NkEwMEY1MjVDNSAvKiBDRE1Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVD
RjFGNzFDQjYxMDBGNTI1QzUgLyogQ0RNUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RN
UmVxdWlyZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEOTRBNUNDMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1SZXF1aXJlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTAzMjQwMUFB
REEwMDRCQTAxRCAvKiBDRE1SZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQwMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1SZXN0
cmljdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDRDNDRTEwNDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ1MUY3MUNCNkQw
MEY1MjVDNSAvKiBDRE1TZXNzaW9uVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJbWFnZUJ1
ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDNFMjFEQjIxODMzRjUxMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXND
Ry5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
M0UyNTFDMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2IC8qIEdy
aWRBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0QzRTI1MjQxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTIy
MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggKi87IH07CkBA
IC00MTk1LDcgKzQyMDgsNyBAQAogCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1Ry
YWNrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RG
MkIwMEYxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCAqLzsgfTsKIAkJQ0RGNEI3MTIx
RTAwODdBRTAwRTIzNUEyIC8qIExlZ2FjeUNETVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBM
ZWdhY3lDRE1TZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0RGNEI3MTUxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0QjcxMzFFMDBCN0U1MDBF
MjM1QTIgLyogQ0RNLmNwcCAqLzsgfTsKLQkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEyIC8qIENE
TS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3
MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovOyB9OworCQlDREY0QjcxNjFFMDBCN0U1MDBF
MjM1QTIgLyogQ0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREY0QjcxNDFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNEI3MTgxRTAxQ0I5MTAwRTIzNUEy
IC8qIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTcxRTAxQ0I5MTAwRTIzNUEyIC8qIE1lZGlhS2V5c1Jl
c3RyaWN0aW9ucy5oICovOyB9OwogCQlDREY0QjcxQTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFL
ZXlTZXNzaW9uVHlwZS5pZGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREY0QjcxOTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9uVHlwZS5p
ZGwgKi87IH07CiAJCUNERjRCNzFFMUUwMUUxMUEwMEUyMzVBMiAvKiBKU01lZGlhS2V5U2Vzc2lv
blR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RjRCNzFDMUUwMUUxMUEwMEUyMzVBMiAvKiBKU01lZGlhS2V5U2Vzc2lvblR5cGUuaCAqLzsgfTsK
QEAgLTI5MjYyLDkgKzI5Mjc1LDIyIEBACiAJCQkJNjU1MEI2OUUwOTlERjAyNzAwOTBENzgxIC8q
IENEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIz
NUEyIC8qIENETS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q5NEE1REUxRjcyRjU3QjAwRjUyNUM1
IC8qIENETUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJB
MDFEIC8qIENETUVuY3J5cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEY5
MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREI3
MDQ1QTFGNzQ2NUExMDAzOTIzREYgLyogQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEM0NFMEZBMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkIyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkQyNDAxQUFEOTAwNEJBMDFE
IC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NF
MEZFMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1NZWRpYUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUNEM0NFMEZGMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1NZXNzYWdlVHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0QzQ0UxMDAyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEMzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAvKiBDRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwMTI0MDFBQURB
MDA0QkEwMUQgLyogQ0RNUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAyMjQwMUFB
REEwMDRCQTAxRCAvKiBDRE1SZXF1aXJlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0Ux
MDMyNDAxQUFEQTAwNEJBMDFEIC8qIENETVJlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RFNTk1OTcxQkYyNkUyMTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTA0MjQwMUFBREEwMDRCQTAxRCAvKiBDRE1T
ZXNzaW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJE
IC8qIENlcnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTFCOEYwQjUyMTk1M0Q2
NTAwMEMyQjAwIC8qIENlcnRpZmljYXRlSW5mb0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
MzZGRDE1MTZDNzgyNjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0ZTlmOGVh
MjA1YzgwY2ZhMjk4NWZlZjE4NWJmZWZlMGMxMjI4MmI4Li45NGVmNWE3Yjk5NDBmYWEyMmY1OWNj
OTRiODY2ZmExMzlmZjk4YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTI1NjEsMTUgKzI1NjEsMjUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRS
ZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogfQogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKQor
eworICAgIGlmICghbV9wbGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBib29sIHNob3VsZENv
bnRpbnVlID0gaGFzRXZlbnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXkiKSB8fCAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQo
KSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBv
cnRRdWlyaygpKTsKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChzaG91bGRDb250aW51ZSk7Cit9CisjZW5kaWYKKwogUmVmUHRyPEFycmF5QnVmZmVyPiBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYg
a2V5SWQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fd2ViS2l0TWVkaWFLZXlzID8gbV93ZWJLaXRN
ZWRpYUtleXMtPmNhY2hlZEtleUZvcktleUlkKGtleUlkKSA6IG51bGxwdHI7CiB9CiAKLWJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERh
dGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJy
YXkqIGluaXREYXRhKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWhhc0V2ZW50TGlzdGVuZXJz
KCJ3ZWJraXRuZWVka2V5IikKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpAQCAtMjU4MCwx
NCArMjU5MCwxMiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KFVpbnQ4QXJyYXkqIGluaXREYXRhKQogICAgICAgICApIHsKICAgICAgICAgbV9lcnJvciA9IE1l
ZGlhRXJyb3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfRU5DUllQVEVEKTsKICAgICAg
ICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlF
dmVudCwgaW5pdERhdGEpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgbV9hc3lu
Y0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC01MTI5LDYgKzUxMzcsMTAgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCiAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CiAjZW5k
aWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5k
aWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQo
KQpAQCAtNTg5MSw2ICs1OTAzLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hF
dmVudChFdmVudCYgZXZlbnQpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxp
c3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpCisg
ICAgICAgIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKKwogICAg
IGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxh
YmlsaXR5Y2hhbmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6YWRkRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKTsKIApAQCAtNTkxMiw2ICs1
OTI5LDExIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7Cisj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50
KQorICAgICAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlmCisK
ICAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2
YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OnJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZjA1ZTIyM2I5MzJmNzE3YzFhY2MzMDBiNWY4MTFk
NjkxNGIyOTZhNi4uZmUwN2FkMGY0Nzk3ZTcwOWE1NzA5OGRiYzU5MzM1NzlmYTQwM2U0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTY4Miw3ICs2ODIsNyBAQCBw
cml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYg
a2V5SWQpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhB
cnJheSopIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSop
IGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCBmaW5hbDsKICNlbmRpZgogCkBAIC02OTYsNiArNjk2LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gQ0RNQ2xpZW50CiAgICAgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFj
a0lmTmVjZXNzYXJ5KCkgZmluYWw7CiAjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgdXBkYXRlU2hv
dWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgogICAgIAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCBtZWRpYVBsYXllckN1cnJlbnRQbGF5YmFj
a1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKGJvb2wpIGZpbmFsOwpAQCAtMTE2OCw2ICsxMTcyLDcg
QEAgcHJpdmF0ZToKICAgICBNZWRpYVByb3ZpZGVyIG1fbWVkaWFQcm92aWRlcjsKIAogI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9oYXNOZWVka2V5TGlzdGVu
ZXIgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJLaXRNZWRpYUtleXM+IG1fd2ViS2l0TWVkaWFL
ZXlzOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAppbmRleCA3NGIzYWE3ZDdiZGIw
MGEyNjc1NmEwMjM2NTY2ZjM2ODgxMmJjZTNiLi4xYTdhNTYyN2RiY2E2NDFiNDljZTdlNTZlNjcx
NmUzMThhOTg4YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCkBAIC0yNywxMyArMjcsMjcg
QEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNRW5jcnlwdGlvblNj
aGVtZSB7CitlbnVtIGNsYXNzIENETUVuY3J5cHRpb25TY2hlbWUgOiB1aW50OF90IHsKICAgICBj
ZW5jLAogICAgIGNiY3MsCiB9OwogCiB9CiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWU+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9u
U2NoZW1lLAorICAgICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lOjpjZW5jLAorICAg
ICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lOjpjYmNzCisgICAgPjsKK307CisKK30K
KwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUZhY3RvcnkuY3BwCmluZGV4IDRiYjU5OWZhODA3M2QzYjg1NWQ4NDYxNzg2MTlkYmMw
MjYxMDU4ZjIuLjY2MWQ1YjRlYjc1MmVhNTVhYTJkOGU0ZjllZWQ2Mzg2ZWRkYWM1ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3Rv
cnkuY3BwCkBAIC01Nyw2ICs1NywxMSBAQCB2b2lkIENETUZhY3Rvcnk6OnVucmVnaXN0ZXJGYWN0
b3J5KENETUZhY3RvcnkmIGZhY3RvcnkpCiAgICAgcmVnaXN0ZXJlZEZhY3RvcmllcygpLnJlbW92
ZUFsbCgmZmFjdG9yeSk7CiB9CiAKK3ZvaWQgQ0RNRmFjdG9yeTo6cmVzZXRGYWN0b3JpZXMoKQor
eworICAgIHBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMocmVnaXN0ZXJlZEZhY3RvcmllcygpKTsK
K30KKwogI2lmICFVU0UoR1NUUkVBTUVSKSAmJiAhVVNFKEFWRk9VTkRBVElPTikKIHZvaWQgQ0RN
RmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZh
Y3RvcnkuaAppbmRleCA0NGVhYWIwN2U3NTdhZmU1OGI1MzYxZjVhZjEyYjI0Nzc2YTAzNTJlLi5l
MWFlNjA0MjE2YTk3NTkyZjMzY2I4MzYyZmMyYzIxYTJiMDg4YjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCkBAIC00Miw3
ICs0Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRl
PiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICBzdGF0aWMgVmVjdG9yPENETUZh
Y3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiByZWdpc3RlcmVkRmFjdG9yaWVzKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXRGYWN0b3JpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCByZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJGYWN0b3J5KENETUZhY3RvcnkmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
LmgKaW5kZXggOGY5ZjNlYjg3NDVjMzUyMDI4MzE0YzYwNmQyODlkNGUzZjcxYTA0OC4uN2ZlMDlm
MGFmM2ZkNzMwMzYyMzVjMjI3N2JhY2RlYmEwNjQ5YjE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC01Miw2ICs1
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgTW9jaywKICAgICAgICAgQ2xlYXJLZXksCiAgICAgICAg
IEZhaXJQbGF5U3RyZWFtaW5nLAorICAgICAgICBSZW1vdGUsCiAgICAgfTsKICAgICB2aXJ0dWFs
IEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCA9IDA7CiAKQEAg
LTY4LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBj
cmVhdGVTZXNzaW9uKCkgPSAwOwogCi0gICAgZW51bSBjbGFzcyBIRENQU3RhdHVzIHsKKyAgICBl
bnVtIGNsYXNzIEhEQ1BTdGF0dXMgOiB1aW50OF90IHsKICAgICAgICAgVW5rbm93biwKICAgICAg
ICAgVmFsaWQsCiAgICAgICAgIE91dHB1dFJlc3RyaWN0ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CmluZGV4IDg3MjVhMzFkOGJiM2UyMmJlMjFkZjA3ZTMyMGIzNmU3NTAzODZlMWEuLmQ0NjRiNzRk
MWM3MjAyYTlhMzM5ZGZmNjVkMDZlMDgyMDg5NjlkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CkBAIC03Miw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKICAgICB1c2luZyBNZXNz
YWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgdXNp
bmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNl
c3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywg
T3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYm
IG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgPSAwOwogCi0gICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgeworICAgIGVu
dW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCiAg
ICAgICAgIE5vU2Vzc2lvbkRhdGEsCiAgICAgICAgIE1pc21hdGNoZWRTZXNzaW9uVHlwZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0
YXR1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3Rh
dHVzLmgKaW5kZXggYWQ5Njk2MjM2MDRjZDE0NzA1NWEyN2I3MzM2ZjY3N2MwYjNhZjJjNC4uY2M1
ZTcxODZmNzRlZjhlODE0Y2IzYWY3NTVlMTYxYTY1YzIwODgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKQEAgLTMw
LDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETUtl
eVN0YXR1cyB7CitlbnVtIGNsYXNzIENETUtleVN0YXR1cyA6IHVpbnQ4X3QgewogICAgIFVzYWJs
ZSwKICAgICBFeHBpcmVkLAogICAgIFJlbGVhc2VkLApAQCAtNDQsNCArNDYsMjAgQEAgZW51bSBj
bGFzcyBDRE1LZXlTdGF0dXMgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUtleVN0
YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6Q0RN
S2V5U3RhdHVzLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6VXNhYmxlLAorICAgIFdlYkNv
cmU6OkNETUtleVN0YXR1czo6RXhwaXJlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlJl
bGVhc2VkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6T3V0cHV0UmVzdHJpY3RlZCwKKyAg
ICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6Ok91dHB1dERvd25zY2FsZWQsCisgICAgV2ViQ29yZTo6
Q0RNS2V5U3RhdHVzOjpTdGF0dXNQZW5kaW5nLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6
SW50ZXJuYWxFcnJvcgorICAgID47Cit9OworCit9CiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaAppbmRleCA2MTJkNjQ1
ZmFhNTI0OGY3MWYxYzE1NjdmNDUwN2U4OWYzYjMxY2U1Li44NTI1ODdjZWRhMDUxMjE0NDc5NTIy
ZmFjMzhlNGMwZmI5ODc0OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5o
CkBAIC00OCw2ICs0OCw2NyBAQCBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiB7CiAg
ICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyIHsgQ0RNUmVxdWlyZW1lbnQ6
Ok9wdGlvbmFsIH07CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlIHsgQ0RNUmVx
dWlyZW1lbnQ6Ok9wdGlvbmFsIH07CiAgICAgVmVjdG9yPENETVNlc3Npb25UeXBlPiBzZXNzaW9u
VHlwZXM7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGxhYmVsOwor
ICAgICAgICBlbmNvZGVyIDw8IGluaXREYXRhVHlwZXM7CisgICAgICAgIGVuY29kZXIgPDwgYXVk
aW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGVuY29kZXIgPDwgdmlkZW9DYXBhYmlsaXRpZXM7Cisg
ICAgICAgIGVuY29kZXIgPDwgZGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBlbmNvZGVy
IDw8IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZW5jb2RlciA8PCBzZXNzaW9uVHlwZXM7Cisg
ICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFs
PENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAgICAgZGVjb2RlciA+PiBs
YWJlbDsKKyAgICAgICAgaWYgKCFsYWJlbCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGluaXREYXRhVHlwZXM7Cisg
ICAgICAgIGRlY29kZXIgPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgaWYgKCFpbml0RGF0YVR5
cGVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gYXVkaW9DYXBhYmlsaXRpZXM7CisgICAgICAg
IGRlY29kZXIgPj4gYXVkaW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGlmICghYXVkaW9DYXBhYmls
aXRpZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlv
bmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAg
ICAgZGVjb2RlciA+PiB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgaWYgKCF2aWRlb0NhcGFi
aWxpdGllcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0
aW9uYWw8Q0RNUmVxdWlyZW1lbnQ+IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKKyAgICAgICAgZGVj
b2RlciA+PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJ
ZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgCisg
ICAgICAgIE9wdGlvbmFsPENETVJlcXVpcmVtZW50PiBwZXJzaXN0ZW50U3RhdGU7CisgICAgICAg
IGRlY29kZXIgPj4gcGVyc2lzdGVudFN0YXRlOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0
ZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8
VmVjdG9yPENETVNlc3Npb25UeXBlPj4gc2Vzc2lvblR5cGVzOworICAgICAgICBkZWNvZGVyID4+
IHNlc3Npb25UeXBlczsKKyAgICAgICAgaWYgKCFzZXNzaW9uVHlwZXMpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RG
TW92ZSgqbGFiZWwpLAorICAgICAgICAgICAgV1RGTW92ZSgqaW5pdERhdGFUeXBlcyksCisgICAg
ICAgICAgICBXVEZNb3ZlKCphdWRpb0NhcGFiaWxpdGllcyksCisgICAgICAgICAgICBXVEZNb3Zl
KCp2aWRlb0NhcGFiaWxpdGllcyksCisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVy
LAorICAgICAgICAgICAgKnBlcnNpc3RlbnRTdGF0ZSwKKyAgICAgICAgICAgIFdURk1vdmUoKnNl
c3Npb25UeXBlcyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETU1lZGlhQ2FwYWJpbGl0eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgKaW5kZXggOTAxYjU0ZmYwNTA4ZWRhOWJiYjg4YzVj
MWRiODY1MzhkY2UxNDI4Mi4uZjg0YTBkMTJhYjRjZDUyMGUzZjBlMDRkNjRlYmVmYzYzMTYyNTg3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
TWVkaWFDYXBhYmlsaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgKQEAgLTM5LDYgKzM5LDM5IEBAIHN0cnVjdCBDRE1N
ZWRpYUNhcGFiaWxpdHkgewogICAgIFN0cmluZyBjb250ZW50VHlwZTsKICAgICBTdHJpbmcgcm9i
dXN0bmVzczsKICAgICBPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1lPiBlbmNyeXB0aW9uU2No
ZW1lOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlw
ZTsKKyAgICAgICAgZW5jb2RlciA8PCByb2J1c3RuZXNzOworICAgICAgICBlbmNvZGVyIDw8IGVu
Y3J5cHRpb25TY2hlbWU7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Cisg
ICAgc3RhdGljIE9wdGlvbmFsPENETU1lZGlhQ2FwYWJpbGl0eT4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlOworICAg
ICAgICBkZWNvZGVyID4+IGNvbnRlbnRUeXBlOworICAgICAgICBpZiAoIWNvbnRlbnRUeXBlKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IHJvYnVzdG5lc3M7CisgICAgICAgIGRlY29kZXIgPj4gcm9idXN0bmVzczsKKyAgICAgICAg
aWYgKCFyb2J1c3RuZXNzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBPcHRpb25hbDxPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1lPj4gZW5jcnlwdGlvblNj
aGVtZTsKKyAgICAgICAgZGVjb2RlciA+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBpZiAo
IWVuY3J5cHRpb25TY2hlbWUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqY29udGVudFR5cGUpLAorICAg
ICAgICAgICAgV1RGTW92ZSgqcm9idXN0bmVzcyksCisgICAgICAgICAgICBXVEZNb3ZlKCplbmNy
eXB0aW9uU2NoZW1lKSwKKyAgICAgICAgfX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNTWVzc2FnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETU1lc3NhZ2VUeXBlLmgKaW5kZXggZTVmNzk2YTllMGUwNzUxYWEwMjc4MmI5YjY2NmNh
MjMxZWY3ZTYwOS4uOTViZjI4YzJhYTk0YTNkYTUwNDViNWVjMDBmMzU4Y2QyNmQ5NWNhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2Fn
ZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1N
ZXNzYWdlVHlwZS5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotZW51bSBjbGFzcyBDRE1NZXNzYWdlVHlwZSB7CitlbnVtIGNsYXNzIENETU1lc3NhZ2VUeXBl
IDogdWludDhfdCB7CiAgICAgTGljZW5zZVJlcXVlc3QsCiAgICAgTGljZW5zZVJlbmV3YWwsCiAg
ICAgTGljZW5zZVJlbGVhc2UsCkBAIC00MSw0ICs0MywxOCBAQCBlbnVtIGNsYXNzIENETU1lc3Nh
Z2VUeXBlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETU1lc3Nh
Z2VUeXBlLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3Qs
CisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwKKyAgICAg
ICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZWxlYXNlLAorICAgICAgICBXZWJD
b3JlOjpDRE1NZXNzYWdlVHlwZTo6SW5kaXZpZHVhbGl6YXRpb25SZXF1ZXN0CisgICAgPjsKK307
CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5kZXggMjVm
NzgxNmEyZmUxZGE2ZjkwYzJmZWY3Nzc1NTE0MDZhYTBmNGEwMy4uNzQ5ZmNkZjJmYzM3YTVlOWZl
NjI1ZDUzYTNlMDExYzcxYzRhZWQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNDEsMTEgKzQxLDExIEBAIGNsYXNz
IENETVByaXZhdGUgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETVByaXZhdGUoKSA9IGRlZmF1
bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0
cmluZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0
ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Nv
bmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3Qg
U3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENETVJl
cXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1
ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUmVxdWlyZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVJlcXVpcmVtZW50LmgKaW5kZXggNjlhYzEyZDMxNmJmNjY1N2JiMGEyNGRhZjdh
ZTRmYTBmZDRmMWM5OC4uNWIwYjc3ODBkMjdkZmViMTkzZGNlNmVjZGE3MTc4NTI4ZjdjZDU5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVx
dWlyZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXF1aXJlbWVudC5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCB7CitlbnVtIGNsYXNzIENETVJlcXVpcmVt
ZW50IDogdWludDhfdCB7CiAgICAgUmVxdWlyZWQsCiAgICAgT3B0aW9uYWwsCiAgICAgTm90QWxs
b3dlZApAQCAtNDAsNCArNDIsMTcgQEAgZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCB7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCwKKyAgICAg
ICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkLAorICAgICAgICBXZWJDb3JlOjpD
RE1SZXF1aXJlbWVudDo6T3B0aW9uYWwsCisgICAgICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50
OjpOb3RBbGxvd2VkCisgICAgPjsKK307CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1SZXN0cmljdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCmluZGV4IGM1MmUyODJhMTJlOTFhNDg4MTBiZDE4Yjg3
ZWI2YWQ2MzhmMjEwYTguLjljYTJhYzU5ZThiMTM1NDYzYTUyZGI0NWU4MDczMWY1MGM2OTRmM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJl
c3RyaWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVJlc3RyaWN0aW9ucy5oCkBAIC0zNiw2ICszNiwzOSBAQCBzdHJ1Y3QgQ0RNUmVzdHJpY3Rp
b25zIHsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVEZW5pZWQgeyBmYWxzZSB9OwogICAgIEhhc2hTZXQ8Q0RN
U2Vzc2lvblR5cGUsIFdURjo6SW50SGFzaDxDRE1TZXNzaW9uVHlwZT4sIFdURjo6U3Ryb25nRW51
bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGRpc3RpbmN0aXZlSWRlbnRpZmllckRl
bmllZDsKKyAgICAgICAgZW5jb2RlciA8PCBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAg
IGVuY29kZXIgPDwgZGVuaWVkU2Vzc2lvblR5cGVzOworICAgIH0KKworICAgIHRlbXBsYXRlIDxj
bGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxDRE1SZXN0cmljdGlvbnM+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZGlzdGlu
Y3RpdmVJZGVudGlmaWVyRGVuaWVkOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRl
bnRpZmllckRlbmllZDsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJv
b2w+IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50
U3RhdGVEZW5pZWQ7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlRGVuaWVkKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxIYXNoU2V0PENE
TVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICAg
ICAgZGVjb2RlciA+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAgICAgIGlmICghZGVuaWVkU2Vz
c2lvblR5cGVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBy
ZXR1cm4ge3sKKyAgICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQsCisgICAg
ICAgICAgICAqcGVyc2lzdGVudFN0YXRlRGVuaWVkLAorICAgICAgICAgICAgV1RGTW92ZSgqZGVu
aWVkU2Vzc2lvblR5cGVzKSwKKyAgICAgICAgfX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNU2Vzc2lvblR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKaW5kZXggNjA1NzRhNWE2OTNhOTZjNDlmNDlmYjczNDk2
ZWQ3NWI3ZTFlNmZiYi4uZTA3YzMwMDI3OTMwNWY3NzQzZjIyZmNmNTQwNmYyY2ZhNjgxZGUyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vz
c2lvblR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1TZXNzaW9uVHlwZS5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSB7CitlbnVtIGNsYXNzIENETVNlc3Npb25U
eXBlIDogdWludDhfdCB7CiAgICAgVGVtcG9yYXJ5LAogICAgIFBlcnNpc3RlbnRVc2FnZVJlY29y
ZCwKICAgICBQZXJzaXN0ZW50TGljZW5zZQpAQCAtNDAsNCArNDIsMTcgQEAgZW51bSBjbGFzcyBD
RE1TZXNzaW9uVHlwZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNU2Vzc2lvblR5
cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpD
RE1TZXNzaW9uVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFy
eSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29y
ZCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlCisg
ICAgPjsKK307CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggNDUxMTFkYzc1YjU1MDgwY2VmNGU1ZmIzOGFl
MjYzM2IzOWVhNzIzMy4uODY0ZDZlM2RlODNiMDJjM2IxYzBkM2FkYjU2NTdiM2NlN2I2MTk4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJDRE1SZXN0cmljdGlv
bnMuaCIKICNpbmNsdWRlICJDRE1TZXNzaW9uVHlwZS5oIgorI2luY2x1ZGUgIkluaXREYXRhUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMjkwLDEwICsyOTEsMTMgQEAgYm9vbCBDRE1GYWN0
b3J5Q2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQog
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpDRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiBDRE1Q
cml2YXRlQ2xlYXJLZXk6On5DRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAKLWJvb2wg
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QKIHsKLSAgICAvLyBga2V5aWRzYCBh
bmQgJ2NlbmMnIGFyZSB0aGUgb25seSBzdXBwb3J0ZWQgaW5pdCBkYXRhIHR5cGUuCi0gICAgcmV0
dXJuIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMi
KSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJjZW5jIikg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAid2VibSIpKTsK
KyAgICByZXR1cm4geworICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5OjprZXlpZHNOYW1lKCksCisg
ICAgICAgIEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCksCisgICAgICAgIEluaXREYXRhUmVn
aXN0cnk6OndlYm1OYW1lKCksCisgICAgfTsKIH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNQZXJz
aXN0ZW50TGljZW5zZVR5cGUoY29uc3QgVmVjdG9yPENETVNlc3Npb25UeXBlPiYgdHlwZXMpCkBA
IC0zMzcsNyArMzQxLDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzQ29uZmln
dXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGUKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRo
Q29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Citib29sIENETVByaXZhdGVD
bGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNl
c3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbikgY29uc3QKIHsKICAgICAvLyBPbmx5IHN1cHBvcnQgdGhlICd0ZW1wb3Jh
cnknIGFuZCAncGVyc2lzdGVudC1saWNlbnNlJyBzZXNzaW9uIHR5cGVzLgogICAgIGlmIChzZXNz
aW9uVHlwZSAhPSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5ICYmIHNlc3Npb25UeXBlICE9IENE
TVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkKQEAgLTM0NSwxMCArMzQ5LDEwIEBAIGJv
b2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRp
b24oQ0RNU2Vzc2lvblR5cGUmIHNlCiAgICAgcmV0dXJuIHN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzUm9i
dXN0bmVzcyhjb25zdCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmlu
Zz4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdAogewog
ICAgIC8vIE9ubHkgZW1wdHkgYHJvYnVzdG5lc3NgIHN0cmluZyBpcyBzdXBwb3J0ZWQuCi0gICAg
cmV0dXJuIHJvYnVzdG5lc3MuaXNFbXB0eSgpOworICAgIHJldHVybiB7IGVtcHR5QXRvbSgpIH07
CiB9CiAKIENETVJlcXVpcmVtZW50IENETVByaXZhdGVDbGVhcktleTo6ZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKQEAgLTQ5OCw3ICs1MDIsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQg
Zm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJl
Y2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDY3MDRhZTdhOTU3ZjMyZmUxZjg0
OTgzZWQzYjNmNjUwMmE1MzE1YTIuLjRhYjlkZTBmMDJjZWViYjIwYTkzY2RmNjFlM2I3NzBmNWZk
ZTgyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNzQsMTEgKzc0LDExIEBAIHB1
YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRl
Q2xlYXJLZXkoKTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0
cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0
RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRl
ZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwot
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25U
eXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAg
IGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Np
b25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwog
ICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29u
c3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQo
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBl
ck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29u
c3QgZmluYWw7CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBtX3Bh
cmVudEluc3RhbmNlKHBhcmVudCkgeyB9CiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDU3ZGZj
YmY0YmM3YzQ4ODQ0ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIuLmRiMGIyZjhhN2UwZjI2OTZhMWQ4
ZGI2ZjRkNGY0N2FhZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2NTcsMTQgQEAgdm9pZCBNZWRpYVBs
YXllcjo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFuY2Up
CiAKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRTaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1fc2hvdWxkQ29udGludWVBZnRlcktl
eU5lZWRlZCA9IHNob3VsZDsKKyAgICBtX3ByaXZhdGUtPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRpZgorCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXI6OmR1
cmF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5kdXJhdGlvbk1lZGlhVGlt
ZSgpOwpAQCAtMTMxMiw5ICsxMzIwLDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBNZWRpYVBsYXll
cjo6Y2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKICAgICByZXR1
cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChrZXlJZCk7CiB9CiAKLWJv
b2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgTWVk
aWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKLSAgICByZXR1cm4g
Y2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERhdGEpOworICAgIGNsaWVudCgpLm1l
ZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKIH0KIAogU3RyaW5nIE1lZGlhUGxheWVyOjpt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdlNmNiOGEzOTBkZjdmZTFhN2FhZTAx
NzM5ZGM5NDhmNzc2NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBjNTY5ZTY3YTQxZTEyMGI3NjQwZWZh
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aApAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQogICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNh
Y2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAjZW5kaWYKIApA
QCAtMzY2LDYgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0
aEluc3RhbmNlKENETUluc3RhbmNlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyAgICBib29sIHNob3VsZENvbnRpbnVl
QWZ0ZXJLZXlOZWVkZWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQ7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBwYXVzZWQoKSBjb25zdDsKICAgICBib29sIHNl
ZWtpbmcoKSBjb25zdDsKIApAQCAtNTE5LDcgKzUyNCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVk
S2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3Q7Ci0gICAgYm9vbCBrZXlOZWVk
ZWQoVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkq
IGluaXREYXRhKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
OwogI2VuZGlmCiAKQEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVhbTsK
ICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkIHsg
ZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKaW5kZXggOWY3ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0YjBkY2ExY2MxNzVhOC4uN2E4MjA0
NzBmOTk5YWM5OWE2YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI0Myw2
ICsyNDMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdmlydHVhbCB2b2lkIHNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkgeyB9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCA0ZmM2Nzg3ZGQ4
ZDkwN2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJhYmZjZGU1YTBkNGI4MTE4ZDAzY2M5
MmYxZDYxOWQ2MWQ3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5jcHAKQEAgLTI0Nyw5ICsyNDcsOSBAQCBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWlu
Zzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVs
dDsKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZygpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1
cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QK
K1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRl
ZEluaXREYXRhVHlwZXMoKSBjb25zdAogewotICAgIHJldHVybiB2YWxpZEluaXREYXRhVHlwZXMo
KS5jb250YWlucyhpbml0RGF0YVR5cGUpOworICAgIHJldHVybiBjb3B5VG9WZWN0b3IodmFsaWRJ
bml0RGF0YVR5cGVzKCkpOwogfQogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
c3QgQ0QKICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwog
fQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlw
ZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK2Jvb2wgQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAogewogICAgIGlmIChzZXNzaW9uVHlw
ZSA9PSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAgICAgICAgIGlmIChjb25maWd1cmF0
aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCkBAIC0zMTYs
MTMgKzMxNiwxMCBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNT
ZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3NpbwogICAgIHJldHVybiBzdXBwb3J0
c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNz
KSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAgICBpZiAocm9idXN0bmVzcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgLy8gRklYTUU6IERldGVybWluZSBh
biBlbnVtZXJhdGVkIGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1ZXMgc3VwcG9ydGVkIGJ5IEZQUy4K
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHsgZW1wdHlBdG9tKCkgfTsKIH0KIAogQ0RN
UmVxdWlyZW1lbnQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0
IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyArMzYzLDcgQEAgYm9vbCBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogCiBib29sIENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7
Ci0gICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICgh
dmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBzaW5mTmFtZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IDUzODY5NjlmOTQ5NzZmMzgz
NjgwMTg3NDFiYWZkMTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFkN2FmYmFlMmQyYzU2MTJmODRiNDM0
YzBmMTBmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC01
NSwxMSArNTUsMTEgQEAgcHVibGljOgogICAgIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygp
OwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogCi0gICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZp
Z3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBv
cnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYs
IGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBW
ZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBj
b25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJl
bWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rp
b25zJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJl
VW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDcwZWFjMzZhNDc5Nzgx
NWExYWYyNGUyZDU3YjAyMjZmYjQ5NzljNDYuLjhhNGUxNDgwNjkxZTFkOGI2ZmU4MTI2NGI5Mzhi
OWZlZGUzMWMyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTkzMSw3ICsxOTMxLDkgQEAgYm9v
bCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVz
b3VyY2VMb2FkaW5nUmVxdWVzdFIKIAogICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gaW5p
dERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0g
ICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkp
CisgICAgICAgIG1fb3duZXItPnBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOwor
CisgICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzZXRSZXF1ZXN0
Rm9yS2V5KGtleVVSSSwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IGIx
MWY3MWE5YjVlMzhiZjY5OGIxMzk0OWRkZGU4NmYzZGQ5OTRjYzEuLjdmMGUyZDVhYzAwZTYwNjJk
MzViYWM0NWQ2ZTFlNzFkNDQwM2U4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApAQCAtMTIw
LDcgKzEyMCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbgogICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRT
ZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNz
aW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggNzMyNjc3NWY0N2Qz
ODU4YjA1Zjc4NzhiNzM1NzRhNDY0N2NiOGQzMS4uZjA5YjI4OWEzM2U3ZWMwNDBmMDRkMWY2Zjk5
YWY4ZWY5MGQ5NzcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTU4MCw3ICs1ODAs
NyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUo
KSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURh
dGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CkBAIC03MTEsNyArNzExLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0gZWxzZQotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0
KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9j
dXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlS
ZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJl
c3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1
NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5
UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIHN0cnVjdCBvYmpjX21l
dGhvZF9kZXNjcmlwdGlvbiBtZXRob2QgPSBwcm90b2NvbF9nZXRNZXRob2REZXNjcmlwdGlvbihA
cHJvdG9jb2woQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9yKGNvbnRlbnRL
ZXlTZXNzaW9uOmNvbnRlbnRLZXlSZXF1ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVTKTsKQEAgLTEx
NDAsNyArMTE0MCw4IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fc2Vzc2lvbklkID0gc2Vzc2lvbklkOwotICAgIG1fY2xpZW50LT5zZXNzaW9uSWRD
aGFuZ2VkKG1fc2Vzc2lvbklkKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFu
Z2VkKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKiBncm91cCwgTlNEYXRhICpzZXNzaW9uSWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGIzN2M0NDExMzE0OTg4Nzk1NDZlYzhh
NTdhMGRkOGUxMWY3ODQ2OTcuLmQ3OGM3Y2FhNjAyMDgzZmEzYjgzYjMzYzc2MGRkNGY0MTEyZDYz
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTY3OCw5ICsxNjc4LDEyIEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdP
ZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdW
aWV3KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNp
emVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CiAKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0g
ICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCisgICAgICAg
IHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgorI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAg
ICAgICAgIGlmIChtX2NkbUluc3RhbmNlKSB7CkBAIC0xNzEzLDcgKzE3MTYsOSBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXNvdXJjZShBVkFzc2V0UgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKKyAgICAg
ICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisKKyAgICAgICAgaWYgKCFw
bGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChrZXlJRCwgYXZS
ZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXgg
Y2U1ZDhmN2Q2YmRmMzhiNTkyMjA5MzAyYTZlNmQ3MWIzNjk2NjMyZC4uMGE0ZDY1NzUwYTE1NGM1
ZTVlZTE5YjU4MzBjOWZiYWUwMDAxZTNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKQEAgLTk4LDYgKzk4LDExIEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OnNl
dFN1cHBvcnRlZERhdGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogICAgICAgICBtX3N1
cHBvcnRlZERhdGFUeXBlcy5hcHBlbmQodHlwZSk7CiB9CiAKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6
OnNldFN1cHBvcnRlZFJvYnVzdG5lc3MoVmVjdG9yPFN0cmluZz4mJiByb2J1c3RuZXNzZXMpCit7
CisgICAgbV9zdXBwb3J0ZWRSb2J1c3RuZXNzID0gcm9idXN0bmVzc2VzLm1hcChbXSAoYXV0byYg
cm9idXN0bmVzcykgLT4gQXRvbVN0cmluZyB7IHJldHVybiByb2J1c3RuZXNzOyB9KTsKK30KKwog
c3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IE1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29u
c3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNPihtYWtlV2Vha1B0
cigqdGhpcykpOwpAQCAtMTA4LDExICsxMTMsMTggQEAgTW9ja0NETTo6TW9ja0NETShXZWFrUHRy
PE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5KQogewogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRz
SW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3Rv
cjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QKIHsK
ICAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRE
YXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIG1fZmFjdG9yeS0+c3VwcG9ydGVkRGF0YVR5cGVzKCk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06OnN1cHBvcnRlZFJvYnVzdG5l
c3NlcygpIGNvbnN0Cit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG1fZmFj
dG9yeS0+c3VwcG9ydGVkUm9idXN0bmVzcygpOworICAgIHJldHVybiB7IH07CiB9CiAKIGJvb2wg
TW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKQEAgLTEzOSw3ICsxNTEsNyBAQCBib29sIE1v
Y2tDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1vY2tDRE06OnN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiBz
ZXNzaW9uVHlwZSwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK2Jv
b2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1l
ZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mKSBjb25zdAogewogICAgIGlmICghbV9mYWN0b3J5IHx8ICFtX2ZhY3RvcnktPnN1
cHBvcnRlZFNlc3Npb25UeXBlcygpLmNvbnRhaW5zKHNlc3Npb25UeXBlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTQ4LDEzICsxNjAsNiBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vz
c2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiBzZXNzaW9uVAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzUm9idXN0bmVzcyhj
b25zdCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZmFjdG9yeSkKLSAg
ICAgICAgcmV0dXJuIG1fZmFjdG9yeS0+c3VwcG9ydGVkUm9idXN0bmVzcygpLmNvbnRhaW5zKHJv
YnVzdG5lc3MpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogTWVkaWFLZXlzUmVxdWlyZW1lbnQg
TW9ja0NETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0
CiB7CiAgICAgaWYgKG1fZmFjdG9yeSkKQEAgLTE5OSw3ICsyMDQsNyBAQCBib29sIE1vY2tDRE06
OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogCiBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKSBjb25zdAogewotICAgIGlmICghc3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFU
eXBlKSkKKyAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0
YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBVTlVTRURfUEFSQU0oaW5pdERh
dGEpOwpAQCAtMzI1LDcgKzMzMCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3Ro
KCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZv
aWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9u
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0
YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMzMyw3
ICszMzgsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2Uu
ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUo
KSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmco
ImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCAzOTkwOWI5MzAzYTk0
YzkzNjhlYWEwZjYyNWY0YjY3ZTUyNTA1OWYxLi42Y2I5MTVjODUwMTU1OGYxMGJiOGZjNWIyZGE1
MjgzNTA0MGYwZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBA
IC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9u
VHlwZT4mIHN1cHBvcnRlZFNlc3Npb25UeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVk
U2Vzc2lvblR5cGVzOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0ZWRTZXNzaW9uVHlwZXMoVmVjdG9y
PE1lZGlhS2V5U2Vzc2lvblR5cGU+JiYgdHlwZXMpIHsgbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXMg
PSBXVEZNb3ZlKHR5cGVzKTsgfQogCi0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRl
ZFJvYnVzdG5lc3MoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZFJvYnVzdG5lc3M7IH0KLSAg
ICB2b2lkIHNldFN1cHBvcnRlZFJvYnVzdG5lc3MoVmVjdG9yPFN0cmluZz4mJiByb2J1c3RuZXNz
KSB7IG1fc3VwcG9ydGVkUm9idXN0bmVzcyA9IFdURk1vdmUocm9idXN0bmVzcyk7IH0KKyAgICBj
b25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIHN1cHBvcnRlZFJvYnVzdG5lc3MoKSBjb25zdCB7IHJl
dHVybiBtX3N1cHBvcnRlZFJvYnVzdG5lc3M7IH0KKyAgICB2b2lkIHNldFN1cHBvcnRlZFJvYnVz
dG5lc3MoVmVjdG9yPFN0cmluZz4mJik7CiAKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudDsgfQogICAgIHZvaWQgc2V0RGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KE1lZGlhS2V5c1JlcXVpcmVtZW50IHJlcXVpcmVtZW50KSB7IG1f
ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50ID0gcmVxdWlyZW1lbnQ7IH0KQEAgLTkw
LDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBtX3BlcnNpc3Rl
bnRTdGF0ZVJlcXVpcmVtZW50IHsgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsIH07CiAg
ICAgVmVjdG9yPEF0b21TdHJpbmc+IG1fc3VwcG9ydGVkRGF0YVR5cGVzOwogICAgIFZlY3RvcjxN
ZWRpYUtleVNlc3Npb25UeXBlPiBtX3N1cHBvcnRlZFNlc3Npb25UeXBlczsKLSAgICBWZWN0b3I8
U3RyaW5nPiBtX3N1cHBvcnRlZFJvYnVzdG5lc3M7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IG1f
c3VwcG9ydGVkUm9idXN0bmVzczsKICAgICBWZWN0b3I8TWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1l
PiBtX3N1cHBvcnRlZEVuY3J5cHRpb25TY2hlbWVzOwogICAgIGJvb2wgbV9yZWdpc3RlcmVkIHsg
dHJ1ZSB9OwogICAgIGJvb2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CkBAIC0xMDks
MTEgKzEwOSwxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNb2NrQ0RN
SW5zdGFuY2U7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJp
bmcmKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERh
dGFUeXBlcygpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRS
b2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlv
bihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3Qg
ZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oTWVk
aWFLZXlTZXNzaW9uVHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2
ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgTWVkaWFL
ZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2lu
QW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZp
bmFsOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sm
JikgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391512</attachid>
            <date>2020-02-23 21:42:21 -0800</date>
            <delta_ts>2020-02-23 21:54:36 -0800</delta_ts>
            <desc>Part 2: WebKit + SharedBuffer</desc>
            <filename>bug-208090-20200223214220.patch</filename>
            <type>text/plain</type>
            <size>30116</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2MTAyYmNjODhjYWI3YjA2
OGI0ZjRlMmI1OTkyZjA3N2RkNGJlMzAuLjBhOGIzYTZmZGQ0OWRhMzRjYWM5ODcwNmQxNDc3MWQw
NDY3M2QwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDItMjMgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rl
cm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSBpcyBtYWRlIG1vcmUgZWZmaWNpZW50IGJ5IHVzaW5nIHRoZSBzYW1lIGVu
Y29kZS9kZWNvZGUgcGF0aCBhcyBpcyB1c2VkIGluCisgICAgICAgIFdlYkNvcmVBcmd1bWVudENv
ZGVyczogdGhlIFNoYXJlZEJ1ZmZlciBpcyBjb3BpZWQgaW50byBzaGFyZWQgbWVtb3J5LCBhbmQg
b25seSBhIGhhbmRsZSBpcyBwYXNzZWQgYWNyb3NzCisgICAgICAgIHRoZSBYUEMgYm91bmRhcnku
IFRoaXMgcmVxdWlyZXMgZXhpc3RpbmcgdXNlcnMgdG8gaGFuZGxlIHJlY2VpdmluZyBhIElQQzo6
U2hhcmVkQnVmZmVyRGF0YUhhbmRsZSBvbiB0aGUKKyAgICAgICAgcmVtb3RlIHNpZGUgb2YgdGhl
IFhQQyBib3VuZGFyeSwgYnV0IHRoaXMgaXMgdHJpdmlhbCwgYW5kIG1hbnkgY2FsbCBzaXRlcyBy
ZXF1aXJlIGEgU2hhcmVkQnVmZmVyIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBpbiB0aGUg
Zmlyc3QgcGxhY2UuIFRoaXMgY29kZSBjb3VsZCBiZSBpbXByb3ZlZCBieSBhbGxvd2luZyB0aGUg
U2hhcmVkTWVtb3J5IG9iamVjdCBiZSBhZG9wdGVkCisgICAgICAgIGJ5IHRoZSBTaGFyZWRCdWZm
ZXIgb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUsIGxlYWRpbmcgdG8gemVyby1jb3B5IGRlY29kaW5n
LCBidXQgaXMgbm90IGRvbmUgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVy
QXR0YWNobWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1l
VGFza0RpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2Vy
dEF0dGFjaG1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
IDIwMjAtMDItMjEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQXBwLWJvdW5kIGRvbWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBT
ZXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDY3
MmJlYzQ4ZWE3OWM2ODJjMTI0NWU1MjZmMDQ4OGM2Nzk5NjgwYjcuLjUzYTgwNzgxN2IyYTZiMWRk
ZjUxMzQ1ODZlZjJlNzEwMmY2ODI0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHAKQEAgLTE0OSwxMyArMTQ5LDEzIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9v
CiAgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KCFtX3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSB7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0
aCB9KTsKKyAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0pOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiBmb3JtRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5o
CmluZGV4IGQzM2NiZmYxMDg5Y2MxMDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQuLjUwODAwZjM1
MDIyMzYyZjk2Y2EyMWI1ZTdlYmQwN2Q4ZDQyYTJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEYXRhUmVmZXJl
bmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiBj
bGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaAppbmRleCBhNzQ5YWFiODcwMDU0Y2ViNjkwZTVmMTRmNDA3NTYzZmZjZDBm
OWI4Li44OGY0ZjJmYTY0MjYzMzQ5YjdhZDIyZDA2ZjQzYTI3ZjcyMzM1MWE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC05NiwxMiArOTYsNiBAQCBz
dHJ1Y3QgQ29kaW5nVHlwZSB7CiAgICAgdHlwZWRlZiBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsKIAotY2xhc3MgRGF0YVJlZmVyZW5jZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDb2Rp
bmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7Ci0gICAgdHlwZWRlZiBE
YXRhUmVmZXJlbmNlIFR5cGU7Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4KIHN0cnVj
dCBDb2RpbmdUeXBlPHN0ZDo6dHVwbGU8VHMuLi4+PiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PHR5cGVuYW1lIENvZGluZ1R5cGU8VHM+OjpUeXBlLi4uPiBUeXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCmluZGV4
IGRhZDQ2NjA0NjMyZTkyNjlmMTkxZDE1YzgwZGQyMTFlNTQ4NGU3YTMuLmJmYjMzOTU3Njk2ZjJl
NzJhMjM0ODIzNDIyNTJiNzJiZDc5NDI4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKQEAgLTI1LDQwICsyNSw1
MSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCiBjbGFzcyBT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQorICAgIHsKKyAgICB9CisgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgeworICAgIH0KICAgICBTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6
IG1fZGF0YShidWZmZXIpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKHN0ZDo6bWFrZV9w
YWlyKGRhdGEsIHNpemUpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpKQorICAgIHsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIp
OworICAgIH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7
IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorCisgICAgY29uc3QgY2hh
ciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51
bGxwdHI7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9i
dWZmZXItPnNpemUoKSA6IDA7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKICAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgc3dpdGNoT24obV9kYXRh
LAotICAgICAgICAgICAgW2VuY29kZXIgPSAmZW5jb2Rlcl0gKGNvbnN0IFJlZjxjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIG11dGFibGUgewotICAgICAgICAgICAgICAgIHVp
bnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICAgICAgICAgICAgICBlbmNv
ZGVyLT5yZXNlcnZlKGJ1ZmZlclNpemUgKyBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgICAg
ICAgICAqZW5jb2RlciA8PCBidWZmZXJTaXplOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCksIDEpOwot
ICAgICAgICAgICAgfSwgW2VuY29kZXIgPSAmZW5jb2Rlcl0gKGNvbnN0IHN0ZDo6cGFpcjxjb25z
dCB1aW50OF90Kiwgc2l6ZV90PiYgcGFpcikgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgdWlu
dDY0X3QgYnVmZmVyU2l6ZSA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgICAgIGVuY29kZXIt
PnJlc2VydmUoYnVmZmVyU2l6ZSArIHNpemVvZih1aW50NjRfdCkpOwotICAgICAgICAgICAgICAg
ICplbmNvZGVyIDw8IGJ1ZmZlclNpemU7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLCAxKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgKTsKKyAgICAgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKKyAgICB9CisKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4gYnVmZmVyOworICAgICAgICBkZWNvZGVyID4+IGJ1ZmZlcjsKKyAgICAgICAg
aWYgKCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4geyBXVEZNb3ZlKCpidWZmZXIpIH07CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZhcmlh
bnQ8c3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Q+LCBSZWY8Y29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggMjYwNDkwZmI3YjU2YTg4Y2ZmMGQ5Yjg5YzFhNzE2OGFlZDBkMTg1Yy4uNzE2NGMz
NzM0MzEwMWZlZjBjM2Q1ZjBkYjY3YzUyY2Q2MThiNWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMjcsNiArMjI3LDkgQEAgZGVmIHR5cGVzX3RoYXRf
Y2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6TUROU1JlZ2lz
dGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpNZWRpYVJlY29yZGVySWRlbnRpZmllcics
CisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSVENEZWNvZGVySWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDhjOWZhMjFh
ZjM4YTcxNjJjNmMyMDllOTM5NDY4OTA2YTI1YzNjYTMuLjVhZGIzN2Q4YjViZGVmMDBhNTY2ZjRh
MDJkYjY0YmI5NWRhYjAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMzIwMyw0ICszMjAzLDE4IEBAIE9wdGlvbmFsPFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVk
UGxhdGZvCiB9CiAjZW5kaWYKIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK09wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggZTM4MTRlMjFmODMzNmFhZjJmNDQ0MzIzMmUzNDRlMDA3NGRhZTJhMS4uZTk1MzU2OTMwNGY3
MjE5M2I4ZGEyOGQ4ODZiYjVmODJiMjc1NmIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5n
VGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5
UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwpAQCAtODI5LDYgKzgzMCwxMSBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWVWYWx1ZT4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOworICAgIHN0
YXRpYyBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29k
ZXImKTsKK307CisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5k
ZXggNzg5N2UyOGUzYzhjYTIyNzQ1MWZkNTc0MWY3ZGQxNTVjYzdkZTE1Zi4uMzQzYmExYjEwMzcz
MjQyNWI2MDI3N2U4ZjU4MTBmMTdkODFhYWI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNp
bXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1NQSS5oIgogI2ltcG9y
dCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKQEAgLTE4MywxMyArMTg0LDEy
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmFnQ2FyZXRSZWN0KGNvbnN0IEludFJlY3QmIGRy
YWdDYXJldFJlY3QpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiBhdHRhY2htZW50LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxh
dGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRhY2htZW50
LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCiB7CiAgICAgaWYgKGRhdGFSZWZlcmVuY2Uu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7
Ci0gICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW3BhZ2VDbGllbnQoKS5hbGxvY0ZpbGVX
cmFwcGVySW5zdGFuY2UoKSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpXSk7CisgICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0
TlMoW3BhZ2VDbGllbnQoKS5hbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6ZGF0YVJlZmVyZW5jZS5idWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKV0pOwogICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpwcmVm
ZXJyZWRGaWxlTmFtZV07CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZmlsZVdyYXBw
ZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZjk3MWY5NmY0ZGY4M2ViZjUwNWIyZGRjNGFlMjdlNmNhN2Q1Y2M3NS4uMGZiZjAzNTIyZTVl
Zjk1YWQyN2ZjNTUxOWQ4ZjZmMGZlMTkxNTI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC02OTA2LDEzICs2OTA2LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8RGF0YUNhbGxiYWNrPihjYWxs
YmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWxs
YmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6RGF0YTo6Y3JlYXRlKGRh
dGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSkucHRyKCkpOworICAgIGNh
bGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBk
YXRhUmVmZXJlbmNlLnNpemUoKSkucHRyKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Ym9v
bENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC05MDgxLDcg
KzkwODEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgIH0pOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpmaW5pc2hl
ZExvYWRpbmdJY29uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIGRhdGFDYWxsYmFjayhkYXRhLCBjYWxsYmFj
a0lEKTsKIH0KQEAgLTkzMTIsNyArOTMxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0
YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0
dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRh
dGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVO
YW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhKQogewog
ICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwOjpp
c1ZhbGlkS2V5KGlkZW50aWZpZXIpKTsKIApAQCAtOTQxOSw3ICs5NDE5LDcgQEAgV2ViUGFnZVBy
b3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyBXZWJQYWdlUHJveHk6OndpbGxV
cGRhdGVBdHRhY2htZW4KIAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBXZWJQYWdlUHJv
eHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpCit2b2lkIFdlYlBhZ2VQcm94
eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJikKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiMzE1NDU0OGEwOGI1
ODhkZmIzNDYyNjFiYzdkZTNkYmI3NTRmNmNmLi5mMzMyYzVkMjBkYmE4ZjFkYWYyNzNiMGM2ZjFl
NWM4YjJiZmRlNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MTkzLDYgKzE5Myw3IEBAIGVudW0gY2xhc3MgSW5zcGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3Q7
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5j
ZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTE1MDEsNyArMTUwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlc3RvcmVT
Y3JvbGxQb3NpdGlvbigpOwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0
IFdlYkNvcmU6OkxpbmtJY29uJiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAgICB2b2lkIGZpbmlz
aGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lELCBj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKTsKIAogICAgIHZvaWQgc2V0Rm9j
dXMoYm9vbCBmb2N1c2VkKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpOwpAQCAtMjAwNSw3ICsyMDA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpOwogCiAgICAg
dm9pZCB2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkYXRhQ2FsbGJhY2soY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkYXRhQ2FsbGJh
Y2soY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBpbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBib29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CkBA
IC0yMTgzLDEyICsyMTg0LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wQWxsVVJMU2NoZW1l
VGFza3MoV2ViUHJvY2Vzc1Byb3h5KiA9IG51bGxwdHIpOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0
YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXJGcm9tRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRhKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+JiYpOwogICAgIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25z
dCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmllcik7CiAK
LSAgICB2b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+
JiYsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOworICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0
YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBwbGF0Zm9ybVJlZ2lzdGVyQXR0
YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsK
ICAgICB2b2lkIHBsYXRmb3JtQ2xvbmVBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYg
ZnJvbUF0dGFjaG1lbnQsIFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgdG9BdHRhY2htZW50KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGUzOWRjMjViYmQ4ZjhiMTVkNjY4MThmNmQ2ZDgyYTNiNTY5OTk0OTIuLmE1ZTZmOTY1MTFl
NTBhODE0M2RiNmYyYWQzZTI2NGU5MmI5YWFhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTUzMCw3ICs1MzAsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiAK
ICAgICBHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHN0cnVjdCBXZWJDb3JlOjpMaW5rSWNvbiBpY29u
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBGaW5pc2hlZExvYWRpbmdJY29u
KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSk7
CisgICAgRmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCwg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpOwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIERpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5jcHAKaW5kZXggM2Y1YjYxODFlMDZlMGE4NDY4OGJkYTkxNmYxMGQ4N2E2MWQxNGJl
Ny4uOTJmZjc3ZWJjNzczM2E1MWZiMTdjN2E3NjNjNzY4NzZjNjJhZWNlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTU3RyaW5nUmVmUHJpdmF0ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpT
U3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMDlkNzk4NzFmNWI2ZjM4N2Q0ZjVmYjY1NTFlZjlh
MDQ2N2M0NjNiOC4uNDhjYTlkZTk5YWJjMGIwOTUyMTE4ZWRkNmExOWEyZWI5MTg4YmNkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTg5LDE3ICsxODksMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28K
ICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShw
b2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5z
aXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5l
dHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQg
dGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVy
LmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAg
YXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3Jl
TG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhID0gV1RGTW92ZShk
YXRhKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9j
b3JlTG9hZGVyKQotICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEp
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmgKaW5kZXggNTgzZTM3OWM4OWVjZmE5NTMwYjBhYmZhMWM2OWZlYTlkNTM5NjZmYi4u
MjY5MDhlODIzZDc5MjQ0ZTU3ODZkYjA0YTU5NjllZjFmYzY1ODA4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0z
Niw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIERhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwog
Y2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRf
dCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdv
cmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCAzNGU4NmMxMWUyNDg2YzdhMTYwMzZkN2I0Njhm
Yjc4ZDI3NThmZDYxLi5jNTBmNTVhZTkyNjNjMTE2ODE0MWFhNDU3MGEyZGRlYzYxNjY0MDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtMTI5LDcgKzEyOSw3
IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JD
aHVuayhjb25zdCBjaGFyKiBkYXRhLCBzaXplCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1f
ZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBzaXplKSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlk
RmluaXNoQmxvYkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
OThiMTViODdmYzEzZGEyZGJmNDQzYmE5OGE0ZDg2ZDdhOWQzNTQxOS4uM2UxOTljOWFmOThjNWQ0
YmQ4ODlkYTk3MjUwMzUyZDRiMmQxYjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0xOTE0LDkgKzE5MTQsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5p
c2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcgogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IENhbGxiYWNrSUQ6OmZyb21JbnRlZ2VyKGNhbGxiYWNrSWRlbnRpZmll
cik7CiAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdlKCkgfSkgewogICAg
ICAgICBpZiAoZGF0YSkKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9KSk7CisgICAg
ICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9h
ZGluZ0ljb24oY2FsbGJhY2tJRCwgeyAqZGF0YSB9KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5n
SWNvbihjYWxsYmFja0lELCB7IG51bGxwdHIsIDAgfSkpOworICAgICAgICAgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNr
SUQsIHsgfSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBlNDU4Mzc0OWI2Zjk2YjVjMWRlZDFlMDZhNDMwYWFjODkxNTg3
YmZkLi4xNmQ2ZjhjYTczMzU1NGIxMmNiYWEwZWNmYzkyMmViZDBmNjUyOGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzUwMCw3ICszNTAw
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGF0
YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CisgICAgICAgIGRhdGFSZWZl
cmVuY2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKICNlbmRpZgogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNh
bGxiYWNrSUQpKTsKIH0KQEAgLTM1ODEsNyArMzU4MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2Ug
PSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZE
YXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBkYXRhUmVmZXJlbmNlID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7
CiB9CkBAIC00OTE5LDcgKzQ5MTksNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbwogewogICAg
IFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNU
b1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayh7IENGRGF0YUdl
dEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdl
dExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpIH0sIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayh7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHBkZlBhZ2VEYXRhLmdldCgpKSB9LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQpAQCAtNjU2MywxMiArNjU2MywxMiBAQCB2
b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgaGFu
ZGxlcklkZW50aWZpZXIsIHVpbnQ2NAogICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlUmVzcG9u
c2UodGFza0lkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cmxTY2hl
bWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdl
YlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRlbnRp
ZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVyVG9V
UkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsKICAgICBBU1NF
UlQoaGFuZGxlcik7CiAKLSAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50
aWZpZXIsIGRhdGEuc2l6ZSgpLCBkYXRhLmRhdGEoKSk7CisgICAgaGFuZGxlci0+dGFza0RpZFJl
Y2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90ICo+KGRhdGEuZGF0YSgpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2No
ZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC02NzkwLDcgKzY3
OTAsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0lt
YWdlRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2
NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGVuY2xvc2lu
Z0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvIGF0dGFj
aG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CiAg
ICAgICAgIGF0dGFjaG1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzdjZjM4YzViYmEyMDFjZWQ3
ODhjZDAzZDVhMjA0ZDRhY2E0ZjJhNy4uNzNjNTkyY2M4NGY3NDhjMmY0ODk5NTg2N2JlNmUyZTlh
ZWVhYzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTU1LDYgKzE1NSw3IEBAIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKIGNs
YXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExOTQsNyArMTE5
NSw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAg
IHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFs
PHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRB
dHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYg
ZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpAQCAtMTY3NCw3ICsxNjc1LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlv
bih1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwog
ICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBoYW5kbGVy
SWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCB1cmxTY2hlbWVU
YXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNl
dElzU3VzcGVuZGVkKGJvb2wpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391513</attachid>
            <date>2020-02-23 21:44:47 -0800</date>
            <delta_ts>2020-02-24 22:20:08 -0800</delta_ts>
            <desc>Part 3: RemoteCDM (Depends on Parts 1 &amp; 2)</desc>
            <filename>bug-208090-20200223214446.patch</filename>
            <type>text/plain</type>
            <size>171429</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhOGIzYTZmZGQ0OWRhMzRj
YWM5ODcwNmQxNDc3MWQwNDY3M2QwZmUuLjA2NzYxNWY5ZTM4YjgxYzZiOTAyYjJlMjJiMGYzMWM3
OTg4ZWQ4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgwIEBACisyMDIwLTAyLTIzICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTW9k
ZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
UmVtb3RlQ0RNRmFjdG9yeSwgUmVtYXRlQ0RNLCBSZW1vdGVDRE1JbnN0YW5jZSwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLCBhbmQgYWxsCisgICAgICAgIG9mIHRoZWlyIGFzc29jaWF0ZWQgUHJv
eHkgb2JqZWN0cy4KKworICAgICAgICBBbGxvdyB0aGUgZXhpc3RpbmcgQ0RNRmFjdG9yeSBtYWNo
aW5lcnkgdG8gd29yayBub3JtYWxseSBieSBleHBsaWNpdGx5IGNsZWFyaW5nIG91dCBhbGwgdGhl
IGV4aXN0aW5nIAorICAgICAgICB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBlbmFibGVkLCBhbmQg
cmVzZXR0aW5nIHRob3NlIGZhY3RvcmllcyB0byBkZWZhdWx0IHdoZW4gdGhlIEdQVSBwcm9jZXNz
IGlzIGRpc2FibGVkLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFk
ZEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNl
c3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldERpc3RpbmN0aXZlSWRlbnRpZmll
cnNBbGxvd2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0
UGVyc2lzdGVudFN0YXRlQWxsb3dlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRIRENQU3RhdHVzKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNvbmZpZ3VyYXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjppbnN0YW5jZSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluOiBB
ZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6flJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnN0b3JlUmVjb3Jk
T2ZLZXlVc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg6IEFkZGVkLgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVz
c2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJv
eHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJl
c3RyaWN0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c1Nl
c3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Q
cm94eTo6c3VwcG9ydHNJbml0RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5
OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1Qcm94eTo6cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1Qcm94eTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9y
aWdpbkFuZENsZWFyYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpjcmVh
dGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y29uZmlndXJhdGlvbiBjb25zdCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJL
ZXlOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRp
YVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0VG9EZWNyeXB0V2l0
aEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0
U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0
YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpjZG1JbnN0YW5jZURldGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxk
Q29udGludWVBZnRlcktleU5lZWRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6UmVtb3RlQ0RN
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldp
dGhSZXN0cmljdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVu
aXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmxvYWRB
bmRJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVNlc3Npb25J
ZCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRp
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmRl
Y29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1G
YWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6dXBkYXRlUHJlZmVy
ZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpzdXBwbGVtZW50TmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0
ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjphZGRTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3Rvcnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6UmVtb3RlQ0RNSW5zdGFuY2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OnNldERpc3RpbmN0aXZlSWRlbnRp
ZmllcnNBbGxvd2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFBl
cnNpc3RlbnRTdGF0ZUFsbG93ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUlu
c3RhbmNlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2U6OnNldEhEQ1BTdGF0dXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OmNsb3NlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVz
ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlbmRNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZXNzaW9u
SWRDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisKIDIwMjAtMDItMjMgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQ
SSBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCBlNjg2YzYzYzE4ZjM1ODZmZmNhNzRlMTczMWMwZmYyNzc0MWIw
ZDNiLi5jNWFmM2I1ZmJlMGNhYmI4YjJkZTMwZDA4NmQzM2E0Zjc5NDc5MTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNiw2ICsxNiwx
MCBAQCAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5p
bgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHku
bWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xMDgsNiArMTEyLDcgQEAgJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b1NlcnZlci5tZXNzYWdlcy4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9X
ZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgor
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4
IDFmY2Y3ZTQxMTA3ZmIzZjdiZTJiYzY5OTkzNjZhMDVmOGU2NTA4MjguLmM3M2UyODczZDliZmNh
NzE0NjZjOTQ3MzExM2I5MDAyNjBiNTE3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTI5LDYgKzEyOSwyMSBAQCAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCAxMGQxNzI1NTg3NWExNmVjNmQzZTZhZmQyNTA2YjUxNTU3NjM1NDA0Li4yZDAwNzU4N2E0NTg2
MTMwNmY0MmRjYzM1MDhkNjVjZmNiZTYyZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0xNDYsNiArMTQ2LDExIEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCiAgICAgUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXIgXAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkgXAorICAgIFJlbW90ZUNETVByb3h5IFwKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkgXAor
ICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkgXAorICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
biBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgXAogICAgIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlciBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAogICAg
IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGEzOTRlMDk0MzFlMDI3
NjhmYTEwNzQ3Y2VjZjJiOTNlOWRmOTE2MjUuLjM5MDliYzg2OTU3ZTYwYjQyYjIzNGY5ZTMzZmEw
M2ZiYmMxNGQ5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTU4LDEwICs1OCwxOCBAQAogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotCiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94
eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE4OSw2ICsxOTcsMTcgQEAg
TGliV2ViUlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxpYldlYlJU
Q0NvZGVjc1Byb3h5KCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
K1JlbW90ZUNETUZhY3RvcnlQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2RtRmFj
dG9yeVByb3h5KCkKK3sKKyAgICBpZiAoIW1fY2RtRmFjdG9yeVByb3h5KQorICAgICAgICBtX2Nk
bUZhY3RvcnlQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PigqdGhpcyk7
CisKKyAgICByZXR1cm4gKm1fY2RtRmFjdG9yeVByb3h5OworfQorI2VuZGlmCisKKwogdm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTIzOSw2ICsyNTgsMjcgQEAg
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIEkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlTWVzc2Fn
ZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZh
Y3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3Rh
bmNlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAg
ICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgog
fQogCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKQEAgLTI1OSw2ICsyOTks
MjcgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICNl
bmRpZgorI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJl
cGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5
bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFu
Y2VTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTI2OSw3ICszMzAsNyBAQCBjb25zdCBTdHJpbmcmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Om1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBtX2dwdVByb2Nlc3Mt
Pm1lZGlhQ2FjaGVEaXJlY3RvcnkobV9zZXNzaW9uSUQpOwogfQogCi0jaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiBjb25zdCBTdHJpbmcmIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogewogICAgIHJldHVy
biBtX2dwdVByb2Nlc3MtPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobV9zZXNzaW9uSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKaW5kZXggMGVjMjM4Y2QwNjI1MzgzNDc1OWJmZTk2YmJhZTBhZGViYjM1MWE3ZS4uZjAw
MDFjZTQ4YWQwZTljMGY2ZjBmY2JlMGZmM2NmODVhMTc0MTM1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC00NSw2
ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgR1BVUHJvY2VzczsKIGNsYXNzIExp
YldlYlJUQ0NvZGVjc1Byb3h5OwogY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNYW5hZ2VyOworY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OwogY2xhc3MgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
cjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwpAQCAtNzYsNiArNzcsMTAgQEAg
cHVibGljOgogCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBzZXNz
aW9uTWFuYWdlcigpOwogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBSZW1vdGVD
RE1GYWN0b3J5UHJveHkmIGNkbUZhY3RvcnlQcm94eSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQp
OwogCkBAIC0xMTgsNiArMTIzLDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPExp
YldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5OwogI2VuZGlmCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcj4gbV9z
ZXNzaW9uTWFuYWdlcjsKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NWI0YWZkNGI0MzY3NzdkMWM0ZDEzZjg3MGI0NGRkMmIzNjk4MTEwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94
eS5jcHAKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1D
b25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3
dGYvQWxnb3JpdGhtcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK1JlbW90ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbikKK3sKK30KKworUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Ojp+UmVtb3RlQ0RNRmFjdG9yeVByb3h5KCkgPSBkZWZhdWx0OworCitzdGF0aWMgQ0RNRmFj
dG9yeSogZmFjdG9yeUZvcktleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAg
ICBhdXRvJiBmYWN0b3JpZXMgPSBDRE1GYWN0b3J5OjpyZWdpc3RlcmVkRmFjdG9yaWVzKCk7Cisg
ICAgYXV0byBmb3VuZEluZGV4ID0gZmFjdG9yaWVzLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIGZh
Y3RvcnkpIHsgcmV0dXJuIGZhY3RvcnktPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSk7IH0p
OworICAgIGlmIChmb3VuZEluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gZmFjdG9yaWVzW2ZvdW5kSW5kZXhdOworfQorCit2b2lkIFJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gZmFjdG9yeSA9IGZhY3RvcnlGb3JL
ZXlTeXN0ZW0oa2V5U3lzdGVtKTsKKyAgICBpZiAoIWZhY3RvcnkpIHsKKyAgICAgICAgY29tcGxl
dGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHByaXZh
dGVDRE0gPSBmYWN0b3J5LT5jcmVhdGVDRE0oa2V5U3lzdGVtKTsKKyAgICBpZiAoIXByaXZhdGVD
RE0pIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIHByb3h5ID0gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0
cih0aGlzKSwgV1RGTW92ZShwcml2YXRlQ0RNKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVt
b3RlQ0RNSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb24gPSBwcm94eS0+Y29uZmlndXJhdGlvbigpOworICAgIGFkZFByb3h5KGlk
ZW50aWZpZXIsIFdURk1vdmUocHJveHkpKTsKKyAgICBjb21wbGV0aW9uKFdURk1vdmUoaWRlbnRp
ZmllciksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9u
KGZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3By
b3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPihk
ZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IG1f
aW5zdGFuY2VzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpbnN0YW5jZS0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5j
Q0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYg
KGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVD
RE1JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJv
eHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsK
K30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFu
Y2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAo
YXV0byogaW5zdGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkK
KyAgICAgICAgaW5zdGFuY2UtPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
IGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtl
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4o
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90
ZUNETUZhY3RvcnlQcm94eTo6YWRkUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllciBpZCwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiYmIHByb3h5KQoreworICAgIEFTU0VSVCghbV9wcm94
aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnNldChpZCwgV1RGTW92ZShwcm94eSkp
OworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlUHJveHkoUmVtb3RlQ0RN
SWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Cisg
ICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjphZGRJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmIGluc3RhbmNlKQoreworICAgIEFTU0VSVCgh
bV9pbnN0YW5jZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX2luc3RhbmNlcy5zZXQoaWQsIFdURk1v
dmUoaW5zdGFuY2UpKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUlu
c3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9p
bnN0YW5jZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX2luc3RhbmNlcy5yZW1vdmUoaWQpOworfQor
CitSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmdldEluc3Rh
bmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYgaWQpCit7CisgICAgcmV0dXJu
IG1faW5zdGFuY2VzLmdldChpZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojph
ZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQsIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAg
IEFTU0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlk
LCBXVEZNb3ZlKHNlc3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJl
bW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCkKK3sKKyAg
ICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVtb3Zl
KGlkKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWIxY2NjOTVi
YmQzZmUzYjlmMzM1MmQ4NTAwMjc3YTRiZmQzOTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCkBAIC0wLDAg
KzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUNE
TUluc3RhbmNlUHJveHk7CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTsKK2Ns
YXNzIFJlbW90ZUNETVByb3h5Oworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb247CisKK2Ns
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZW1vdGVDRE1GYWN0b3J5
UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNE
TUZhY3RvcnlQcm94eSgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9j
ZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7
IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
IGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVu
Y29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworCisgICAgdm9pZCBhZGRQ
cm94eShSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+
JiYpOworICAgIHZvaWQgcmVtb3ZlUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllcik7CisKKyAgICB2
b2lkIGFkZEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlSW5zdGFuY2Uo
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
KiBnZXRJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImKTsKKworICAg
IHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKworICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7IH0KKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUlk
ZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKT4mJik7CisgICAgdm9pZCBzdXBw
b3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+PiBtX3Byb3hpZXM7CisgICAgSGFzaE1hcDxS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0
YW5jZVByb3h5Pj4gbV9pbnN0YW5jZXM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk+PiBtX3Nlc3Npb25zOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0N2M1ZTZlNjFjNDIwNzgzMWRhMGJkMTE4YTZhYWVi
NDBkMzMxMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1GYWN0b3J5UHJveHkgTm90UmVmQ291bnRlZCB7
CisgICAgQ3JlYXRlQ0RNKFN0cmluZyBrZXlTeXN0ZW0pIC0+IChXZWJLaXQ6OlJlbW90ZUNETUlk
ZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0c0tleVN5c3RlbShTdHJpbmcga2V5U3lz
dGVtKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJlZDkyNTQ1YjdmZDBkNGQzMmY1MTI0MjUxZjhiMDAxNWNjYTk1
OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUo
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVmPENETUluc3RhbmNl
PiYmIHByaXYpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gbWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLCBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJj4oeworICAgICAgICBwcml2LT5rZXlTeXN0ZW0oKSwK
KyAgICB9KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJv
eHk+KG5ldyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUo
cHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94
eT4mJiBmYWN0b3J5LCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5
KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2luc3RhbmNlKFdURk1vdmUocHJpdikpCisgICAg
LCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21w
bGV0aW9uKG1faW5zdGFuY2UtPmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0
aW9uKSA9PSBDRE1JbnN0YW5jZTo6U3VjY2VlZGVkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjpzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sIGFsbG93ZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21w
bGV0aW9uKG1faW5zdGFuY2UtPnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGFsbG93
ZWQpID09IENETUluc3RhbmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBhbGxvd2VkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbiht
X2luc3RhbmNlLT5zZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGFsbG93ZWQpID09IENETUluc3Rh
bmNlOjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNl
cnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGNlcnRpZmlj
YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAg
aWYgKCFjZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbXBsZXRpb24obV9pbnN0YW5jZS0+c2V0
U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSkg
PT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24o
bV9pbnN0YW5jZS0+c2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpID09IENETUluc3RhbmNl
OjpTdWNjZWVkZWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNl
c3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHByaXZTZXNzaW9uID0g
bV9pbnN0YW5jZS0+Y3JlYXRlU2Vzc2lvbigpOworICAgIGlmICghcHJpdlNlc3Npb24gfHwgIW1f
ZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlc3Npb24gPSBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIHByaXZTZXNz
aW9uLnJlbGVhc2VOb25OdWxsKCksIGlkZW50aWZpZXIpOworICAgIG1fZmFjdG9yeS0+YWRkU2Vz
c2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24pKTsKKyAgICBjb21wbGV0aW9uKGlkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldEhEQ1BTdGF0dXMo
V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXMgc3RhdHVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihtX2luc3RhbmNl
LT5zZXRIRENQU3RhdHVzKHN0YXR1cykgPT0gQ0RNSW5zdGFuY2U6OlN1Y2NlZWRlZCk7Cit9CisK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZjZmMTExMWY3MTIwNzQ2
N2NmM2NiYjc4MDdlZWQ4OTFkNGFlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9DRE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENETUluc3RhbmNlOworc3Ry
dWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSA6IHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmKTsKKyAgICB+UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LmdldCgpOyB9CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2UmIGluc3RhbmNlKCkgeyByZXR1cm4g
bV9pbnN0YW5jZTsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0
b3J5UHJveHk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETUZh
Y3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXREaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzQWxsb3dlZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyAgICB2b2lkIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY3JlYXRlU2Vzc2lvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIm
KT4mJik7CisgICAgdm9pZCBzZXRIRENQU3RhdHVzKFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQ
U3RhdHVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIFdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CisgICAgUmVmPFdlYkNvcmU6OkNETUlu
c3RhbmNlPiBtX2luc3RhbmNlOworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eT4+IG1fc2Vzc2lvbnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDIxOTc0NjdkMDk2NTNmNDBkMDdmZTc5NWMw
NmY5ZDA1NDc2NzA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291
bnRlZCB7CisgICAgQ3JlYXRlU2Vzc2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIgaWQpIFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb24pIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAgU2V0RGlzdGluY3Rp
dmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCBhbGxvd2VkKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5j
aHJvbm91cworICAgIFNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBhbGxvd2VkKSAtPiAo
Ym9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworICAgIFNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZSkgLT4gKGJvb2wgc3VjY2Vzcykg
U3luY2hyb25vdXMKKyAgICBTZXRTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyBkaXJlY3RvcnkpIC0+
IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisgICAgU2V0SERDUFN0YXR1cyhXZWJDb3JlOjpD
RE1JbnN0YW5jZTo6SERDUFN0YXR1cyBzdGF0dXMpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9u
b3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDg1MjFkNjg4ZTgwZTAxYWE4NDVkZDA5MGIyM2M4OGUxMThjZjcyZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4gUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94
eT4mJiBmYWN0b3J5LCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24s
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIHNlc3Npb25Qcm94eSA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eT4obmV3IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdURk1vdmUoZmFjdG9y
eSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1h
a2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5
LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHktPm1fc2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUo
Y2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Npb25Qcm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVt
b3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3Nlc3Np
b24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorewor
fQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6flJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5KCkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUs
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJiBjb21wbGV0aW9uKQoreworICAgIGlmICghaW5pdERhdGEuYnVmZmVyKCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGlu
aXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRp
b24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAg
ICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFs
aXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAg
ICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGlj
ZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxl
dGlvbikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRp
b24odHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9uLT51cGRhdGVMaWNlbnNlKHNlc3Npb25J
ZCwgdHlwZSwgKnJlc3BvbnNlLmJ1ZmZlcigpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxl
dGlvbildIChib29sIHNlc3Npb25DbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJh
dGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewor
ICAgICAgICBjb21wbGV0aW9uKHNlc3Npb25DbG9zZWQsIFdURk1vdmUoa2V5U3RhdHVzZXMpLCBX
VEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgdHlwZSwgU3Ry
aW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNvbXBs
ZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5sb2FkU2Vzc2lvbih0eXBlLCBzZXNzaW9uSWQsIG9y
aWdpbiwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoT3B0aW9uYWw8Q0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRv
dWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJs
ZSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhw
aXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZWVkZWQsIGZhaWx1cmUpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBtX3Nlc3Npb24t
PmNsb3NlU2Vzc2lvbihzZXNzaW9uSWQsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KV0gKCkgbXV0YWJsZSB7IGNvbXBsZXRpb24oKTsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY29tcGxl
dGlvbikKK3sKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlw
ZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CisgICAgICAgIGlm
IChleHBpcmVkU2Vzc2lvbnNEYXRhKQorICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVm
ZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFdURk1vdmUoKmV4cGlyZWRT
ZXNzaW9uc0RhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKGtleVN0YXR1c2VzKSwg
V1RGTW92ZShleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpCit7CisgICAgbV9zZXNzaW9uLT5zdG9yZVJlY29yZE9mS2V5VXNhZ2Uoc2Vzc2lv
bklkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5
U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMpCit7CisgICAgaWYgKG1fZmFj
dG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRl
S2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fZmFj
dG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2VuZE1l
c3NhZ2UodHlwZSwgV1RGTW92ZShtZXNzYWdlKSksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5
LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpLCBt
X2lkZW50aWZpZXIpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNTg0NjQwODNkY2FjM2Q3YWQ1ZDU0YWViMWNmZDBjYjIzMGJkNTA1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBm
aW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVD
RE1GYWN0b3J5UHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworICAgIHZpcnR1YWwgflJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5KCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJl
bW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CisKKyAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBUeXBlcworICAgIHVz
aW5nIExpY2Vuc2VUeXBlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlw
ZTsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1c1ZlY3RvcjsKKyAgICB1c2luZyBNZXNzYWdlID0gV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlOworICAgIHVzaW5nIFNlc3Npb25Mb2FkRmFpbHVyZSA9IFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOworICAgIHVzaW5n
IExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sLCBib29sKT47
CisgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwg
T3B0aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCk+OworICAgIHVzaW5nIExvYWRTZXNzaW9uQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwg
T3B0aW9uYWw8ZG91YmxlPiYmLCBPcHRpb25hbDxNZXNzYWdlPiYmLCBib29sLCBTZXNzaW9uTG9h
ZEZhaWx1cmUpPjsKKyAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIE9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mJiwgYm9vbCk+OworICAgIHVzaW5nIFN0b3JlUmVjb3Jk
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworCisgICAgLy8gTWVzc2FnZXMK
KyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBBdG9tU3RyaW5nIGluaXREYXRh
VHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmKTsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIHJlc3BvbnNlLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJik7CisgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
U3RyaW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKTsK
KyAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNz
aW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwor
CisgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CisgICAgdm9pZCB1cGRhdGVLZXlTdGF0
dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJD
b3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KSBmaW5hbDsKKyAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7
CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5OworICAgIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTIzM2VlOWMzMTVjZjI4OWYyN2ZhZjcxYTJjZGIzYmQ0OWZiMTE2YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgTm90UmVmQ291bnRlZCB7CisKKyAg
ICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBl
IHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2Fn
ZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBib29sIHN1
Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQsIFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRp
b25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gY2hhbmdl
ZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQp
IEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNl
bnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luKSAtPiAoT3B0aW9u
YWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRL
ZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1
cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9uKFN0cmluZyBzZXNzaW9uSWQp
IC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3RyaW5nIHNlc3Npb25JZCwgV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlKSAtPiAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXMsIE9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQp
IEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmluZyBzZXNzaW9uSWQpCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRkODBiYWEzMzcwMGFiMTI5M2VmNjI3NmYwYjI2NDM3NTkw
N2UxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNl
UHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiBSZW1v
dGVDRE1Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3Rv
cnksIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmIHByaXYpCit7CisgICAg
aWYgKCFwcml2KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUNvbmZp
Z3VyYXRpb24sIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJj4oeworICAgICAgICBwcml2LT5zdXBw
b3J0ZWRJbml0RGF0YVR5cGVzKCksCisgICAgICAgIHByaXYtPnN1cHBvcnRlZFJvYnVzdG5lc3Nl
cygpLAorICAgICAgICBwcml2LT5zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpLAorICAgICAg
ICBwcml2LT5zdXBwb3J0c1Nlc3Npb25zKCkKKyAgICB9KTsKKyAgICAvLyBVc2UgbmV3KCkgdG8g
YWNjZXNzIENETVByaXZhdGUncyBwcml2YXRlIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+KG5ldyBSZW1vdGVDRE1Qcm94eShXVEZNb3ZlKGZh
Y3RvcnkpLCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1Jl
bW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94
eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4mJiBwcml2LCBVbmlxdWVS
ZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0
b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3ByaXZhdGUoV1RGTW92ZShwcml2KSkKKyAg
ICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1v
dGVDRE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUNE
TVByb3h5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5zdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0Nv
bmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxl
dGlvbihtX3ByaXZhdGUtPnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
ZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYg
dHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRp
b24obV9wcml2YXRlLT5zdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24odHlwZSwg
Y29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIGRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sK
KyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbihmYWxzZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxldGlvbihtX3ByaXZhdGUtPnN1cHBvcnRz
SW5pdERhdGEodHlwZSwgKmRhdGEuYnVmZmVyKCkpKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94
eTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVzdHJp
Y3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENETVJlcXVpcmVtZW50KT4mJiBjb21wbGV0
aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJz
UmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSk7Cit9CisKK3ZvaWQgUmVt
b3RlQ0RNUHJveHk6OnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVz
dHJpY3Rpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENETVJlcXVpcmVtZW50KT4mJiBjb21w
bGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5wZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudChjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpKTsKK30KKwordm9pZCBSZW1vdGVD
RE1Qcm94eTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFy
YWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAg
Y29tcGxldGlvbihtX3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJP
cmlnaW5BbmRDbGVhcmFibGUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETVBy
b3h5OjpjcmVhdGVJbnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBs
ZXRpb24pCit7CisgICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUlu
c3RhbmNlKCk7CisgICAgaWYgKCFwcml2YXRlSW5zdGFuY2UgfHwgIW1fZmFjdG9yeSkgeworICAg
ICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBh
dXRvIGluc3RhbmNlID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRy
KG1fZmFjdG9yeS5nZXQoKSksIHByaXZhdGVJbnN0YW5jZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBp
bnN0YW5jZS0+Y29uZmlndXJhdGlvbigpOworICAgIG1fZmFjdG9yeS0+YWRkSW5zdGFuY2UoaWRl
bnRpZmllciwgV1RGTW92ZShpbnN0YW5jZSkpOworICAgIGNvbXBsZXRpb24oaWRlbnRpZmllciwg
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmxvYWRB
bmRJbml0aWFsaXplKCkKK3sKKyAgICBtX3ByaXZhdGUtPmxvYWRBbmRJbml0aWFsaXplKCk7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBj
b21wbGV0aW9uKG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNwb25zZSgqcmVzcG9uc2UuYnVmZmVyKCkp
KTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiYm
KT4mJiBjb21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24obV9wcml2YXRlLT5zYW5pdGl6ZVNl
c3Npb25JZChzZXNzaW9uSWQpKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBkMGFiOTA1
NTQ4NmU3Yzk0NmNiNWMzMzI5ODc0MjlmMWU0YWRiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCkBAIC0wLDAgKzEsOTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ0RNUHJpdmF0ZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2VudW0g
Y2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90OworZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlw
ZSA6IHVpbnQ4X3Q7CitzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBD
RE1SZXN0cmljdGlvbnM7Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNE
TUluc3RhbmNlUHJveHk7CitzdHJ1Y3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOwor
c3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUNETVByb3h5IDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eVByb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJik7CisgICAg
flJlbW90ZUNETVByb3h5KCk7CisKKyAgICBjb25zdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOyB9CisK
K3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBS
ZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1
cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVz
c2FnZXMKKyAgICB2b2lkIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdl
YkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0
cmljdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1TZXNz
aW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCk+JiYpOworICAgIHZvaWQgcGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6Q0RNUmVxdWlyZW1lbnQpPiYmKTsKKyAgICB2b2lkIGRpc3RpbmN0aXZlSWRlbnRpZmll
cnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgY3JlYXRlSW5zdGFuY2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKT4mJik7Cisg
ICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpOworICAgIHZvaWQgc2FuaXRpemVSZXNwb25zZShj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIHJlc3BvbnNlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmKT4mJik7CisgICAg
dm9pZCBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+JiYpPiYmKTsKKworICAgIFdlYWtQdHI8UmVt
b3RlQ0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkNETVByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmln
dXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNjRlNTM1MzFhZTc0NGQwNDUxNzE5NDEzYjQzYmZhYzE1Njg0MGJl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdl
cyAtPiBSZW1vdGVDRE1Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTdXBwb3J0c0NvbmZpZ3Vy
YXRpb24oc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJh
dGlvbikgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzQ29uZmlndXJh
dGlvbldpdGhSZXN0cmljdGlvbnMoc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbiwgc3RydWN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyByZXN0
cmljdGlvbnMpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oZW51bTp1aW50OF90IFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlIHR5cGUsIHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb24pIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0c0luaXRE
YXRhKEF0b21TdHJpbmcgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEp
IC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBEaXN0aW5jdGl2ZUlkZW50aWZpZXJz
UmVxdWlyZW1lbnQoc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbiwgc3RydWN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMp
IC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcmVzdWx0KSBTeW5jaHJv
bm91cworICAgIFBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KHN0cnVjdCBXZWJDb3JlOjpDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpDRE1S
ZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKSAtPiAoZW51bTp1aW50OF90IFdlYkNvcmU6OkNETVJl
cXVpcmVtZW50IHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBEaXN0aW5jdGl2ZUlkZW50aWZpZXJz
QXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKHN0cnVjdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25v
dXMKKyAgICBDcmVhdGVJbnN0YW5jZSgpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3VzCisgICAgTG9hZEFuZEluaXRpYWxpemUoKQorICAg
IFNhbml0aXplUmVzcG9uc2UoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNl
KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3VsdCkgU3luY2hyb25vdXMK
KyAgICBTYW5pdGl6ZVNlc3Npb25JZChTdHJpbmcgc2Vzc2lvbklkKSAtPiAoT3B0aW9uYWw8U3Ry
aW5nPiByZXN1bHQpIFN5bmNocm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmlu
ZGV4IDVlZmU2NjI1ZDZmMmY5MGFkZWQ3N2Q4YzU1OTdkZjNjNzg4ZjMxZGIuLjQ4MTQ1ODQ3NTJh
MTNiMGNlODUwMzQ4OTVkZjkxNDEwMGM1YWE0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZU1lc3NhZ2VzLmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0
b3J5UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkBAIC00OTAsMTcgKzQ5NSwxNiBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3Qg
UwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKQordm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJ
bml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6
OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRhdGEo
KSksIGluaXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC02ODIs
NiArNjg2LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQogfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFn
ZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3Rh
bmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VBdHRhY2hlZChp
bnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlu
c3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGlu
c3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0YW5j
ZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojph
dHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYm
IGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIu
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNl
KGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0
YW5jZShpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRpZgorCisKKyNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3Zv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChib29sIHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktl
eU5lZWRlZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxheWVyLT5iZWdpblNpbXVs
YXRlZEhEQ1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggMTZiYjJkZGZhMjE0NzQ3MGU4NjAw
YWI3MTM5NmE1OWNkZjU0NDlmYS4uMjA4OTZiOTU1NTQ4MTBiNWNjZmRjMjVjYWQ1NmE0ZDBhYTg2
OTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7
CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTI2LDYgKzEzMSwxNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXImJik7CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNo
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYKKwogICAgIHZvaWQgYmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigp
OwogCkBAIC0xNjgsNyArMTgzLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlhUGxh
eWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5
TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApAQCAtMjUyLDYgKzI2
NywxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkxheW91dFJlY3QgbV92aWRlb0NvbnRlbnRC
b3hSZWN0OwogICAgIGZsb2F0IG1fdmlkZW9Db250ZW50U2NhbGUgeyAxLjAgfTsKIAorI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
ICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyNlbmRp
ZgorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBtX2xvZ2dl
cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjYTY2MzE0
ZGZiZTZkMzFiZTA5OTUyYzVmMjgyZjEwNjE4ZmViZWJhLi4yOWQyODY5YzE2NDJkOGZjMjY2ZTg5
MWNiNjE4ZTQ4MjRiMGIyMjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtNzMsOSArNzMsMTYgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RS
ZWZDb3VudGVkIHsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICAjIFNl
dENETVNlc3Npb24KICAgICBLZXlBZGRlZCgpCi0gICAgIyBDZG1JbnN0YW5jZUF0dGFjaGVkCi0g
ICAgIyBDZG1JbnN0YW5jZURldGFjaGVkCi0gICAgIyBBdHRlbXB0VG9EZWNyeXB0V2l0aEluc3Rh
bmNlCisjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgQ2RtSW5zdGFu
Y2VBdHRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5jZUlk
KQorICAgIENkbUluc3RhbmNlRGV0YWNoZWQoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXIgaW5zdGFuY2VJZCkKKyAgICBBdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisjZW5kaWYKKworI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorICAgIFNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91bGQpCiAjZW5k
aWYKIAogICAgIEJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDVhZGIzN2Q4YjViZGVmMDBhNTY2
ZjRhMDJkYjY0YmI5NWRhYjAwMjQuLjhiZjhkM2Q1NWVhNTU0NjU0N2JjMTM3ZTQyNjg0MGE0YTEx
ZjgxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMzIxNyw0ICszMjE3LDU5IEBAIE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjCiAgICAg
cmV0dXJuIGJ1ZmZlcjsKIH0KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVz
c2FnZSYgbWVzc2FnZSkKK3sKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CisKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYo
KTsKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZVR5cGUgdHlwZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIG1ha2VPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+
KHsgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgfSk7Cit9CisKK3ZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oa2V5U3RhdHVzZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGtleVN0YXR1
cyA6IGtleVN0YXR1c2VzKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleSA9IGtl
eVN0YXR1cy5maXJzdC5jb3B5UmVmKCk7CisgICAgICAgIGVuY29kZXIgPDwga2V5IDw8IGtleVN0
YXR1cy5zZWNvbmQ7CisgICAgfQorfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3Rvcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVNpemUp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXM7CisgICAga2V5U3RhdHVzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRhU2l6ZSk7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkg
PSAwOyBpIDwgZGF0YVNpemU7ICsraSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5KSB8fCAha2V5KQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQ6OktleVN0YXR1cyBzdGF0dXM7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
a2V5U3RhdHVzZXMudW5jaGVja2VkQXBwZW5kKHsga2V5LnJlbGVhc2VOb25OdWxsKCksIHN0YXR1
cyB9KTsKKyAgICB9CisgICAgcmV0dXJuIGtleVN0YXR1c2VzOworfQorI2VuZGlmIC8vIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBlOTUzNTY5MzA0ZjcyMTkzYjhk
YTI4ZDg4NmJiNWY4MmIyNzU2YjI5Li44MTAwYzkyNDNmYWRiODc2MWM2ZTMxN2VhM2VmMzRiMDhh
MWYyZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtNTUsNiArNTUsMTEgQEAKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQWRkaXRpb25zLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
bmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtODM1LDYgKzg0MCwxOCBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiB7CiAgICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJik7CisgICAgc3RhdGljIE9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC05NzEsNCArOTg4LDI4IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V1RGTG9nTGV2ZWw+IHsKICAgICA+OwogfTsKIAorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZT4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6U2Vzc2lvbkxvYWRGYWlsdXJlLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb1Nlc3Npb25EYXRhLAorICAgIFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUs
CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6OlF1
b3RhRXhjZWVkZWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9h
ZEZhaWx1cmU6Ok90aGVyCisgICAgPjsKK307CisKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXMsCisg
ICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlVua25vd24sCisgICAgV2ViQ29y
ZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlZhbGlkLAorICAgIFdlYkNvcmU6OkNETUluc3Rh
bmNlOjpIRENQU3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6OkNETUluc3Rh
bmNlOjpIRENQU3RhdHVzOjpPdXRwdXREb3duc2NhbGVkCisgICAgPjsKK307CisKKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGE1ZDBiZTE0MjcxZjYzMDZmODM2
YjhmZGJkN2Q0MjBmMjk1MjQ2ZWEuLmVmMTFiMDgxMDI2Nzg4NmE2NmE2NzkzMTA0YjAxMzRiMGEw
ZGQxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzEsNiArMzEsMTAgQEAgR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1RyYWNrUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94
eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKK0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCitHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTM5
LDYgKzQzLDcgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5j
cHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAKIAorCiBOZXR3b3JrUHJvY2Vzcy9BZENs
aWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5
VHJhY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKQEAgLTUzNCw2ICs1MzksMTAgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3Rl
LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAor
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8t
dW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDJjY2ZiNjVhODRhMjdjZmJlNzY1YmY3NWI5MTZjNjUzMTIzZjYzMjQuLmRkMjhlYmUwOTQxMTVm
NTZkZWJlZTgxMWRhOGEyMzU0MWY0NTE3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5NSw2ICsxNjk1LDcgQEAKIAkJQ0QxOUQy
RUEyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxOUQyRTgyMDQ2NDA2
RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMjg2NUVFMjI1NTU2MjAwMDYw
NkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2QUM3
IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVEMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNz
VGFza1N0YXRlT2JzZXJ2ZXIubW0gKi87IH07CisJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0EzNSAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0NjYxODEyNDAxMDU2NDAwNDdD
QTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07
CiAJCUNENDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMDYx
RTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi87IH07CiAJCUNE
NDkxQjBEMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDQ5MUIwQjFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwRTFFNzMyRTREMDAwMDkwNjYgLyogVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEMxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTE3MTcsNiArMTcxOCwyMCBAQAog
CQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQTI5QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oICovOyB9OwogCQlDREE5M0RCMDIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVl
blRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVs
bHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyog
RnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi87IH07CisJCUNEQUMy
MEI0MjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCMjIzRkI1OEYyMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovOyB9OworCQlDREFDMjBDMzIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCNjIzRkMyRjczMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMEM0MjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlLmggKi87IH07CisJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmln
dXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RN
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBC
QTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi87IH07CisJCUNEQUMyMEM5MjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQzIzRkMyRjc0
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovOyB9Owor
CQlDREFDMjBDQTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCRDIz
RkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IH07CisJCUNE
QUMyMENEMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMDIzRkMyRjc1MDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovOyB9OworCQlDREFDMjBDRTIzRkMyRjc1MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi87IH07CisJCUNEQUMyMENGMjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyog
UmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAv
KiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFD
MjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CisJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBFQzIzRkMzODM4MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OworCQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0
YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICovOyB9
OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RD
QTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAq
LzsgfTsKIAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ1MTFDQkM0ODJG
MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKQEAgLTQ5NDUsNiArNDk2MCwxMCBAQAog
CQlDRDE5RDJFOTIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGlj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHA7
IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyog
UHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUYXNrU3Rh
dGVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFRDIyNTU1
NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdD
QTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFC
MDUxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5MDY2
IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNENDkxQjBBMUU3MzJEMTIwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5ODYsNiArNTAwNSw0MyBAQAogCQlDREEy
OUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3Vj
aFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVl
blRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlz
dGljUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNo
ZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5U
b3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjA3ODIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAv
KiBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBQzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBBRTIzRkI1ODJC
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjEyM0ZCNThF
MjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMzIzRkI1OEYyMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlQ0RNRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMy
MEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQkUyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCRjIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMw
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29u
ZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVGMjNGQzM4MzkwMDIxREVF
MyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMzIzRkMzODNBMDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90
ZUNETVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFD
MjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBwYXRoID0gaW9zL2Z1
bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEQzI4MzFDMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHBhdGgg
PSBpb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBDRk5ldHdvcmsuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3JrOyBwYXRoID0gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTUyNjYsNiArNTMyMiwyMCBAQAogCQkJCTA3OTIzMTMyMjM5
QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkwN0Ix
RDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluICovLAogCQkJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkYyM0ZDMkY3NTAwMjFERUUzIC8q
IFJlbW90ZUNETS5jcHAgKi8sCisJCQkJQ0RBQzIwQkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90
ZUNETS5oICovLAorCQkJCUNEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25m
aWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnkuY3BwICovLAorCQkJCUNEQUMyMEMwMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVD
RE1GYWN0b3J5LmggKi8sCisJCQkJQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBCQjIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2UuY3BwICovLAorCQkJCUNEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZS5oICovLAorCQkJCUNEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQlDREFDMjBCNjIzRkMyRjczMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkUy
M0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8sCisJCQkJ
Q0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICov
LAorCQkJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24ubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLywKIAkJCQkwN0I5M0ZGNTIzQUYwQ0I4
MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJMDc5
MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgKi8s
CiAJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5oICovLApAQCAtNTI5MSw2ICs1MzYxLDE4IEBACiAJCQkJMUQwRUNFQTkyM0ZDODRCQjAwRDE3
MkY2IC8qIGNvY29hICovLAogCQkJCTA3MUJDNTdFMjNDQTVEQjEwMDY4MEQ3QyAvKiBSZW1vdGVB
dWRpb1RyYWNrUHJveHkuY3BwICovLAogCQkJCTA3MUJDNTdGMjNDQTVEQjEwMDY4MEQ3QyAvKiBS
ZW1vdGVBdWRpb1RyYWNrUHJveHkuaCAqLywKKwkJCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjA3ODIzRkIxRTIxMDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggKi8sCisJCQkJQ0RBQzIwN0MyM0ZCMUVG
OTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlD
REFDMjBCMzIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8s
CisJCQkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHku
aCAqLywKKwkJCQlDREFDMjBCMTIzRkI1OEUyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBBRjIzRkI1ODJCMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEFFMjNGQjU4MkIw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oICovLAorCQkJCUNEQUMy
MEFEMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNz
YWdlcy5pbiAqLywKKwkJCQlDREFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJv
eHkuY3BwICovLAorCQkJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94
eS5oICovLAorCQkJCUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5t
ZXNzYWdlcy5pbiAqLywKIAkJCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTA3MjVFRkFDMjM5QUUzODUwMEE1MzhB
OSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovLAogCQkJCTA3MjVFRkFCMjM5
QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
biAqLywKQEAgLTk2MjUsNiArOTcwNywyMSBAQAogCQkJCTFBMDQzQjVDMTI0RDVFOUQwMEZGQkZC
NSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTFBOEVGQTZFMTI1MkI4
NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUE4
RUZBNkYxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlD
REFDMjBGMjIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBGMzIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RN
RmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBFRTIzRkMzODM5MDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIw
RjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAorCQkJCUNEQUMyMEVCMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGNjIzRkMzODNCMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNENDY2MTgx
MjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAorCQkJCUNENDY2MTgyMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlcy5oICovLAorCQkJCUNENDY2MTgwMjQwMTA1NjQwMDQ3Q0EzNSAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFD
MjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQUMyMEVEMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjEyM0ZD
MzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBs
aWVzLmggKi8sCisJCQkJQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBGNDIzRkMzODNBMDAyMURFRTMgLyog
UmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVF
MyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTBGRjI0QTJCMTg3
OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKIAkJCQkwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMDc5MjMxNDMyMzlDQkNC
NjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCkBAIC0xMDUyNCw2ICsxMDYyMSwxNiBAQAogCQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgz
MiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUU2ODg3
MDFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdGRDMxODIyMkIzNTE1RTAwOEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENEMjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFD
MjBDRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0RBQzIwQzQyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDMzIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzkyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8q
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFCMTZBRUExNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTIyMjAsNiArMTIzMjcsMTEgQEAKIAkJCQlDMTVDQkIzNzIzRjM3RUNC
MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1
NEMzMUIyMTJGNERBNjAwNDlDMTc0IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2Vy
dmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NB
MzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFD
MjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRBMkQxODc5RTRC
QzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5RTAwMjVBODhEIC8qIFJl
bW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDhkZmY1
MGYzMDg4ZWQ0NWM1OTBlYzgxZTJjMDlhMTM4YmE3YTUzNWYuLmM2MDI0Y2FkOWE5NTc0MmJmN2Q2
MmIxOTI2OWE3Y2I2NmNmMDcyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5j
bHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWVzc2FnZXMuaCIKQEAgLTQ0LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2Vz
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApAQCAtMTAxLDYgKzEwNywxMiBAQCB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RAogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKS0+ZGlkUmVj
ZWl2ZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCmluZGV4IDZmNjNiMjMwZjYyN2QxMmNjNmVjM2VmN2RkNmNlNmFkMTI5
N2FhNmEuLmE5YmE0YTE2YmMyZWRhODJlMzdkZWQxNGU0MDY1MWE2MDI0NzA4MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTQ5LDYgKzQ5LDEwIEBACiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBleHRlcm4gV1RG
TG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAgLTg5OSwxOSArOTAzLDIyIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRh
Y2hlZChDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5z
dGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNkbUlu
c3RhbmNlQXR0YWNoZWQoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVu
dGlmaWVyKCkpLCBtX2lkKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNk
bUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5j
ZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpDZG1JbnN0YW5jZURldGFjaGVkKGRvd25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihp
bnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNl
KENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlm
IChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6QXR0ZW1wdFRvRGVjcnlwdFdp
dGhJbnN0YW5jZShkb3duY2FzdDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZp
ZXIoKSksIG1faWQpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGlu
Z0ZvcktleUNoYW5nZWQoKQpAQCAtOTE5LDYgKzkyNiwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQogICAgIG1fcGxheWVyLT53YWl0aW5n
Rm9yS2V5Q2hhbmdlZCgpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIElQ
Qzo6RGF0YVJlZmVyZW5jZSYmIGluaXREYXRhKQoreworICAgIGF1dG8gaW5pdERhdGFCdWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKTsK
KyAgICBtX3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBl
LCBXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSk7Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpA
QCAtOTI2LDYgKzkzOSwxMyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGlu
Z0ZvcktleSgpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91bGQpCit7
CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OlNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKSwgbV9pZCk7Cit9CisjZW5k
aWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oCmluZGV4IDEzMmYzMGFiMjliNmU1MDlmMTEzOTQ5MjU4MGE2ZTM2NzFj
Yzc5MDkuLmZlMjkzMTgwZWRiOTVjMjNhNzYzNDdmMTMwYTdjNDZjNGI4ZDA0YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaApAQCAtMTMyLDYgKzEzMiw3IEBAIHB1YmxpYzoKIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdm9pZCB3YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwor
ICAgIHZvaWQgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiwgSVBD
OjpEYXRhUmVmZXJlbmNlJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQpAQCAtMzE3LDYgKzMxOCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgd2FpdGlu
Z0ZvcktleSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3Vs
ZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkgZmluYWw7CisjZW5kaWYKKwogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24o
KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFdlYkNv
cmU6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4IGU4ODk3YjZhMTBhMTBkNGI3MDA5Mjk4Yzdh
YTI3MjhiZmUxMTI5N2EuLjMzZTJhOThkNDc5ODc5ZDIxNWI0ZDA0MWFmZTdhYjUwZTgzNjJkZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC03NSw2
ICs3NSw3IEBAIG1lc3NhZ2VzIC0+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBOb3RSZWZDb3Vu
dGVkIHsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgV2FpdGluZ0ZvcktleUNo
YW5nZWQoKQorICAgIEluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKFN0cmluZyBpbml0RGF0
YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBpbml0RGF0YSkKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWI1ZGFhOGEyOWJjZDk4ZTYy
NzA5MzE3NWM5ZjcwNjViOWE3MGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC0wLDAgKzEsMTc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1SZXN0cmljdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IFJlbW90ZUNETTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQ0RNPihuZXcgUmVtb3RlQ0RNKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUo
aWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETTo6UmVtb3RlQ0RN
KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JZGVudGlmaWVy
JiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9m
YWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkp
CisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKwor
Ym9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1cHBvcnRzIHsgZmFsc2UgfTsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzQ29uZmlndXJhdGlv
bjo6UmVwbHkoc3VwcG9ydHMpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0czsK
K30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlv
bnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3Qg
Q0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZhY3Rv
cnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgc3VwcG9ydHMgeyBmYWxzZSB9
OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRo
UmVzdHJpY3Rpb25zKGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyksIE1lc3NhZ2VzOjpSZW1v
dGVDRE1Qcm94eTo6U3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9uczo6UmVwbHko
c3VwcG9ydHMpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0czsKK30KKworYm9v
bCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1TZXNzaW9uVHlwZSYgdHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYm9vbCBzdXBwb3J0cyB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlQ0RNUHJveHk6OlN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbih0eXBlLCBj
b25maWd1cmF0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpTdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb246OlJlcGx5KHN1cHBvcnRzKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0
YSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlcy5jb250YWlu
cyh0eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdXBwb3J0cyB7IGZh
bHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlN1cHBvcnRzSW5pdERhdGEodHlw
ZSwgZGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uOjpSZXBseShzdXBwb3J0cyksIG1faWRlbnRpZmllcik7CisgICAgcmV0
dXJuIHN1cHBvcnRzOworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OmRpc3RpbmN0aXZl
SWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QK
K3sKKyAgICBDRE1SZXF1aXJlbWVudCByZXF1aXJlbWVudCB7IENETVJlcXVpcmVtZW50OjpOb3RB
bGxvd2VkIH07CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiByZXF1aXJlbWVu
dDsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpEaXN0aW5jdGl2ZUlkZW50aWZpZXJz
UmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSwgTWVzc2FnZXM6OlJlbW90
ZUNETVByb3h5OjpEaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQ6OlJlcGx5KHJlcXVp
cmVtZW50KSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVxdWlyZW1lbnQ7Cit9CisKK0NE
TVJlcXVpcmVtZW50IFJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgQ0RNUmVzdHJp
Y3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0Cit7CisgICAgQ0RNUmVxdWlyZW1lbnQgcmVxdWly
ZW1lbnQgeyBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCB9OworICAgIGlmICghbV9mYWN0b3J5
KQorICAgICAgICByZXR1cm4gcmVxdWlyZW1lbnQ7CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Q
cm94eTo6UGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uZmlndXJhdGlvbiwgcmVzdHJpY3Rp
b25zKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpQZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVu
dDo6UmVwbHkocmVxdWlyZW1lbnQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiByZXF1aXJl
bWVudDsKK30KKworYm9vbCBSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlx
dWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbikgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYm9vbCBmbGFnIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVDRE1Qcm94eTo6RGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENs
ZWFyYWJsZShjb25maWd1cmF0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpEaXN0aW5j
dGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlOjpSZXBseShmbGFn
KSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gZmxhZzsKK30KKworUmVmUHRyPENETUluc3Rh
bmNlPiBSZW1vdGVDRE06OmNyZWF0ZUluc3RhbmNlKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXIgaWQ7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkNyZWF0ZUluc3RhbmNlKCksIE1lc3NhZ2Vz
OjpSZW1vdGVDRE1Qcm94eTo6Q3JlYXRlSW5zdGFuY2U6OlJlcGx5KGlkLCBjb25maWd1cmF0aW9u
KSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3Rv
cnkuZ2V0KCkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFtX2ZhY3Rvcnkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0
aWFsaXplKCksIG1faWRlbnRpZmllcik7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90
ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25z
dAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBzYW5pdGl6ZWRSZXNwb25zZTsKKyAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2FuaXRpemVSZXNwb25zZShyZXNwb25zZSksIE1lc3Nh
Z2VzOjpSZW1vdGVDRE1Qcm94eTo6U2FuaXRpemVSZXNwb25zZTo6UmVwbHkoc2FuaXRpemVkUmVz
cG9uc2UpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBXVEZNb3ZlKHNhbml0aXplZFJlc3Bv
bnNlLmJ1ZmZlcigpKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVDRE06OnNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBjb25zdAoreworICAgIGlmICghbV9m
YWN0b3J5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3Ry
aW5nPiBzYW5pdGl6ZWRTZXNzaW9uSWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OlNh
bml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6U2Fu
aXRpemVTZXNzaW9uSWQ6OlJlcGx5KHNhbml0aXplZFNlc3Npb25JZCksIG1faWRlbnRpZmllcik7
CisgICAgcmV0dXJuIHNhbml0aXplZFNlc3Npb25JZDsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZmM2MzNGVkMmMyMDIzYWRkMjBhZWE4OWM3ZGU0YTdhYzJjNGJiZTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVDRE0gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJpdmF0ZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IGNyZWF0ZShXZWFrUHRy
PFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbiYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE0oKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6CisgICAgUmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3Rl
Q0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOworCisgICAgYm9vbCBz
dXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJl
c3RyaWN0aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lv
blR5cGUmLCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1S
ZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29y
ZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0
aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3Rl
bnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUo
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsK
KyAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklk
KGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworCisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1
cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRp
b24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQorICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBw
b3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24u
c3VwcG9ydGVkUm9idXN0bmVzc2VzOyB9CisgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1Nlc3Npb25zOyB9CisKKyAgICBXZWFr
UHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlv
bjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2
MmM0NjRmZGZkY2Q4YzM1NzU2YjBlMzhkYWQwZjg5MzkwNTg4NjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRp
b24uaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
IDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiB7
CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgVmVj
dG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICBib29sIHN1cHBvcnRz
U2VydmVyQ2VydGlmaWNhdGVzOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uczsKKworICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkSW5pdERhdGFUeXBlczsK
KyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGVuY29k
ZXIgPDwgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3Vw
cG9ydHNTZXNzaW9uczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAg
ICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1
cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkSW5pdERh
dGFUeXBlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0
cmluZz4+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0
ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkUm9idXN0bmVzc2VzKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBz
dXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nl
cnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRl
cykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gc3VwcG9ydHNTZXNzaW9uczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nlc3Np
b25zOworICAgICAgICBpZiAoIXN1cHBvcnRzU2Vzc2lvbnMpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgq
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyksCisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBwb3J0ZWRS
b2J1c3RuZXNzZXMpLAorICAgICAgICAgICAgKnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzLAor
ICAgICAgICAgICAgKnN1cHBvcnRzU2Vzc2lvbnMsCisgICAgICAgIH19OworICAgIH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI0YWY4M2UzODI5ZWVhMzczZWNjNDZjMjY4MDU1ZTY5NjI4YTkzOWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3Rvcnku
Y3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90
ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkoV2ViUHJvY2VzcyYgcHJvY2VzcykKKyAgICA6
IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5Ojp+UmVtb3RlQ0RN
RmFjdG9yeSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5Ojp1cGRhdGVQcmVm
ZXJlbmNlcyhjb25zdCBXZWJDb3JlOjpTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgaWYgKHNl
dHRpbmdzLnVzZUdQVVByb2Nlc3NGb3JNZWRpYSgpKSB7CisgICAgICAgIGF1dG8mIGZhY3Rvcmll
cyA9IENETUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICAgICAgZmFjdG9yaWVz
LmNsZWFyKCk7CisgICAgICAgIGZhY3Rvcmllcy5hcHBlbmQodGhpcyk7CisgICAgfSBlbHNlCisg
ICAgICAgIENETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKCk7Cit9CisKKworY29uc3QgY2hhciog
UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiUmVtb3Rl
Q0RNRmFjdG9yeSI7Cit9CisKK0dQVVByb2Nlc3NDb25uZWN0aW9uJiBSZW1vdGVDRE1GYWN0b3J5
OjpncHVQcm9jZXNzQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpOworfQorCitib29sIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBv
cnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIGJvb2wgc3VwcG9y
dGVkID0gZmFsc2U7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW0o
a2V5U3lzdGVtKSwgTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlT
eXN0ZW06OlJlcGx5KHN1cHBvcnRlZCksIHsgfSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZDsKK30K
Kworc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IFJlbW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNE
TShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBSZW1vdGVDRE1JZGVudGlmaWVyIGlk
OworICAgIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpDcmVhdGVDRE0oa2V5U3lzdGVtKSwgTWVzc2FnZXM6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eTo6Q3JlYXRlQ0RNOjpSZXBseShpZCwgY29uZmlndXJhdGlvbiksIHsgfSk7Cisg
ICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFJlbW90ZUNE
TTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1
cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6YWRkU2Vzc2lvbihSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uPiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAg
IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpkaWRS
ZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdl
dChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
VHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZjY2ViZTg0YzJiMTJhZDQyMzgzOGEzNjI3YTA2NGVlYmQ0NzA5NTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnkuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVt
ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9u
OworY2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOworY2xhc3MgUmVtb3RlQ0RNOworY2xhc3MgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOworY2xhc3MgV2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeSBm
aW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6OkNETUZhY3RvcnkKKyAgICAsIHB1YmxpYyBXZWJQ
cm9jZXNzU3VwcGxlbWVudAorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUNETUZh
Y3Rvcnk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBSZW1vdGVDRE1GYWN0b3J5KFdlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVD
RE1GYWN0b3J5KCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
KyAgICBXZWJQcm9jZXNzJiBwcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzOyB9CisK
KyAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKworICAg
IHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmKTsKKworICAg
IHZvaWQgZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXIsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+JiYpOworICAgIHZvaWQgcmVt
b3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKworcHJpdmF0
ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXIsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+PiBtX3Nlc3Npb25zOworICAgIEhh
c2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4+IG1f
Y2RtczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWUzYTM4MTljMTcwN2I1NThiM2ZkOWFhYTg4MTYzMTU4
MzkyZmFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlQ0RNSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcg
UmVtb3RlQ0RNSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSWRlbnRpZmll
clR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQzNzM5ZjAzZGM1OWVhZDcxZWQ3YTBmYzAzYjZjYzE5N2RhYWQ1MzkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitSZWY8UmVtb3RlQ0RNSW5zdGFuY2U+IFJlbW90ZUNETUluc3RhbmNlOjpj
cmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJiBjb25m
aWd1cmF0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNETUluc3RhbmNl
KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7
Cit9CisKK1JlbW90ZUNETUluc3RhbmNlOjpSZW1vdGVDRE1JbnN0YW5jZShXZWFrUHRyPFJlbW90
ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaWQs
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBt
X2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlk
KSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQor
CithdXRvIFJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgLT4g
U3VjY2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBGYWls
ZWQ7CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRp
b24pLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uOjpSZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBz
dWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK2F1dG8gUmVtb3RlQ0RNSW5zdGFu
Y2U6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCkgLT4gU3Vj
Y2Vzc1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7
CisKKyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6U2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYWxsb3dlZCks
IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXREaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzQWxsb3dlZDo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4g
c3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQorCithdXRvIFJlbW90ZUNETUluc3Rh
bmNlOjpzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dlZCkgLT4gU3VjY2Vzc1Zh
bHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAg
ICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6U2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChhbGxvd2VkKSwgTWVzc2FnZXM6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OlNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ6OlJlcGx5KHN1
Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2NlZWRl
ZCA6IEZhaWxlZDsKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSkgLT4gU3VjY2Vz
c1ZhbHVlCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisK
KyAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6U2V0U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuZ2V0KCkpLCBNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U2VydmVyQ2VydGlmaWNhdGU6OlJlcGx5
KHN1Y2NlZWRlZCksIG1faWRlbnRpZmllcik7CisgICAgcmV0dXJuIHN1Y2NlZWRlZCA/IFN1Y2Nl
ZWRlZCA6IEZhaWxlZDsKK30KKworYXV0byBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkgLT4gU3VjY2Vzc1ZhbHVlCit7CisgICAg
aWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBGYWlsZWQ7CisKKyAgICBib29sIHN1Y2Nl
ZWRlZCB7IGZhbHNlIH07CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0
U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeTo6UmVwbHkoc3VjY2VlZGVkKSwgbV9pZGVudGlmaWVy
KTsKKyAgICByZXR1cm4gc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkOworfQorCitSZWZQ
dHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRl
U2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZDsKKyAgICBtX2Zh
Y3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uKCksIE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBseShpZCksIG1faWRlbnRp
Zmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBz
ZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUobWFrZVdlYWtQdHIobV9m
YWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCkpOworICAgIG1fZmFjdG9yeS0+YWRkU2Vzc2lvbihp
ZCwgc2Vzc2lvbi5jb3B5UmVmKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQorCithdXRvIFJl
bW90ZUNETUluc3RhbmNlOjpzZXRIRENQU3RhdHVzKEhEQ1BTdGF0dXMgc3RhdHVzKSAtPiBTdWNj
ZXNzVmFsdWUKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIEZhaWxlZDsK
KworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1J
bnN0YW5jZVByb3h5OjpTZXRIRENQU3RhdHVzKHN0YXR1cyksIE1lc3NhZ2VzOjpSZW1vdGVDRE1J
bnN0YW5jZVByb3h5OjpTZXRIRENQU3RhdHVzOjpSZXBseShzdWNjZWVkZWQpLCBtX2lkZW50aWZp
ZXIpOworICAgIHJldHVybiBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVkODI2YmFhNDEyZDU2MGUwYzA2OThh
MGUyZGM1ZTgwZTIwOGJlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2UgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6Q0RNSW5zdGFuY2UgeworcHVibGljOgorICAgIHZpcnR1YWwgflJl
bW90ZUNETUluc3RhbmNlKCkgPSBkZWZhdWx0OworICAgIHN0YXRpYyBSZWY8UmVtb3RlQ0RNSW5z
dGFuY2U+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYmLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik7CisKKyAg
ICBjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVDRE1JbnN0YW5j
ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICBJbXBsZW1lbnRh
dGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVt
ZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KKyAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBm
aW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQo
Ym9vbCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQo
Ym9vbCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsg
fQorICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
KSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0SERDUFN0YXR1cyhIRENQU3RhdHVzKSBmaW5h
bDsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisKK30KKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19DRE1fSU5TVEFOQ0UoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZSwgV2ViQ29y
ZTo6Q0RNSW5zdGFuY2U6OkltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlKQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MzJkNzJlN2Nl
NGI4NTNmMmQzYjkzNDU1ZTE5MjgxYzQxOWZhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bi5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUg
PFdlYkNvcmUvQ29udGVudFR5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3Vy
YXRpb24geworICAgIFN0cmluZyBrZXlTeXN0ZW07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBlbmNvZGVyIDw8IGtleVN5c3RlbTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPFN0
cmluZz4ga2V5U3lzdGVtOworICAgICAgICBkZWNvZGVyID4+IGtleVN5c3RlbTsKKyAgICAgICAg
aWYgKCFrZXlTeXN0ZW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqa2V5U3lzdGVtKSwKKyAgICAgICAg
fX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZmZGU2OTFjM2U4OTViODg1OWU2
MjA1YTcxZTExNWZhOWI0ZmUwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgKQEAgLTAsMCAr
MSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElk
ZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIg
PSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTA1Y2NiZTIzOTZmOWIyZjg2YzljNmIyNmYzM2UxYmEyMzViMDE3OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
aCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRlKFdlYWtQ
dHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyJiYgaWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpKSk7Cit9CisKK1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVt
b3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyJiYgaWQpCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRl
bnRpZmllcihXVEZNb3ZlKGlkKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2so
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwg
V1RGTW92ZShpbml0RGF0YSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFtZXNzYWdlLmJ1ZmZlcigpKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayhtZXNzYWdl
LmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAg
aWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBXVEZNb3ZlKHJlc3BvbnNlKSksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRp
b25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBj
aGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHNlc3Npb25XYXNDbG9zZWQsIFdURk1v
dmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNz
YWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZp
ZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24oTGlj
ZW5zZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3Rv
cnkpIHsKKyAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6TG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklkLCBvcmlnaW4pLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFu
Z2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxN
ZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmUgbG9h
ZEZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlz
KSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRl
ZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCwgbG9hZEZhaWx1cmUpOworICAgIH0sIG1faWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6Q2xvc2VTZXNzaW9uKHNlc3Npb25JZCksIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9LCBtX2lk
ZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkg
eworICAgICAgICBjYWxsYmFjayh7IH0sIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywg
T3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGJvb2wg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
IHJlYWxNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNz
YWdlLnZhbHVlKCkuYnVmZmVyKCkpCisgICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2Uu
dmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2Nl
ZWRlZCA6IEZhaWxlZCk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6U3RvcmVSZWNvcmRPZktleVVzYWdl
KHNlc3Npb25JZCksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcykK
K3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNl
cyhXVEZNb3ZlKGtleVN0YXR1c2VzKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSB0eXBlLCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQoreworICAgIGlmIChtX2NsaWVudCAmJiBt
ZXNzYWdlLmJ1ZmZlcigpKQorICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UodHlwZSwgbWVz
c2FnZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c2Vzc2lvbklkQ2hhbmdlZChz
ZXNzaW9uSWQpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjQ5ODc5ZjQ4MzdmYzMyMmYxZDExNWI2ODgxMDQ5OTVkZDA5NmNkZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gZmluYWwgOiBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLCAgcHVibGljIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0
ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXImJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKCkgPSBk
ZWZhdWx0OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5Owor
ICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYs
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJik7CisKKyAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgdXBk
YXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpOworICAgIHZvaWQgc2VuZE1lc3NhZ2Uo
V2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYm
KTsKKyAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJik7CisKKworICAgIHZv
aWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYm
IGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQorICAgIHZvaWQg
Y2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQorICAgIHZvaWQgcmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRT
ZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc3RvcmVSZWNvcmRP
ZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBmaW5hbDsKKworICAgIFdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM4YzIzOTJlN2VmODYyMDQ2MjFkMjg0MTQzOGI1ZWRmNGQzODE1MzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24gTm90UmVmQ291bnRlZCB7CisgICAgVXBkYXRlS2V5U3RhdHVzZXMoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMpCisgICAgU2VuZE1l
c3NhZ2UoZW51bTp1aW50OF90IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5cGUsIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlKQorICAgIFNlc3Npb25JZENoYW5nZWQoU3Ry
aW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NmFjZDEyNjVhZjBjODQ2Mzg4ZTIzZjljY2Ex
NmQ5MDIzMzhmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaApAQCAtMCwwICsx
LDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRl
bnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IGFlMDE2MWFhZDk0NzRkNmIwZjFmOTAwYjA1
NDRmNTk4MGQzNjk4ZmYuLmI5ZjRkMmE3ZTMyN2ViZTMyMGQ1N2U3NThiYWIwM2U1N2E2YWQ2NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoVklE
RU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNz
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggMTZkNmY4Y2E3MzM1NTRiMTJjYmFhMGVjZmM5MjJlYmQwZjY1MjhkMS4uOGZiYzc0MzFiZTc3
YTBjOTYyNWFkMzE4NDdmYWUzNmNhOTA4M2MyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMyMCw2ICszMjAsOSBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgor
I2VuZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNjg1LDYgKzM2ODgsOSBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlKQogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPigpLT51cGRhdGVQ
cmVmZXJlbmNlcyhzZXR0aW5ncyk7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCktPnVw
ZGF0ZVByZWZlcmVuY2VzKHNldHRpbmdzKTsKKyNlbmRpZgogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0N2M5YzA4YWRlZTQ1ODVkOTEzMzQ2
YjFhYmRlZTg2N2M1ZjFjYjU3Li5iNWQ3MmI0ZTdmNjIwM2ZmM2NiYzUyMjI2ZDc2ODM1ZmIyMDRl
NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNzQsNiAr
MTc0LDEwIEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2Vu
ZGlmCisKICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nl
c3Npb25JRC0+dG9VSW50NjQoKSA6IDApCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
Y2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCgpLCBjaGFubmVsLCAiJXAgLSBbc2Vzc2lvbklEPSUiIFBSSXU2NCAiXSBXZWJQcm9jZXNzOjoi
IGZtdCwgdGhpcywgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCwgIyNfX1ZBX0FSR1NfXykKIApAQCAt
MjQwLDYgKzI0NCwxMCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICBhZGRTdXBwbGVt
ZW50PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGFkZFN1cHBsZW1lbnQ8
UmVtb3RlQ0RNRmFjdG9yeT4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391514</attachid>
            <date>2020-02-23 21:50:10 -0800</date>
            <delta_ts>2020-02-24 06:55:18 -0800</delta_ts>
            <desc>Part 1: WebCore</desc>
            <filename>bug-208090-20200223215009.patch</filename>
            <type>text/plain</type>
            <size>65059</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uYmZmNzBhNDgxMzU5MWJiOGIzOGY2ZmZjNGE3MTYy
ZDI0OThhNjI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5OjpyZXNldEZhY3Rvcmll
cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVxdWlyZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1
cHBvcnRlZFJvYnVzdG5lc3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydGVk
SW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0
ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnN1cHBv
cnRlZFJvYnVzdG5lc3MgY29uc3QpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYW4gdW51c2VkIGxvY2FsIHZhcmlhYmxlIGFmdGVy
IHIyNTY4MDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFkNGY3MWQ3YzRiNDk2OTEwMzIxNjMzY2Fh
ZmMzOGQ2MGY2MmNmMWQuLjVhYjdiYTUxM2I2MDExYWZhMzJlMTE2YWI2OGJhNTEzOWI2YTU1NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTAzMSw2ICsxMDMxLDIwIEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCiAgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKIAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAor
ICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorICAgIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZVNlc3Npb24uaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0
YXR1cy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgK
KyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisgICAgcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
LmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAorICAgIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKKwogICAgIHBsYXRmb3JtL2dh
bWVwYWQvR2FtZXBhZFByb3ZpZGVyLmgKICAgICBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92
aWRlckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDRiYmIy
YmNlNjE4NzRiN2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAuLmM0ZTE0MjZhMGMzZmZiNWFhODEw
ZDRjNWQwYTY4YmQwN2U5ZmVmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBPcHRpb25hbDxNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24+IENETTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdCBN
ZWRpYQogICAgICAgICAgICAgaWYgKGluaXREYXRhVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChtX3ByaXZhdGUgJiYgbV9wcml2YXRl
LT5zdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgICAgICAgICAgaWYgKG1f
cHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhp
bml0RGF0YVR5cGUpKQogICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChpbml0
RGF0YVR5cGUpOwogICAgICAgICB9CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBPcHRpb25hbDxWZWN0
b3I8TWVkaWFLZXlTeXN0ZW1NZWRpYUNhcGFiaWxpdHk+PiBDRE06OmdldFN1cHBvcnRlZENhcGFi
aWxpdGllc0ZvcgogICAgICAgICAvLyAzLjExLiBJZiBjb250ZW50IHR5cGUgaXMgbm90IHN0cmlj
dGx5IGEgYXVkaW8vdmlkZW8gdHlwZSwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgog
ICAgICAgICAvLyAzLjEyLiBJZiByb2J1c3RuZXNzIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nIGFu
ZCBjb250YWlucyBhbiB1bnJlY29nbml6ZWQgdmFsdWUgb3IgYSB2YWx1ZSBub3Qgc3VwcG9ydGVk
IGJ5CiAgICAgICAgIC8vICAgICAgIGltcGxlbWVudGF0aW9uLCBjb250aW51ZSB0byB0aGUgbmV4
dCBpdGVyYXRpb24uIFN0cmluZyBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgotICAgICAg
ICBpZiAoIXJvYnVzdG5lc3MuaXNFbXB0eSgpICYmICFtX3ByaXZhdGUtPnN1cHBvcnRzUm9idXN0
bmVzcyhyb2J1c3RuZXNzKSkKKyAgICAgICAgaWYgKCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAh
bV9wcml2YXRlLT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKS5jb250YWlucyhyb2J1c3RuZXNzKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIDMuMTMuIElmIHRoZSB1c2VyIGFn
ZW50IGFuZCBpbXBsZW1lbnRhdGlvbiBkZWZpbml0ZWx5IHN1cHBvcnQgcGxheWJhY2sgb2YgZW5j
cnlwdGVkIG1lZGlhIGRhdGEgZm9yIHRoZQpAQCAtNjEyLDcgKzYxMiw3IEBAIGJvb2wgQ0RNOjpz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKIAogYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBl
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKTsK
KyAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBl
cygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IENE
TTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggZGExOWJiZmYy
YzdjZTgyYmVmYTgwMzVhZDc1NDJlM2U5ZjIyYTY5ZC4uMjlmYWI0OTkwNjgyNTgzMmE1YWRkZDk5
YTgwZThmMzRkOGQzMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDAxLDcgKzQwMSw3IEBA
IHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25z
ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0IHNlc3Npb24gY2xv
c2VkIGJlIGZhbHNlLgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhlIENETSBpbnN0YW5j
ZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAg
ICAgLy8gNi43LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0g
ICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nl
c3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXND
bG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGNo
YW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFs
PENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Np
b246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNl
U2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgc2FuaXRp
emVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Ns
b3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hh
bmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdiMThhNTBhNDRmNmE4ZTYz
ZDE0YzMyODg0MzM1Njc5MDFkMTEyMGIuLmQ3MTM2MTViMDBhYzFhMjUzNGFhZTk0OWE3NDg3N2Yx
YjNkOWY5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQwNjUsNiArNDA2NSwxOSBAQAogCQlDRDNBNDk1RjE3QTlEMDFCMDAy
NzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEM0E0OTU2MTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oICov
OyB9OwogCQlDRDNBNDk2MjE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1OTE3QTlEMDFC
MDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggKi87IH07CiAJCUNEM0E0OTY1MTdBOUQwMUIwMDI3
NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVy
TGlzdC5oICovOyB9OworCQlDRDNDRTBGODI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRW5jcnlwdGlv
blNjaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RGNzU2OUIyMTVDMjNBNDAwRUZDQjUwIC8qIENETUVuY3J5cHRpb25TY2hlbWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGOTI0MDFB
QUQ5MDA0QkEwMUQgLyogQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1RDIxRjcxQ0I2QjAwRjUyNUM1IC8qIENETUZhY3Rvcnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDND
RTBGQTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNFMUY3MUNCNkEwMEY1MjVDNSAvKiBD
RE1JbnN0YW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOUQzNzVBMjE1
MTYzRTQwMDQ5NjU3QiAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGQzI0MDFBQUQ5MDA0QkEwMUQg
LyogQ0RNS2V5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDk0QTVENDFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNS2V5U3RhdHVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkQyNDAx
QUFEOTAwNEJBMDFEIC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNEMUY3MUNCNjkwMEY1MjVD
NSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkUyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TU1lZGlhQ2FwYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q5NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NF
MEZGMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1NZXNzYWdlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1RDYxRjcxQ0I2RDAwRjUyNUM1IC8q
IENETU1lc3NhZ2VUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQ0QzQ0UxMDAyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNGMUY3MUNC
NkEwMEY1MjVDNSAvKiBDRE1Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVD
RjFGNzFDQjYxMDBGNTI1QzUgLyogQ0RNUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RN
UmVxdWlyZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEOTRBNUNDMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1SZXF1aXJlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTAzMjQwMUFB
REEwMDRCQTAxRCAvKiBDRE1SZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQwMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1SZXN0
cmljdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDRDNDRTEwNDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ1MUY3MUNCNkQw
MEY1MjVDNSAvKiBDRE1TZXNzaW9uVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJbWFnZUJ1
ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDNFMjFEQjIxODMzRjUxMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXND
Ry5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
M0UyNTFDMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2IC8qIEdy
aWRBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0QzRTI1MjQxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTIy
MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggKi87IH07CkBA
IC00MTk1LDcgKzQyMDgsNyBAQAogCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1Ry
YWNrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RG
MkIwMEYxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCAqLzsgfTsKIAkJQ0RGNEI3MTIx
RTAwODdBRTAwRTIzNUEyIC8qIExlZ2FjeUNETVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBM
ZWdhY3lDRE1TZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0RGNEI3MTUxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0QjcxMzFFMDBCN0U1MDBF
MjM1QTIgLyogQ0RNLmNwcCAqLzsgfTsKLQkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEyIC8qIENE
TS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3
MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovOyB9OworCQlDREY0QjcxNjFFMDBCN0U1MDBF
MjM1QTIgLyogQ0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREY0QjcxNDFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNEI3MTgxRTAxQ0I5MTAwRTIzNUEy
IC8qIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTcxRTAxQ0I5MTAwRTIzNUEyIC8qIE1lZGlhS2V5c1Jl
c3RyaWN0aW9ucy5oICovOyB9OwogCQlDREY0QjcxQTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFL
ZXlTZXNzaW9uVHlwZS5pZGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREY0QjcxOTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9uVHlwZS5p
ZGwgKi87IH07CiAJCUNERjRCNzFFMUUwMUUxMUEwMEUyMzVBMiAvKiBKU01lZGlhS2V5U2Vzc2lv
blR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RjRCNzFDMUUwMUUxMUEwMEUyMzVBMiAvKiBKU01lZGlhS2V5U2Vzc2lvblR5cGUuaCAqLzsgfTsK
QEAgLTI5MjYyLDkgKzI5Mjc1LDIyIEBACiAJCQkJNjU1MEI2OUUwOTlERjAyNzAwOTBENzgxIC8q
IENEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIz
NUEyIC8qIENETS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q5NEE1REUxRjcyRjU3QjAwRjUyNUM1
IC8qIENETUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJB
MDFEIC8qIENETUVuY3J5cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEY5
MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREI3
MDQ1QTFGNzQ2NUExMDAzOTIzREYgLyogQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEM0NFMEZBMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkIyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkQyNDAxQUFEOTAwNEJBMDFE
IC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NF
MEZFMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1NZWRpYUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUNEM0NFMEZGMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1NZXNzYWdlVHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0QzQ0UxMDAyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEMzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAvKiBDRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwMTI0MDFBQURB
MDA0QkEwMUQgLyogQ0RNUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAyMjQwMUFB
REEwMDRCQTAxRCAvKiBDRE1SZXF1aXJlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0Ux
MDMyNDAxQUFEQTAwNEJBMDFEIC8qIENETVJlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RFNTk1OTcxQkYyNkUyMTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTA0MjQwMUFBREEwMDRCQTAxRCAvKiBDRE1T
ZXNzaW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJE
IC8qIENlcnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTFCOEYwQjUyMTk1M0Q2
NTAwMEMyQjAwIC8qIENlcnRpZmljYXRlSW5mb0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
MzZGRDE1MTZDNzgyNjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0ZTlmOGVh
MjA1YzgwY2ZhMjk4NWZlZjE4NWJmZWZlMGMxMjI4MmI4Li45NGVmNWE3Yjk5NDBmYWEyMmY1OWNj
OTRiODY2ZmExMzlmZjk4YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTI1NjEsMTUgKzI1NjEsMjUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRS
ZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogfQogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKQor
eworICAgIGlmICghbV9wbGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBib29sIHNob3VsZENv
bnRpbnVlID0gaGFzRXZlbnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXkiKSB8fCAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQo
KSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBv
cnRRdWlyaygpKTsKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChzaG91bGRDb250aW51ZSk7Cit9CisjZW5kaWYKKwogUmVmUHRyPEFycmF5QnVmZmVyPiBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYg
a2V5SWQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fd2ViS2l0TWVkaWFLZXlzID8gbV93ZWJLaXRN
ZWRpYUtleXMtPmNhY2hlZEtleUZvcktleUlkKGtleUlkKSA6IG51bGxwdHI7CiB9CiAKLWJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERh
dGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJy
YXkqIGluaXREYXRhKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWhhc0V2ZW50TGlzdGVuZXJz
KCJ3ZWJraXRuZWVka2V5IikKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpAQCAtMjU4MCwx
NCArMjU5MCwxMiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KFVpbnQ4QXJyYXkqIGluaXREYXRhKQogICAgICAgICApIHsKICAgICAgICAgbV9lcnJvciA9IE1l
ZGlhRXJyb3I6OmNyZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfRU5DUllQVEVEKTsKICAgICAg
ICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlF
dmVudCwgaW5pdERhdGEpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgbV9hc3lu
Y0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC01MTI5LDYgKzUxMzcsMTAgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCiAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CiAjZW5k
aWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5k
aWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQo
KQpAQCAtNTg5MSw2ICs1OTAzLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hF
dmVudChFdmVudCYgZXZlbnQpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxp
c3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpCisg
ICAgICAgIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKKwogICAg
IGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxh
YmlsaXR5Y2hhbmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6YWRkRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKTsKIApAQCAtNTkxMiw2ICs1
OTI5LDExIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7Cisj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50
KQorICAgICAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlmCisK
ICAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2
YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OnJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZjA1ZTIyM2I5MzJmNzE3YzFhY2MzMDBiNWY4MTFk
NjkxNGIyOTZhNi4uZmUwN2FkMGY0Nzk3ZTcwOWE1NzA5OGRiYzU5MzM1NzlmYTQwM2U0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTY4Miw3ICs2ODIsNyBAQCBw
cml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYg
a2V5SWQpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhB
cnJheSopIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSop
IGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCBmaW5hbDsKICNlbmRpZgogCkBAIC02OTYsNiArNjk2LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gQ0RNQ2xpZW50CiAgICAgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFj
a0lmTmVjZXNzYXJ5KCkgZmluYWw7CiAjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgdXBkYXRlU2hv
dWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgogICAgIAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCBtZWRpYVBsYXllckN1cnJlbnRQbGF5YmFj
a1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKGJvb2wpIGZpbmFsOwpAQCAtMTE2OCw2ICsxMTcyLDcg
QEAgcHJpdmF0ZToKICAgICBNZWRpYVByb3ZpZGVyIG1fbWVkaWFQcm92aWRlcjsKIAogI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9oYXNOZWVka2V5TGlzdGVu
ZXIgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJLaXRNZWRpYUtleXM+IG1fd2ViS2l0TWVkaWFL
ZXlzOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAppbmRleCA3NGIzYWE3ZDdiZGIw
MGEyNjc1NmEwMjM2NTY2ZjM2ODgxMmJjZTNiLi4xYTdhNTYyN2RiY2E2NDFiNDljZTdlNTZlNjcx
NmUzMThhOTg4YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCkBAIC0yNywxMyArMjcsMjcg
QEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNRW5jcnlwdGlvblNj
aGVtZSB7CitlbnVtIGNsYXNzIENETUVuY3J5cHRpb25TY2hlbWUgOiB1aW50OF90IHsKICAgICBj
ZW5jLAogICAgIGNiY3MsCiB9OwogCiB9CiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWU+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9u
U2NoZW1lLAorICAgICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lOjpjZW5jLAorICAg
ICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lOjpjYmNzCisgICAgPjsKK307CisKK30K
KwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUZhY3RvcnkuY3BwCmluZGV4IDRiYjU5OWZhODA3M2QzYjg1NWQ4NDYxNzg2MTlkYmMw
MjYxMDU4ZjIuLjY2MWQ1YjRlYjc1MmVhNTVhYTJkOGU0ZjllZWQ2Mzg2ZWRkYWM1ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3Rv
cnkuY3BwCkBAIC01Nyw2ICs1NywxMSBAQCB2b2lkIENETUZhY3Rvcnk6OnVucmVnaXN0ZXJGYWN0
b3J5KENETUZhY3RvcnkmIGZhY3RvcnkpCiAgICAgcmVnaXN0ZXJlZEZhY3RvcmllcygpLnJlbW92
ZUFsbCgmZmFjdG9yeSk7CiB9CiAKK3ZvaWQgQ0RNRmFjdG9yeTo6cmVzZXRGYWN0b3JpZXMoKQor
eworICAgIHBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMocmVnaXN0ZXJlZEZhY3RvcmllcygpKTsK
K30KKwogI2lmICFVU0UoR1NUUkVBTUVSKSAmJiAhVVNFKEFWRk9VTkRBVElPTikKIHZvaWQgQ0RN
RmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZh
Y3RvcnkuaAppbmRleCA0NGVhYWIwN2U3NTdhZmU1OGI1MzYxZjVhZjEyYjI0Nzc2YTAzNTJlLi5l
MWFlNjA0MjE2YTk3NTkyZjMzY2I4MzYyZmMyYzIxYTJiMDg4YjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCkBAIC00Miw3
ICs0Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRl
PiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICBzdGF0aWMgVmVjdG9yPENETUZh
Y3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiByZWdpc3RlcmVkRmFjdG9yaWVzKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXRGYWN0b3JpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCByZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJGYWN0b3J5KENETUZhY3RvcnkmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
LmgKaW5kZXggOGY5ZjNlYjg3NDVjMzUyMDI4MzE0YzYwNmQyODlkNGUzZjcxYTA0OC4uN2ZlMDlm
MGFmM2ZkNzMwMzYyMzVjMjI3N2JhY2RlYmEwNjQ5YjE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC01Miw2ICs1
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgTW9jaywKICAgICAgICAgQ2xlYXJLZXksCiAgICAgICAg
IEZhaXJQbGF5U3RyZWFtaW5nLAorICAgICAgICBSZW1vdGUsCiAgICAgfTsKICAgICB2aXJ0dWFs
IEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCA9IDA7CiAKQEAg
LTY4LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBj
cmVhdGVTZXNzaW9uKCkgPSAwOwogCi0gICAgZW51bSBjbGFzcyBIRENQU3RhdHVzIHsKKyAgICBl
bnVtIGNsYXNzIEhEQ1BTdGF0dXMgOiB1aW50OF90IHsKICAgICAgICAgVW5rbm93biwKICAgICAg
ICAgVmFsaWQsCiAgICAgICAgIE91dHB1dFJlc3RyaWN0ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CmluZGV4IDg3MjVhMzFkOGJiM2UyMmJlMjFkZjA3ZTMyMGIzNmU3NTAzODZlMWEuLmQ0NjRiNzRk
MWM3MjAyYTlhMzM5ZGZmNjVkMDZlMDgyMDg5NjlkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CkBAIC03Miw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKICAgICB1c2luZyBNZXNz
YWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgdXNp
bmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNl
c3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywg
T3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYm
IG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgPSAwOwogCi0gICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgeworICAgIGVu
dW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCiAg
ICAgICAgIE5vU2Vzc2lvbkRhdGEsCiAgICAgICAgIE1pc21hdGNoZWRTZXNzaW9uVHlwZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0
YXR1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3Rh
dHVzLmgKaW5kZXggYWQ5Njk2MjM2MDRjZDE0NzA1NWEyN2I3MzM2ZjY3N2MwYjNhZjJjNC4uY2M1
ZTcxODZmNzRlZjhlODE0Y2IzYWY3NTVlMTYxYTY1YzIwODgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKQEAgLTMw
LDkgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETUtl
eVN0YXR1cyB7CitlbnVtIGNsYXNzIENETUtleVN0YXR1cyA6IHVpbnQ4X3QgewogICAgIFVzYWJs
ZSwKICAgICBFeHBpcmVkLAogICAgIFJlbGVhc2VkLApAQCAtNDQsNCArNDYsMjAgQEAgZW51bSBj
bGFzcyBDRE1LZXlTdGF0dXMgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUtleVN0
YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6Q0RN
S2V5U3RhdHVzLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6VXNhYmxlLAorICAgIFdlYkNv
cmU6OkNETUtleVN0YXR1czo6RXhwaXJlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlJl
bGVhc2VkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6T3V0cHV0UmVzdHJpY3RlZCwKKyAg
ICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6Ok91dHB1dERvd25zY2FsZWQsCisgICAgV2ViQ29yZTo6
Q0RNS2V5U3RhdHVzOjpTdGF0dXNQZW5kaW5nLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6
SW50ZXJuYWxFcnJvcgorICAgID47Cit9OworCit9CiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaAppbmRleCA2MTJkNjQ1
ZmFhNTI0OGY3MWYxYzE1NjdmNDUwN2U4OWYzYjMxY2U1Li44NTI1ODdjZWRhMDUxMjE0NDc5NTIy
ZmFjMzhlNGMwZmI5ODc0OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5o
CkBAIC00OCw2ICs0OCw2NyBAQCBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiB7CiAg
ICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyIHsgQ0RNUmVxdWlyZW1lbnQ6
Ok9wdGlvbmFsIH07CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlIHsgQ0RNUmVx
dWlyZW1lbnQ6Ok9wdGlvbmFsIH07CiAgICAgVmVjdG9yPENETVNlc3Npb25UeXBlPiBzZXNzaW9u
VHlwZXM7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGxhYmVsOwor
ICAgICAgICBlbmNvZGVyIDw8IGluaXREYXRhVHlwZXM7CisgICAgICAgIGVuY29kZXIgPDwgYXVk
aW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGVuY29kZXIgPDwgdmlkZW9DYXBhYmlsaXRpZXM7Cisg
ICAgICAgIGVuY29kZXIgPDwgZGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBlbmNvZGVy
IDw8IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZW5jb2RlciA8PCBzZXNzaW9uVHlwZXM7Cisg
ICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFs
PENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAgICAgZGVjb2RlciA+PiBs
YWJlbDsKKyAgICAgICAgaWYgKCFsYWJlbCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGluaXREYXRhVHlwZXM7Cisg
ICAgICAgIGRlY29kZXIgPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgaWYgKCFpbml0RGF0YVR5
cGVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gYXVkaW9DYXBhYmlsaXRpZXM7CisgICAgICAg
IGRlY29kZXIgPj4gYXVkaW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGlmICghYXVkaW9DYXBhYmls
aXRpZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlv
bmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAg
ICAgZGVjb2RlciA+PiB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgaWYgKCF2aWRlb0NhcGFi
aWxpdGllcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0
aW9uYWw8Q0RNUmVxdWlyZW1lbnQ+IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKKyAgICAgICAgZGVj
b2RlciA+PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJ
ZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgCisg
ICAgICAgIE9wdGlvbmFsPENETVJlcXVpcmVtZW50PiBwZXJzaXN0ZW50U3RhdGU7CisgICAgICAg
IGRlY29kZXIgPj4gcGVyc2lzdGVudFN0YXRlOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0
ZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8
VmVjdG9yPENETVNlc3Npb25UeXBlPj4gc2Vzc2lvblR5cGVzOworICAgICAgICBkZWNvZGVyID4+
IHNlc3Npb25UeXBlczsKKyAgICAgICAgaWYgKCFzZXNzaW9uVHlwZXMpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RG
TW92ZSgqbGFiZWwpLAorICAgICAgICAgICAgV1RGTW92ZSgqaW5pdERhdGFUeXBlcyksCisgICAg
ICAgICAgICBXVEZNb3ZlKCphdWRpb0NhcGFiaWxpdGllcyksCisgICAgICAgICAgICBXVEZNb3Zl
KCp2aWRlb0NhcGFiaWxpdGllcyksCisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVy
LAorICAgICAgICAgICAgKnBlcnNpc3RlbnRTdGF0ZSwKKyAgICAgICAgICAgIFdURk1vdmUoKnNl
c3Npb25UeXBlcyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETU1lZGlhQ2FwYWJpbGl0eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgKaW5kZXggOTAxYjU0ZmYwNTA4ZWRhOWJiYjg4YzVj
MWRiODY1MzhkY2UxNDI4Mi4uZjg0YTBkMTJhYjRjZDUyMGUzZjBlMDRkNjRlYmVmYzYzMTYyNTg3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
TWVkaWFDYXBhYmlsaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgKQEAgLTM5LDYgKzM5LDM5IEBAIHN0cnVjdCBDRE1N
ZWRpYUNhcGFiaWxpdHkgewogICAgIFN0cmluZyBjb250ZW50VHlwZTsKICAgICBTdHJpbmcgcm9i
dXN0bmVzczsKICAgICBPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1lPiBlbmNyeXB0aW9uU2No
ZW1lOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlw
ZTsKKyAgICAgICAgZW5jb2RlciA8PCByb2J1c3RuZXNzOworICAgICAgICBlbmNvZGVyIDw8IGVu
Y3J5cHRpb25TY2hlbWU7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Cisg
ICAgc3RhdGljIE9wdGlvbmFsPENETU1lZGlhQ2FwYWJpbGl0eT4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlOworICAg
ICAgICBkZWNvZGVyID4+IGNvbnRlbnRUeXBlOworICAgICAgICBpZiAoIWNvbnRlbnRUeXBlKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IHJvYnVzdG5lc3M7CisgICAgICAgIGRlY29kZXIgPj4gcm9idXN0bmVzczsKKyAgICAgICAg
aWYgKCFyb2J1c3RuZXNzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBPcHRpb25hbDxPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1lPj4gZW5jcnlwdGlvblNj
aGVtZTsKKyAgICAgICAgZGVjb2RlciA+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBpZiAo
IWVuY3J5cHRpb25TY2hlbWUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqY29udGVudFR5cGUpLAorICAg
ICAgICAgICAgV1RGTW92ZSgqcm9idXN0bmVzcyksCisgICAgICAgICAgICBXVEZNb3ZlKCplbmNy
eXB0aW9uU2NoZW1lKSwKKyAgICAgICAgfX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNTWVzc2FnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETU1lc3NhZ2VUeXBlLmgKaW5kZXggZTVmNzk2YTllMGUwNzUxYWEwMjc4MmI5YjY2NmNh
MjMxZWY3ZTYwOS4uOTViZjI4YzJhYTk0YTNkYTUwNDViNWVjMDBmMzU4Y2QyNmQ5NWNhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2Fn
ZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1N
ZXNzYWdlVHlwZS5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotZW51bSBjbGFzcyBDRE1NZXNzYWdlVHlwZSB7CitlbnVtIGNsYXNzIENETU1lc3NhZ2VUeXBl
IDogdWludDhfdCB7CiAgICAgTGljZW5zZVJlcXVlc3QsCiAgICAgTGljZW5zZVJlbmV3YWwsCiAg
ICAgTGljZW5zZVJlbGVhc2UsCkBAIC00MSw0ICs0MywxOCBAQCBlbnVtIGNsYXNzIENETU1lc3Nh
Z2VUeXBlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZT4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETU1lc3Nh
Z2VUeXBlLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3Qs
CisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwKKyAgICAg
ICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZWxlYXNlLAorICAgICAgICBXZWJD
b3JlOjpDRE1NZXNzYWdlVHlwZTo6SW5kaXZpZHVhbGl6YXRpb25SZXF1ZXN0CisgICAgPjsKK307
CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5kZXggMjVm
NzgxNmEyZmUxZGE2ZjkwYzJmZWY3Nzc1NTE0MDZhYTBmNGEwMy4uNzQ5ZmNkZjJmYzM3YTVlOWZl
NjI1ZDUzYTNlMDExYzcxYzRhZWQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNDEsMTEgKzQxLDExIEBAIGNsYXNz
IENETVByaXZhdGUgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETVByaXZhdGUoKSA9IGRlZmF1
bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0
cmluZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0
ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Nv
bmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3Qg
U3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENETVJl
cXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1
ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUmVxdWlyZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVJlcXVpcmVtZW50LmgKaW5kZXggNjlhYzEyZDMxNmJmNjY1N2JiMGEyNGRhZjdh
ZTRmYTBmZDRmMWM5OC4uNWIwYjc3ODBkMjdkZmViMTkzZGNlNmVjZGE3MTc4NTI4ZjdjZDU5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVx
dWlyZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXF1aXJlbWVudC5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCB7CitlbnVtIGNsYXNzIENETVJlcXVpcmVt
ZW50IDogdWludDhfdCB7CiAgICAgUmVxdWlyZWQsCiAgICAgT3B0aW9uYWwsCiAgICAgTm90QWxs
b3dlZApAQCAtNDAsNCArNDIsMTcgQEAgZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCB7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCwKKyAgICAg
ICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkLAorICAgICAgICBXZWJDb3JlOjpD
RE1SZXF1aXJlbWVudDo6T3B0aW9uYWwsCisgICAgICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50
OjpOb3RBbGxvd2VkCisgICAgPjsKK307CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1SZXN0cmljdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCmluZGV4IGM1MmUyODJhMTJlOTFhNDg4MTBiZDE4Yjg3
ZWI2YWQ2MzhmMjEwYTguLjljYTJhYzU5ZThiMTM1NDYzYTUyZGI0NWU4MDczMWY1MGM2OTRmM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJl
c3RyaWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVJlc3RyaWN0aW9ucy5oCkBAIC0zNiw2ICszNiwzOSBAQCBzdHJ1Y3QgQ0RNUmVzdHJpY3Rp
b25zIHsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVEZW5pZWQgeyBmYWxzZSB9OwogICAgIEhhc2hTZXQ8Q0RN
U2Vzc2lvblR5cGUsIFdURjo6SW50SGFzaDxDRE1TZXNzaW9uVHlwZT4sIFdURjo6U3Ryb25nRW51
bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGRpc3RpbmN0aXZlSWRlbnRpZmllckRl
bmllZDsKKyAgICAgICAgZW5jb2RlciA8PCBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAg
IGVuY29kZXIgPDwgZGVuaWVkU2Vzc2lvblR5cGVzOworICAgIH0KKworICAgIHRlbXBsYXRlIDxj
bGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxDRE1SZXN0cmljdGlvbnM+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZGlzdGlu
Y3RpdmVJZGVudGlmaWVyRGVuaWVkOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRl
bnRpZmllckRlbmllZDsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJv
b2w+IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50
U3RhdGVEZW5pZWQ7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlRGVuaWVkKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxIYXNoU2V0PENE
TVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICAg
ICAgZGVjb2RlciA+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAgICAgIGlmICghZGVuaWVkU2Vz
c2lvblR5cGVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBy
ZXR1cm4ge3sKKyAgICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQsCisgICAg
ICAgICAgICAqcGVyc2lzdGVudFN0YXRlRGVuaWVkLAorICAgICAgICAgICAgV1RGTW92ZSgqZGVu
aWVkU2Vzc2lvblR5cGVzKSwKKyAgICAgICAgfX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNU2Vzc2lvblR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKaW5kZXggNjA1NzRhNWE2OTNhOTZjNDlmNDlmYjczNDk2
ZWQ3NWI3ZTFlNmZiYi4uZTA3YzMwMDI3OTMwNWY3NzQzZjIyZmNmNTQwNmYyY2ZhNjgxZGUyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vz
c2lvblR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1TZXNzaW9uVHlwZS5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSB7CitlbnVtIGNsYXNzIENETVNlc3Npb25U
eXBlIDogdWludDhfdCB7CiAgICAgVGVtcG9yYXJ5LAogICAgIFBlcnNpc3RlbnRVc2FnZVJlY29y
ZCwKICAgICBQZXJzaXN0ZW50TGljZW5zZQpAQCAtNDAsNCArNDIsMTcgQEAgZW51bSBjbGFzcyBD
RE1TZXNzaW9uVHlwZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNU2Vzc2lvblR5
cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpD
RE1TZXNzaW9uVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFy
eSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29y
ZCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlCisg
ICAgPjsKK307CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggNDUxMTFkYzc1YjU1MDgwY2VmNGU1ZmIzOGFl
MjYzM2IzOWVhNzIzMy4uODY0ZDZlM2RlODNiMDJjM2IxYzBkM2FkYjU2NTdiM2NlN2I2MTk4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJDRE1SZXN0cmljdGlv
bnMuaCIKICNpbmNsdWRlICJDRE1TZXNzaW9uVHlwZS5oIgorI2luY2x1ZGUgIkluaXREYXRhUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMjkwLDEwICsyOTEsMTMgQEAgYm9vbCBDRE1GYWN0
b3J5Q2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQog
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpDRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiBDRE1Q
cml2YXRlQ2xlYXJLZXk6On5DRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAKLWJvb2wg
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QKIHsKLSAgICAvLyBga2V5aWRzYCBh
bmQgJ2NlbmMnIGFyZSB0aGUgb25seSBzdXBwb3J0ZWQgaW5pdCBkYXRhIHR5cGUuCi0gICAgcmV0
dXJuIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMi
KSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJjZW5jIikg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAid2VibSIpKTsK
KyAgICByZXR1cm4geworICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5OjprZXlpZHNOYW1lKCksCisg
ICAgICAgIEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCksCisgICAgICAgIEluaXREYXRhUmVn
aXN0cnk6OndlYm1OYW1lKCksCisgICAgfTsKIH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNQZXJz
aXN0ZW50TGljZW5zZVR5cGUoY29uc3QgVmVjdG9yPENETVNlc3Npb25UeXBlPiYgdHlwZXMpCkBA
IC0zMzcsNyArMzQxLDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzQ29uZmln
dXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGUKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRo
Q29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Citib29sIENETVByaXZhdGVD
bGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNl
c3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbikgY29uc3QKIHsKICAgICAvLyBPbmx5IHN1cHBvcnQgdGhlICd0ZW1wb3Jh
cnknIGFuZCAncGVyc2lzdGVudC1saWNlbnNlJyBzZXNzaW9uIHR5cGVzLgogICAgIGlmIChzZXNz
aW9uVHlwZSAhPSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5ICYmIHNlc3Npb25UeXBlICE9IENE
TVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkKQEAgLTM0NSwxMCArMzQ5LDEwIEBAIGJv
b2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRp
b24oQ0RNU2Vzc2lvblR5cGUmIHNlCiAgICAgcmV0dXJuIHN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzUm9i
dXN0bmVzcyhjb25zdCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmlu
Zz4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdAogewog
ICAgIC8vIE9ubHkgZW1wdHkgYHJvYnVzdG5lc3NgIHN0cmluZyBpcyBzdXBwb3J0ZWQuCi0gICAg
cmV0dXJuIHJvYnVzdG5lc3MuaXNFbXB0eSgpOworICAgIHJldHVybiB7IGVtcHR5QXRvbSgpIH07
CiB9CiAKIENETVJlcXVpcmVtZW50IENETVByaXZhdGVDbGVhcktleTo6ZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKQEAgLTQ5OCw3ICs1MDIsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQg
Zm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJl
Y2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDY3MDRhZTdhOTU3ZjMyZmUxZjg0
OTgzZWQzYjNmNjUwMmE1MzE1YTIuLjRhYjlkZTBmMDJjZWViYjIwYTkzY2RmNjFlM2I3NzBmNWZk
ZTgyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNzQsMTEgKzc0LDExIEBAIHB1
YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRl
Q2xlYXJLZXkoKTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0
cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0
RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRl
ZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwot
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25U
eXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAg
IGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Np
b25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwog
ICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29u
c3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQo
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBl
ck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29u
c3QgZmluYWw7CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBtX3Bh
cmVudEluc3RhbmNlKHBhcmVudCkgeyB9CiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDU3ZGZj
YmY0YmM3YzQ4ODQ0ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIuLmRiMGIyZjhhN2UwZjI2OTZhMWQ4
ZGI2ZjRkNGY0N2FhZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2NTcsMTQgQEAgdm9pZCBNZWRpYVBs
YXllcjo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFuY2Up
CiAKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRTaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1fc2hvdWxkQ29udGludWVBZnRlcktl
eU5lZWRlZCA9IHNob3VsZDsKKyAgICBtX3ByaXZhdGUtPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRpZgorCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXI6OmR1
cmF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5kdXJhdGlvbk1lZGlhVGlt
ZSgpOwpAQCAtMTMxMiw5ICsxMzIwLDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBNZWRpYVBsYXll
cjo6Y2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKICAgICByZXR1
cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChrZXlJZCk7CiB9CiAKLWJv
b2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgTWVk
aWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKLSAgICByZXR1cm4g
Y2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERhdGEpOworICAgIGNsaWVudCgpLm1l
ZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKIH0KIAogU3RyaW5nIE1lZGlhUGxheWVyOjpt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdlNmNiOGEzOTBkZjdmZTFhN2FhZTAx
NzM5ZGM5NDhmNzc2NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBjNTY5ZTY3YTQxZTEyMGI3NjQwZWZh
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aApAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQogICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNh
Y2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAjZW5kaWYKIApA
QCAtMzY2LDYgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0
aEluc3RhbmNlKENETUluc3RhbmNlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyAgICBib29sIHNob3VsZENvbnRpbnVl
QWZ0ZXJLZXlOZWVkZWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQ7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBwYXVzZWQoKSBjb25zdDsKICAgICBib29sIHNl
ZWtpbmcoKSBjb25zdDsKIApAQCAtNTE5LDcgKzUyNCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVk
S2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3Q7Ci0gICAgYm9vbCBrZXlOZWVk
ZWQoVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkq
IGluaXREYXRhKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
OwogI2VuZGlmCiAKQEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVhbTsK
ICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkIHsg
ZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKaW5kZXggOWY3ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0YjBkY2ExY2MxNzVhOC4uN2E4MjA0
NzBmOTk5YWM5OWE2YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI0Myw2
ICsyNDMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdmlydHVhbCB2b2lkIHNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkgeyB9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCA0ZmM2Nzg3ZGQ4
ZDkwN2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJhYmZjZGU1YTBkNGI4MTE4ZDAzY2M5
MmYxZDYxOWQ2MWQ3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5jcHAKQEAgLTI0Nyw5ICsyNDcsOSBAQCBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWlu
Zzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVs
dDsKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZygpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1
cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QK
K1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRl
ZEluaXREYXRhVHlwZXMoKSBjb25zdAogewotICAgIHJldHVybiB2YWxpZEluaXREYXRhVHlwZXMo
KS5jb250YWlucyhpbml0RGF0YVR5cGUpOworICAgIHJldHVybiBjb3B5VG9WZWN0b3IodmFsaWRJ
bml0RGF0YVR5cGVzKCkpOwogfQogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
c3QgQ0QKICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwog
fQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlw
ZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK2Jvb2wgQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAogewogICAgIGlmIChzZXNzaW9uVHlw
ZSA9PSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAgICAgICAgIGlmIChjb25maWd1cmF0
aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCkBAIC0zMTYs
MTMgKzMxNiwxMCBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNT
ZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3NpbwogICAgIHJldHVybiBzdXBwb3J0
c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNz
KSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAgICBpZiAocm9idXN0bmVzcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgLy8gRklYTUU6IERldGVybWluZSBh
biBlbnVtZXJhdGVkIGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1ZXMgc3VwcG9ydGVkIGJ5IEZQUy4K
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHsgZW1wdHlBdG9tKCkgfTsKIH0KIAogQ0RN
UmVxdWlyZW1lbnQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0
IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyArMzYzLDcgQEAgYm9vbCBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogCiBib29sIENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7
Ci0gICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICgh
dmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBzaW5mTmFtZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IDUzODY5NjlmOTQ5NzZmMzgz
NjgwMTg3NDFiYWZkMTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFkN2FmYmFlMmQyYzU2MTJmODRiNDM0
YzBmMTBmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC01
NSwxMSArNTUsMTEgQEAgcHVibGljOgogICAgIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygp
OwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogCi0gICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZp
Z3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBv
cnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYs
IGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBW
ZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBj
b25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJl
bWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rp
b25zJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJl
VW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDcwZWFjMzZhNDc5Nzgx
NWExYWYyNGUyZDU3YjAyMjZmYjQ5NzljNDYuLjhhNGUxNDgwNjkxZTFkOGI2ZmU4MTI2NGI5Mzhi
OWZlZGUzMWMyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTkzMSw3ICsxOTMxLDkgQEAgYm9v
bCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVz
b3VyY2VMb2FkaW5nUmVxdWVzdFIKIAogICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gaW5p
dERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0g
ICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkp
CisgICAgICAgIG1fb3duZXItPnBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOwor
CisgICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzZXRSZXF1ZXN0
Rm9yS2V5KGtleVVSSSwgYXZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IGIx
MWY3MWE5YjVlMzhiZjY5OGIxMzk0OWRkZGU4NmYzZGQ5OTRjYzEuLjdmMGUyZDVhYzAwZTYwNjJk
MzViYWM0NWQ2ZTFlNzFkNDQwM2U4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApAQCAtMTIw
LDcgKzEyMCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbgogICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRT
ZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNz
aW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggNzMyNjc3NWY0N2Qz
ODU4YjA1Zjc4NzhiNzM1NzRhNDY0N2NiOGQzMS4uZjA5YjI4OWEzM2U3ZWMwNDBmMDRkMWY2Zjk5
YWY4ZWY5MGQ5NzcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTU4MCw3ICs1ODAs
NyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUo
KSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURh
dGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CkBAIC03MTEsNyArNzExLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0gZWxzZQotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0
KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9j
dXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlS
ZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJl
c3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1
NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5
UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIHN0cnVjdCBvYmpjX21l
dGhvZF9kZXNjcmlwdGlvbiBtZXRob2QgPSBwcm90b2NvbF9nZXRNZXRob2REZXNjcmlwdGlvbihA
cHJvdG9jb2woQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9yKGNvbnRlbnRL
ZXlTZXNzaW9uOmNvbnRlbnRLZXlSZXF1ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVTKTsKQEAgLTEx
NDAsNyArMTE0MCw4IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fc2Vzc2lvbklkID0gc2Vzc2lvbklkOwotICAgIG1fY2xpZW50LT5zZXNzaW9uSWRD
aGFuZ2VkKG1fc2Vzc2lvbklkKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFu
Z2VkKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKiBncm91cCwgTlNEYXRhICpzZXNzaW9uSWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGIzN2M0NDExMzE0OTg4Nzk1NDZlYzhh
NTdhMGRkOGUxMWY3ODQ2OTcuLmQ3OGM3Y2FhNjAyMDgzZmEzYjgzYjMzYzc2MGRkNGY0MTEyZDYz
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTY3OCw5ICsxNjc4LDEyIEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdP
ZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdW
aWV3KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNp
emVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CiAKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0g
ICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCisgICAgICAg
IHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgorI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAg
ICAgICAgIGlmIChtX2NkbUluc3RhbmNlKSB7CkBAIC0xNzEzLDcgKzE3MTYsOSBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXNvdXJjZShBVkFzc2V0UgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKSkKKyAgICAg
ICAgcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CisKKyAgICAgICAgaWYgKCFw
bGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChrZXlJRCwgYXZS
ZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXgg
Y2U1ZDhmN2Q2YmRmMzhiNTkyMjA5MzAyYTZlNmQ3MWIzNjk2NjMyZC4uMGE0ZDY1NzUwYTE1NGM1
ZTVlZTE5YjU4MzBjOWZiYWUwMDAxZTNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKQEAgLTk4LDYgKzk4LDExIEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OnNl
dFN1cHBvcnRlZERhdGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogICAgICAgICBtX3N1
cHBvcnRlZERhdGFUeXBlcy5hcHBlbmQodHlwZSk7CiB9CiAKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6
OnNldFN1cHBvcnRlZFJvYnVzdG5lc3MoVmVjdG9yPFN0cmluZz4mJiByb2J1c3RuZXNzZXMpCit7
CisgICAgbV9zdXBwb3J0ZWRSb2J1c3RuZXNzID0gcm9idXN0bmVzc2VzLm1hcChbXSAoYXV0byYg
cm9idXN0bmVzcykgLT4gQXRvbVN0cmluZyB7IHJldHVybiByb2J1c3RuZXNzOyB9KTsKK30KKwog
c3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IE1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29u
c3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNPihtYWtlV2Vha1B0
cigqdGhpcykpOwpAQCAtMTA4LDExICsxMTMsMTggQEAgTW9ja0NETTo6TW9ja0NETShXZWFrUHRy
PE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5KQogewogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRz
SW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3Rv
cjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QKIHsK
ICAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRE
YXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIG1fZmFjdG9yeS0+c3VwcG9ydGVkRGF0YVR5cGVzKCk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06OnN1cHBvcnRlZFJvYnVzdG5l
c3NlcygpIGNvbnN0Cit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG1fZmFj
dG9yeS0+c3VwcG9ydGVkUm9idXN0bmVzcygpOworICAgIHJldHVybiB7IH07CiB9CiAKIGJvb2wg
TW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKQEAgLTEzOSw3ICsxNTEsNyBAQCBib29sIE1v
Y2tDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1vY2tDRE06OnN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiBz
ZXNzaW9uVHlwZSwgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK2Jv
b2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1l
ZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mKSBjb25zdAogewogICAgIGlmICghbV9mYWN0b3J5IHx8ICFtX2ZhY3RvcnktPnN1
cHBvcnRlZFNlc3Npb25UeXBlcygpLmNvbnRhaW5zKHNlc3Npb25UeXBlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTQ4LDEzICsxNjAsNiBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vz
c2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihNZWRpYUtleVNlc3Npb25UeXBlJiBzZXNzaW9uVAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzUm9idXN0bmVzcyhj
b25zdCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZmFjdG9yeSkKLSAg
ICAgICAgcmV0dXJuIG1fZmFjdG9yeS0+c3VwcG9ydGVkUm9idXN0bmVzcygpLmNvbnRhaW5zKHJv
YnVzdG5lc3MpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogTWVkaWFLZXlzUmVxdWlyZW1lbnQg
TW9ja0NETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0
CiB7CiAgICAgaWYgKG1fZmFjdG9yeSkKQEAgLTE5OSw3ICsyMDQsNyBAQCBib29sIE1vY2tDRE06
OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogCiBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKSBjb25zdAogewotICAgIGlmICghc3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFU
eXBlKSkKKyAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0
YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBVTlVTRURfUEFSQU0oaW5pdERh
dGEpOwpAQCAtMzI1LDcgKzMzMCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3Ro
KCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZv
aWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9u
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0
YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMzMyw3
ICszMzgsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2Uu
ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUo
KSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmco
ImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCAzOTkwOWI5MzAzYTk0
YzkzNjhlYWEwZjYyNWY0YjY3ZTUyNTA1OWYxLi42Y2I5MTVjODUwMTU1OGYxMGJiOGZjNWIyZGE1
MjgzNTA0MGYwZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBA
IC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9u
VHlwZT4mIHN1cHBvcnRlZFNlc3Npb25UeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVk
U2Vzc2lvblR5cGVzOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0ZWRTZXNzaW9uVHlwZXMoVmVjdG9y
PE1lZGlhS2V5U2Vzc2lvblR5cGU+JiYgdHlwZXMpIHsgbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXMg
PSBXVEZNb3ZlKHR5cGVzKTsgfQogCi0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN1cHBvcnRl
ZFJvYnVzdG5lc3MoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZFJvYnVzdG5lc3M7IH0KLSAg
ICB2b2lkIHNldFN1cHBvcnRlZFJvYnVzdG5lc3MoVmVjdG9yPFN0cmluZz4mJiByb2J1c3RuZXNz
KSB7IG1fc3VwcG9ydGVkUm9idXN0bmVzcyA9IFdURk1vdmUocm9idXN0bmVzcyk7IH0KKyAgICBj
b25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIHN1cHBvcnRlZFJvYnVzdG5lc3MoKSBjb25zdCB7IHJl
dHVybiBtX3N1cHBvcnRlZFJvYnVzdG5lc3M7IH0KKyAgICB2b2lkIHNldFN1cHBvcnRlZFJvYnVz
dG5lc3MoVmVjdG9yPFN0cmluZz4mJik7CiAKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudDsgfQogICAgIHZvaWQgc2V0RGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KE1lZGlhS2V5c1JlcXVpcmVtZW50IHJlcXVpcmVtZW50KSB7IG1f
ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50ID0gcmVxdWlyZW1lbnQ7IH0KQEAgLTkw
LDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBtX3BlcnNpc3Rl
bnRTdGF0ZVJlcXVpcmVtZW50IHsgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsIH07CiAg
ICAgVmVjdG9yPEF0b21TdHJpbmc+IG1fc3VwcG9ydGVkRGF0YVR5cGVzOwogICAgIFZlY3RvcjxN
ZWRpYUtleVNlc3Npb25UeXBlPiBtX3N1cHBvcnRlZFNlc3Npb25UeXBlczsKLSAgICBWZWN0b3I8
U3RyaW5nPiBtX3N1cHBvcnRlZFJvYnVzdG5lc3M7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IG1f
c3VwcG9ydGVkUm9idXN0bmVzczsKICAgICBWZWN0b3I8TWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1l
PiBtX3N1cHBvcnRlZEVuY3J5cHRpb25TY2hlbWVzOwogICAgIGJvb2wgbV9yZWdpc3RlcmVkIHsg
dHJ1ZSB9OwogICAgIGJvb2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CkBAIC0xMDks
MTEgKzEwOSwxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNb2NrQ0RN
SW5zdGFuY2U7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJp
bmcmKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERh
dGFUeXBlcygpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRS
b2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlv
bihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3Qg
ZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oTWVk
aWFLZXlTZXNzaW9uVHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2
ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgTWVkaWFL
ZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2lu
QW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZp
bmFsOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sm
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggNWVmZTY2MjVkNmYyZjkwYWRlZDc3ZDhj
NTU5N2RmM2M3ODhmMzFkYi4uMDU1ZDY3N2VjNTlmMjc0ZDg5ODMxYjQ3NDgwODEyYzUwMjUwZmNh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNDkwLDEwICs0OTAsOSBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5
SWQoY29uc3QgUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKQordm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKIH0KICNlbmRpZgogCkBAIC02
ODIsNiArNjgxLDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQog
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxk
Q29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0
U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAg
IG1fcGxheWVyLT5iZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXgg
MTZiYjJkZGZhMjE0NzQ3MGU4NjAwYWI3MTM5NmE1OWNkZjU0NDlmYS4uODExYzlmOWY5YmFjZWU4
MDg5ZDlkNDMwNGViNjgxY2NlYWJiMmIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0xMjYsNiArMTI2
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGtleUFkZGVkKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwogICAgIHZvaWQgZW5kU2ltdWxhdGVk
SERDUEVycm9yKCk7CiAKQEAgLTE2OCw3ICsxNzIsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBs
YXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIGJv
b2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOworICAgIHZvaWQgbWVk
aWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOwogICAgIFN0cmluZyBtZWRpYVBs
YXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCkBA
IC0yNTIsNiArMjU2LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TGF5b3V0UmVjdCBtX3Zp
ZGVvQ29udGVudEJveFJlY3Q7CiAgICAgZmxvYXQgbV92aWRlb0NvbnRlbnRTY2FsZSB7IDEuMCB9
OwogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgYm9vbCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxz
ZSB9OworI2VuZGlmCisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dn
ZXImIG1fbG9nZ2VyOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391515</attachid>
            <date>2020-02-23 21:54:48 -0800</date>
            <delta_ts>2020-02-24 22:17:52 -0800</delta_ts>
            <desc>Part 2: WebKit + SharedBuffer</desc>
            <filename>bug-208090-20200223215447.patch</filename>
            <type>text/plain</type>
            <size>30465</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhZWUzZGJlNGUxM2Y1OThk
MWE2NDM2MWYyNmU5MjA2ZjMxMzI4MTEuLmM4NDYwZWE1NjNkNTQ0OTE1MWFlYzljOTAxZDg5ZTA0
NTVlOGRjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDItMjMgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rl
cm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSBpcyBtYWRlIG1vcmUgZWZmaWNpZW50IGJ5IHVzaW5nIHRoZSBzYW1lIGVu
Y29kZS9kZWNvZGUgcGF0aCBhcyBpcyB1c2VkIGluCisgICAgICAgIFdlYkNvcmVBcmd1bWVudENv
ZGVyczogdGhlIFNoYXJlZEJ1ZmZlciBpcyBjb3BpZWQgaW50byBzaGFyZWQgbWVtb3J5LCBhbmQg
b25seSBhIGhhbmRsZSBpcyBwYXNzZWQgYWNyb3NzCisgICAgICAgIHRoZSBYUEMgYm91bmRhcnku
IFRoaXMgcmVxdWlyZXMgZXhpc3RpbmcgdXNlcnMgdG8gaGFuZGxlIHJlY2VpdmluZyBhIElQQzo6
U2hhcmVkQnVmZmVyRGF0YUhhbmRsZSBvbiB0aGUKKyAgICAgICAgcmVtb3RlIHNpZGUgb2YgdGhl
IFhQQyBib3VuZGFyeSwgYnV0IHRoaXMgaXMgdHJpdmlhbCwgYW5kIG1hbnkgY2FsbCBzaXRlcyBy
ZXF1aXJlIGEgU2hhcmVkQnVmZmVyIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBpbiB0aGUg
Zmlyc3QgcGxhY2UuIFRoaXMgY29kZSBjb3VsZCBiZSBpbXByb3ZlZCBieSBhbGxvd2luZyB0aGUg
U2hhcmVkTWVtb3J5IG9iamVjdCBiZSBhZG9wdGVkCisgICAgICAgIGJ5IHRoZSBTaGFyZWRCdWZm
ZXIgb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUsIGxlYWRpbmcgdG8gemVyby1jb3B5IGRlY29kaW5n
LCBidXQgaXMgbm90IGRvbmUgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVy
QXR0YWNobWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1l
VGFza0RpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2Vy
dEF0dGFjaG1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
IDIwMjAtMDItMjMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVVBdIEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA2NzJiZWM0OGVhNzljNjgy
YzEyNDVlNTI2ZjA0ODhjNjc5OTY4MGI3Li41M2E4MDc4MTdiMmE2YjFkZGY1MTM0NTg2ZWYyZTcx
MDJmNjgyNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC0xNDksMTMgKzE0OSwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvbwogICAgIHNlbmRUb0Ns
aWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJl
c3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKIH0KIAot
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBp
ZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV90aW1lb3V0VGlt
ZXIuaXNBY3RpdmUoKSk7Ci0gICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyBk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisgICAgc2Vu
ZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBk
YXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9y
bURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkMzNjYmZm
MTA4OWNjMTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi41MDgwMGYzNTAyMjM2MmY5NmNhMjFi
NWU3ZWJkMDdkOGQ0MmEyZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFS
ZWZlcmVuY2U7CiB9CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAg
ICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgK
aW5kZXggYTc0OWFhYjg3MDA1NGNlYjY5MGU1ZjE0ZjQwNzU2M2ZmY2QwZjliOC4uODhmNGYyZmE2
NDI2MzM0OWI3YWQyMmQwNmY0M2EyN2Y3MjMzNTFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtOTYsMTIgKzk2LDYgQEAgc3RydWN0IENvZGluZ1R5
cGUgewogICAgIHR5cGVkZWYgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVu
Y2VfdDxUPj4gVHlwZTsKIH07CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci1jbGFzcyBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kaW5nVHlwZTxjb25zdCBT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHR5cGVkZWYgRGF0YVJlZmVyZW5jZSBU
eXBlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1Y3QgQ29kaW5nVHlwZTxz
dGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx0eXBlbmFtZSBDb2Rp
bmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkYWQ0NjYwNDYzMmU5
MjY5ZjE5MWQxNWM4MGRkMjExZTU0ODRlN2EzLi5iZmIzMzk1NzY5NmYyZTcyYTIzNDgyMzQyMjUy
YjcyYmQ3OTQyODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yNSw0MCArMjUsNTEgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSgpID0g
ZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkKKyAgICB7CisgICAgfQorICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShi
dWZmZXIpKQorICAgIHsKKyAgICB9CiAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2RhdGEoYnVmZmVy
KSB7IH0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShzdGQ6Om1ha2VfcGFpcihkYXRhLCBzaXpl
KSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSkKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAgICB9CisKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZm
ZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKworICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CisgICAg
c2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkg
OiAwOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQogCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHN3aXRjaE9uKG1fZGF0YSwKLSAgICAgICAgICAg
IFtlbmNvZGVyID0gJmVuY29kZXJdIChjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICB1aW50NjRfdCBidWZmZXJT
aXplID0gYnVmZmVyLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+cmVzZXJ2ZShi
dWZmZXJTaXplICsgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgICAgICAgICAgICAgKmVuY29kZXIg
PDwgYnVmZmVyU2l6ZTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQg
OiBidWZmZXIuZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbGVtZW50LnNlZ21l
bnQtPmRhdGEoKSksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpLCAxKTsKLSAgICAgICAgICAgIH0s
IFtlbmNvZGVyID0gJmVuY29kZXJdIChjb25zdCBzdGQ6OnBhaXI8Y29uc3QgdWludDhfdCosIHNp
emVfdD4mIHBhaXIpIG11dGFibGUgewotICAgICAgICAgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNp
emUgPSBwYWlyLnNlY29uZDsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5yZXNlcnZlKGJ1ZmZl
clNpemUgKyBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgICAgICAgICAqZW5jb2RlciA8PCBi
dWZmZXJTaXplOwotICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCwgMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7
CisgICAgICAgIGVuY29kZXIgPDwgbV9idWZmZXI7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGJ1
ZmZlcjsKKyAgICAgICAgZGVjb2RlciA+PiBidWZmZXI7CisgICAgICAgIGlmICghYnVmZmVyKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgV1RGTW92
ZSgqYnVmZmVyKSB9OwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBWYXJpYW50PHN0ZDo6cGFpcjxj
b25zdCB1aW50OF90Kiwgc2l6ZV90PiwgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDI2MDQ5
MGZiN2I1NmE4OGNmZjBkOWI4OWMxYTcxNjhhZWQwZDE4NWMuLjcxNjRjMzczNDMxMDFmZWYwYzNk
NWYwZGI2N2M1MmNkNjE4YjVlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMjI3LDYgKzIyNyw5IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXInLAorICAgICAgICAnV2Vi
S2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4YzlmYTIxYWYzOGE3MTYyYzZjMjA5
ZTkzOTQ2ODkwNmEyNWMzY2EzLi41YWRiMzdkOGI1YmRlZjAwYTU2NmY0YTAyZGI2NGJiOTVkYWIw
MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTMyMDMsNCArMzIwMywxOCBAQCBPcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmbwogfQogI2Vu
ZGlmCiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIu
Z2V0KCkpOworfQorCitPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGUzODE0ZTIxZjgz
MzZhYWYyZjQ0NDMyMzJlMzQ0ZTAwNzRkYWUyYTEuLmU5NTM1NjkzMDRmNzIxOTNiOGRhMjhkODg2
YmI1ZjgyYjI3NTZiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCkBAIC0xMDAsNiArMTAwLDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9u
OwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3Bv
cnRDb25zdHJhaW50czsKQEAgLTgyOSw2ICs4MzAsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IHsKIH07
CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDc4OTdlMjhlM2M4
Y2EyMjc0NTFmZDU3NDFmN2RkMTU1Y2M3ZGUxNWYuLjM0M2JhMWIxMDM3MzI0MjViNjAyNzdlOGY1
ODEwZjE3ZDgxYWFiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQYWdlQ2xp
ZW50LmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgIlNhZmVCcm93c2lu
Z1dhcm5pbmcuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbXBv
cnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1w
b3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCkBAIC0xODMsMTMgKzE4NCwxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RHJhZ0NhcmV0UmVjdChjb25zdCBJbnRSZWN0JiBkcmFnQ2FyZXRSZWN0KQog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlUHJveHk6OnBs
YXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVu
dCwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJB
dHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgY29uc3QgU3RyaW5n
JiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlKQogewogICAgIGlmIChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwotICAgIGF1dG8gZmls
ZVdyYXBwZXIgPSBhZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNl
KCkgaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKV0pOworICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtwYWdlQ2xpZW50
KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OmRhdGFSZWZlcmVuY2UuYnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCldKTsK
ICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6cHJlZmVycmVkRmlsZU5hbWVd
OwogICAgIGF0dGFjaG1lbnQtPnNldEZpbGVXcmFwcGVyKGZpbGVXcmFwcGVyLmdldCgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGY5NzFmOTZmNGRm
ODNlYmY1MDViMmRkYzRhZTI3ZTZjYTdkNWNjNzUuLjBmYmYwMzUyMmU1ZWY5NWFkMjdmYzU1MTlk
OGY2ZjBmZTE5MTUyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNjkwNiwxMyArNjkwNiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2Fs
bGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1D
YWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRh
dGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKKyAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5z
aXplKCkpLnB0cigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJvb2xDYWxsYmFjayhib29s
IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtOTA4MSw3ICs5MDgxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlu
a0ljb24mIGljb24sIENhbGxiYWMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmZp
bmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihD
YWxsYmFja0lEIGNhbGxiYWNrSUQsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYgZGF0YSkKIHsKICAgICBkYXRhQ2FsbGJhY2soZGF0YSwgY2FsbGJhY2tJRCk7CiB9CkBAIC05
MzEyLDcgKzkzMTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50LAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRp
ZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRl
bnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBNRVNTQUdFX0NI
RUNLKG1fcHJvY2VzcywgSWRlbnRpZmllclRvQXR0YWNobWVudE1hcDo6aXNWYWxpZEtleShpZGVu
dGlmaWVyKSk7CiAKQEAgLTk0MTksNyArOTQxOSw3IEBAIFdlYlBhZ2VQcm94eTo6U2hvdWxkVXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMgV2ViUGFnZVByb3h5Ojp3aWxsVXBkYXRlQXR0YWNobWVu
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJl
Z2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKQordm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVn
aXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjMxNTQ1NDhhMDhiNTg4ZGZiMzQ2MjYxYmM3
ZGUzZGJiNzU0ZjZjZi4uZjMzMmM1ZDIwZGJhOGYxZGFmMjczYjBjNmYxZTVjOGIyYmZkZTc3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE5Myw2ICsxOTMsNyBA
QCBlbnVtIGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90OwogbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTAx
LDcgKzE1MDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KTsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5r
SWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29u
KFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNl
ZCk7CiAgICAgdm9pZCBzZXRXaW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsK
QEAgLTIwMDUsNyArMjAwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlRXZlbnQo
dWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKTsKIAogICAgIHZvaWQgdm9pZENhbGxi
YWNrKENhbGxiYWNrSUQpOwotICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW1hZ2VD
YWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENhbGxiYWNrSUQpOwogICAg
IHZvaWQgYm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHN0
cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwpAQCAtMjE4MywxMiArMjE4
NCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcEFsbFVSTFNjaGVtZVRhc2tzKFdlYlByb2Nl
c3NQcm94eSogPSBudWxscHRyKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0g
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxl
TmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyRnJvbUZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
c0Zyb21TZXJpYWxpemVkRGF0YShWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPiYmKTsKICAgICB2b2lkIGNsb25lQXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5nJiBmcm9t
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0b0lkZW50aWZpZXIpOwogCi0gICAgdm9pZCBwbGF0
Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2
b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQ
STo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCBwbGF0
Zm9ybUNsb25lQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGZyb21BdHRhY2htZW50
LCBSZWY8QVBJOjpBdHRhY2htZW50PiYmIHRvQXR0YWNobWVudCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMzlkYzI1YmJk
OGY4YjE1ZDY2ODE4ZjZkNmQ4MmEzYjU2OTk5NDkyLi5hNWU2Zjk2NTExZTUwYTgxNDNkYjZmMmFk
M2UyNjRlOTJiOWFhYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MzAsNyArNTMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCiAgICAgR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihzdHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCi0gICAgRmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpOworICAgIEZpbmlzaGVk
TG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRIYW5k
bGVBY2NlcHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmlu
ZGV4IDNmNWI2MTgxZTA2ZTBhODQ2ODhiZGE5MTZmMTBkODdhNjFkMTRiZTcuLjkyZmY3N2ViYzc3
MzNhNTFmYjE3YzdhNzYzYzc2ODc2YzYyYWVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZlBy
aXZhdGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDA5ZDc5ODcxZjViNmYzODdkNGY1ZmI2NTUxZWY5YTA0NjdjNDYzYjguLmVk
ZTM5NGRkMjNjYjNkNjE0ZjFiMzNhM2I4YmI5NGRjZWVkNDIxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9y
bURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWUuaCIKQEAgLTE4OSwxNyArMTg5LDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdU
Rk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBkYXRhLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3Mp
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIs
IGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9u
c2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFs
aWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29u
dHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVy
KG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgp
IG11dGFibGUgewotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YSA9IFdU
Rk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92
ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJmYTFjNjlmZWE5ZDUz
OTY2ZmIuLjI2OTA4ZTgyM2Q3OTI0NGU1Nzg2ZGIwNGE1OTY5ZWYxZmM2NTgwODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZTsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCkBAIC04Myw3ICs4Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJj
ZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNl
cnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzRlODZjMTFlMjQ4NmM3YTE2MDM2
ZDdiNDY4ZmI3OGQyNzU4ZmQ2MS4uYzUwZjU1YWU5MjYzYzExNjgxNDFhYTQ1NzBhMmRkZWM2MTY2
NDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTEyOSw3
ICsxMjksNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVCbG9iQ2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZQogICAgIGlmICghbV9jb25uZWN0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXpl
KSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgc2l6ZSkgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9m
ZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDk4YjE1Yjg3ZmMxM2RhMmRiZjQ0M2JhOThhNGQ4NmQ3YTlkMzU0MTkuLjNlMTk5Yzlh
Zjk4YzVkNGJkODg5ZGE5NzI1MDM1MmQ0YjJkMWI2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTkxNCw5ICsxOTE0LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXIK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lk
ZW50aWZpZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0p
IHsKICAgICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkp
OworICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5p
c2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgKmRhdGEgfSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVk
TG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyBudWxscHRyLCAwIH0pKTsKKyAgICAgICAgICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihj
YWxsYmFja0lELCB7IH0pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTQ1ODM3NDliNmY5NmI1YzFkZWQxZTA2YTQzMGFh
Yzg5MTU4N2JmZC4uMTZkNmY4Y2E3MzM1NTRiMTJjYmFhMGVjZmM5MjJlYmQwZjY1MjhkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM1MDAs
NyArMzUwMCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2U7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRp
Y19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBk
YXRhUmVmZXJlbmNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5kaWYK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJl
bmNlLCBjYWxsYmFja0lEKSk7CiB9CkBAIC0zNTgxLDcgKzM1ODEsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDYWxsYmFja0lE
IGNhbGxiYWNrSQogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVm
ZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YVJlZmVyZW5j
ZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2VuZGlmCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJh
Y2tJRCkpOwogfQpAQCAtNDkxOSw3ICs0OTE5LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNU
b1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8K
IHsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJh
d1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBwZGZQYWdl
RGF0YSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soeyBD
RkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihD
RkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSB9LCBjYWxsYmFja0lEKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soeyBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShwZGZQYWdlRGF0YS5nZXQoKSkgfSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OmRyYXdQYWdlc1RvUERGSW1wbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmV0
YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSkKQEAgLTY1NjMsMTIgKzY1NjMs
MTIgQEAgdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2
NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjQKICAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2
ZVJlc3BvbnNlKHRhc2tJZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1
aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQor
dm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxl
cklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRp
ZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CiAg
ICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRh
c2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOworICAgIGhhbmRsZXItPnRh
c2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhLmRhdGEoKSkpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWlu
dDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtNjc5
MCw3ICs2NzkwLDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmkKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNs
b3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25h
bDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBl
bmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVy
KSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM3Y2YzOGM1YmJh
MjAxY2VkNzg4Y2QwM2Q1YTIwNGQ0YWNhNGYyYTcuLjczYzU5MmNjODRmNzQ4YzJmNDg5OTU4Njdi
ZTZlMmU5YWVlYWMxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rp
b247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTk0
LDcgKzExOTUsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBP
cHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB1cGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2
NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwg
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKQEAgLTE2NzQsNyAr
MTY3NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVk
aXJlY3Rpb24odWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURh
dGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZp
ZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgdXJs
U2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRf
dCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAg
dm9pZCBzZXRJc1N1c3BlbmRlZChib29sKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391534</attachid>
            <date>2020-02-24 07:14:52 -0800</date>
            <delta_ts>2020-02-24 22:12:22 -0800</delta_ts>
            <desc>Part 1: WebCore</desc>
            <filename>bug-208090-20200224071451.patch</filename>
            <type>text/plain</type>
            <size>65222</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uYmZmNzBhNDgxMzU5MWJiOGIzOGY2ZmZjNGE3MTYy
ZDI0OThhNjI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIwLTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgY2FjaGluZyBvZiBjZXJ0YWluIENE
TSBwcm9wZXJ0aWVzLCBhbGxvdyB0aGVtIHRvIGJlIGZldGNoZWQgcmF0aGVyIHRoYW4gcXVlcmll
cy4gQXMgc3VjaCwKKyAgICAgICAgQ0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YVR5cGUgLT4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcywgc3VwcG9ydHNSb2J1c3RuZXNzIC0+IHN1cHBvcnRlZFJv
YnVzdG5lc3Nlcy4KKworICAgICAgICBUbyBlbmFibGUgQ0RNIHR5cGVzIHRvIGJlIHBhc3NlZCBh
Y3Jvc3MgWFBDLCBhZGQgZXhwbGljaXQgc2l6ZXMgdG8gdGhlIGVudW1lcmF0aW9ucywgYW5kIGFk
ZCBlbmNvZGUgYW5kCisgICAgICAgIGRlY29kZSB0ZW1wbGF0ZXMgdG8gdGhlIGRhdGEgdHlwZXMu
CisKKyAgICAgICAgVG8gZW5hYmxlIGFzeW5jIG1lc3NhZ2luZyBmb3JtIHRoZSBHUFUgcHJvY2Vz
cydzIE1lZGlhUGxheWVyLCBzZW5kIHRoZSBNZWRpYVBsYXllciB0aGUgaW5mb3JtYXRpb24gaXQK
KyAgICAgICAgbmVlZHMgd2hlbiBib3RoIGxlZ2FjeS0gYW5kIG1vZGVybi1FTUUgQVBJcyBhcmUg
Ym90aCBlbmFibGVkLCByYXRoZXIgdGhhbiBhbGxvdyB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlCisg
ICAgICAgIHRvIHF1ZXJ5IHRoZSBNZWRpYVBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5OjpyZXNldEZhY3Rvcmll
cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVxdWlyZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1
cHBvcnRlZFJvYnVzdG5lc3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydGVk
SW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0
ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnN1cHBv
cnRlZFJvYnVzdG5lc3MgY29uc3QpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAyMC0wMi0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYW4gdW51c2VkIGxvY2FsIHZhcmlhYmxlIGFmdGVy
IHIyNTY4MDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggNTYxMDJiY2M4OGNhYjdiMDY4YjRmNGUyYjU5OTJmMDc3ZGQ0
YmUzMC4uZjZhZDljOWZjYzY2MWMxNDU4MThhNTc4ZTgxYjZjN2ZiN2Y0MDQ1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBH
UFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRvcHQgY2hhbmdlcyB0byBNZWRpYVBsYXllclByb3h5LgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorCiAyMDIwLTAyLTIx
ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEFw
cC1ib3VuZCBkb21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IGFkNGY3MWQ3YzRiNDk2OTEwMzIxNjMzY2FhZmMzOGQ2MGY2MmNm
MWQuLjVhYjdiYTUxM2I2MDExYWZhMzJlMTE2YWI2OGJhNTEzOWI2YTU1NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTAzMSw2ICsxMDMxLDIwIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCiAg
ICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKIAorICAgIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAorICAgIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNl
c3Npb24uaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1cy5oCisgICAg
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCisgICAg
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgKKyAgICBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJpdmF0ZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHku
aAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50LmgKKyAgICBwbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAorICAgIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKKwogICAgIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBh
ZFByb3ZpZGVyLmgKICAgICBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92aWRlckNsaWVudC5o
CiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDRiYmIyYmNlNjE4NzRiN2Vl
MTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAuLmM0ZTE0MjZhMGMzZmZiNWFhODEwZDRjNWQwYTY4YmQw
N2U5ZmVmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBPcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24+IENETTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYQogICAgICAg
ICAgICAgaWYgKGluaXREYXRhVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgIGlmIChtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0lu
aXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgICAgICAgICAgaWYgKG1fcHJpdmF0ZSAmJiBt
X3ByaXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUp
KQogICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChpbml0RGF0YVR5cGUpOwog
ICAgICAgICB9CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBPcHRpb25hbDxWZWN0b3I8TWVkaWFLZXlT
eXN0ZW1NZWRpYUNhcGFiaWxpdHk+PiBDRE06OmdldFN1cHBvcnRlZENhcGFiaWxpdGllc0Zvcgog
ICAgICAgICAvLyAzLjExLiBJZiBjb250ZW50IHR5cGUgaXMgbm90IHN0cmljdGx5IGEgYXVkaW8v
dmlkZW8gdHlwZSwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgogICAgICAgICAvLyAz
LjEyLiBJZiByb2J1c3RuZXNzIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nIGFuZCBjb250YWlucyBh
biB1bnJlY29nbml6ZWQgdmFsdWUgb3IgYSB2YWx1ZSBub3Qgc3VwcG9ydGVkIGJ5CiAgICAgICAg
IC8vICAgICAgIGltcGxlbWVudGF0aW9uLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24u
IFN0cmluZyBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgotICAgICAgICBpZiAoIXJvYnVz
dG5lc3MuaXNFbXB0eSgpICYmICFtX3ByaXZhdGUtPnN1cHBvcnRzUm9idXN0bmVzcyhyb2J1c3Ru
ZXNzKSkKKyAgICAgICAgaWYgKCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRlLT5z
dXBwb3J0ZWRSb2J1c3RuZXNzZXMoKS5jb250YWlucyhyb2J1c3RuZXNzKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIC8vIDMuMTMuIElmIHRoZSB1c2VyIGFnZW50IGFuZCBpbXBs
ZW1lbnRhdGlvbiBkZWZpbml0ZWx5IHN1cHBvcnQgcGxheWJhY2sgb2YgZW5jcnlwdGVkIG1lZGlh
IGRhdGEgZm9yIHRoZQpAQCAtNjEyLDcgKzYxMiw3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3QKIAogYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlICYmIG1f
cHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKTsKKyAgICByZXR1cm4g
bV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5z
KGluaXREYXRhVHlwZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggZGExOWJiZmYyYzdjZTgyYmVmYTgw
MzVhZDc1NDJlM2U5ZjIyYTY5ZC4uMjlmYWI0OTkwNjgyNTgzMmE1YWRkZDk5YTgwZThmMzRkOGQz
MDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgTWVkaWFL
ZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0IHNlc3Npb24gY2xvc2VkIGJlIGZhbHNl
LgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhlIENETSBpbnN0YW5jZSByZXByZXNlbnRl
ZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAgICAgLy8gNi43LiBV
c2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIG1faW5z
dGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCAq
c2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlv
bmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBP
cHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPENETUluc3RhbmNl
U2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBk
YXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgc2FuaXRpemVkUmVzcG9uc2Uu
cmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9u
YWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdiMThhNTBhNDRmNmE4ZTYzZDE0YzMyODg0MzM1
Njc5MDFkMTEyMGIuLmQ3MTM2MTViMDBhYzFhMjUzNGFhZTk0OWE3NDg3N2YxYjNkOWY5ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQwNjUsNiArNDA2NSwxOSBAQAogCQlDRDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVk
aWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEM0E0OTU2MTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDNB
NDk2MjE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1OTE3QTlEMDFCMDAyNzRFNDIgLyog
U291cmNlQnVmZmVyLmggKi87IH07CiAJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3Vy
Y2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovOyB9
OworCQlDRDNDRTBGODI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRW5jcnlwdGlvblNjaGVtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2OUIyMTVD
MjNBNDAwRUZDQjUwIC8qIENETUVuY3J5cHRpb25TY2hlbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGOTI0MDFBQUQ5MDA0QkEwMUQg
LyogQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q5NEE1RDIxRjcxQ0I2QjAwRjUyNUM1IC8qIENETUZhY3RvcnkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGQTI0MDFBQUQ5
MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEOTRBNUNFMUY3MUNCNkEwMEY1MjVDNSAvKiBDRE1JbnN0YW5jZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NF
MEZCMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOUQzNzVBMjE1MTYzRTQwMDQ5NjU3
QiAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGQzI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5U3Rh
dHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0
QTVENDFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNS2V5U3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkQyNDAxQUFEOTAwNEJBMDFE
IC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNEMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkUyNDAxQUFEOTAwNEJBMDFEIC8qIENETU1lZGlhQ2FwYWJp
bGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5
NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZGMjQwMUFBREEw
MDRCQTAxRCAvKiBDRE1NZXNzYWdlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1RDYxRjcxQ0I2RDAwRjUyNUM1IC8qIENETU1lc3NhZ2VU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QzQ0UxMDAyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNGMUY3MUNCNkEwMEY1MjVDNSAv
KiBDRE1Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFGNzFDQjYxMDBG
NTI1QzUgLyogQ0RNUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVxdWlyZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUND
MUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1SZXF1aXJlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTAzMjQwMUFBREEwMDRCQTAxRCAv
KiBDRE1SZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEOTRBNUQwMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1SZXN0cmljdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEw
NDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ1MUY3MUNCNkQwMEY1MjVDNSAvKiBD
RE1TZXNzaW9uVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGll
c0NHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNF
MjFEQjIxODMzRjUxMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEM0UyNTFDMTgwNDZC
MDYwMEUyN0Y1NiAvKiBHcmlkQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2IC8qIEdyaWRBcmVhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QzRTI1MjQx
ODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTIyMTgwNDZCQ0QwMEUy
N0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggKi87IH07CkBAIC00MTk1LDcgKzQy
MDgsNyBAQAogCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIwMEYxODIwNTQw
NjAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCAqLzsgfTsKIAkJQ0RGNEI3MTIxRTAwODdBRTAwRTIz
NUEyIC8qIExlZ2FjeUNETVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBMZWdhY3lDRE1TZXNz
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0RGNEI3MTUxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0QjcxMzFFMDBCN0U1MDBFMjM1QTIgLyogQ0RN
LmNwcCAqLzsgfTsKLQkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTQxRTAwQjdFNTAw
RTIzNUEyIC8qIENETS5oICovOyB9OworCQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RN
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0Qjcx
NDFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNEI3MTgxRTAxQ0I5MTAwRTIzNUEyIC8qIE1lZGlhS2V5
c1Jlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RGNEI3MTcxRTAxQ0I5MTAwRTIzNUEyIC8qIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucy5o
ICovOyB9OwogCQlDREY0QjcxQTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9uVHlw
ZS5pZGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0
QjcxOTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9uVHlwZS5pZGwgKi87IH07CiAJ
CUNERjRCNzFFMUUwMUUxMUEwMEUyMzVBMiAvKiBKU01lZGlhS2V5U2Vzc2lvblR5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzFDMUUwMUUx
MUEwMEUyMzVBMiAvKiBKU01lZGlhS2V5U2Vzc2lvblR5cGUuaCAqLzsgfTsKQEAgLTI5MjYyLDkg
KzI5Mjc1LDIyIEBACiAJCQkJNjU1MEI2OUUwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q5NEE1REUxRjcyRjU3QjAwRjUyNUM1IC8qIENETUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJBMDFEIC8qIENETUVu
Y3J5cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEY5MjQwMUFBRDkwMDRC
QTAxRCAvKiBDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREI3MDQ1QTFGNzQ2NUEx
MDAzOTIzREYgLyogQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
M0NFMEZBMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0QzQ0UwRkIyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJBMDFEIC8qIENETUtleVN0YXR1cy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UwRkQyNDAxQUFEOTAwNEJBMDFEIC8qIENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZFMjQwMUFBRDkw
MDRCQTAxRCAvKiBDRE1NZWRpYUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NF
MEZGMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1NZXNzYWdlVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0QzQ0UxMDAyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEMzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAvKiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwMTI0MDFBQURBMDA0QkEwMUQgLyog
Q0RNUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAyMjQwMUFBREEwMDRCQTAxRCAv
KiBDRE1SZXF1aXJlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UxMDMyNDAxQUFEQTAw
NEJBMDFEIC8qIENETVJlc3RyaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFNTk1OTcx
QkYyNkUyMTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEM0NFMTA0MjQwMUFBREEwMDRCQTAxRCAvKiBDRE1TZXNzaW9uVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJEIC8qIENlcnRpZmlj
YXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTFCOEYwQjUyMTk1M0Q2NTAwMEMyQjAwIC8q
IENlcnRpZmljYXRlSW5mb0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzZGRDE1MTZDNzgy
NjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0ZTlmOGVhMjA1YzgwY2ZhMjk4
NWZlZjE4NWJmZWZlMGMxMjI4MmI4Li45NGVmNWE3Yjk5NDBmYWEyMmY1OWNjOTRiODY2ZmExMzlm
Zjk4YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI1
NjEsMTUgKzI1NjEsMjUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKQoreworICAgIGlmICgh
bV9wbGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBib29sIHNob3VsZENvbnRpbnVlID0gaGFz
RXZlbnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXkiKSB8fCAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSAmJiAhZG9jdW1l
bnQoKS5xdWlya3MoKS5oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyaygpKTsK
KyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGRDb250
aW51ZSk7Cit9CisjZW5kaWYKKwogUmVmUHRyPEFycmF5QnVmZmVyPiBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fd2ViS2l0TWVkaWFLZXlzID8gbV93ZWJLaXRNZWRpYUtleXMtPmNh
Y2hlZEtleUZvcktleUlkKGtleUlkKSA6IG51bGxwdHI7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRh
KQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5s
ZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVk
a2V5IikKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpAQCAtMjU4MCwxNCArMjU5MCwxMiBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkq
IGluaXREYXRhKQogICAgICAgICApIHsKICAgICAgICAgbV9lcnJvciA9IE1lZGlhRXJyb3I6OmNy
ZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfRU5DUllQVEVEKTsKICAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5l
ZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERh
dGEpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgbV9hc3luY0V2ZW50UXVldWUt
PmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
U3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0CkBAIC01MTI5LDYgKzUxMzcsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCiAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CiAjZW5kaWYKKworI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
ICAgIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKQpAQCAtNTg5MSw2
ICs1OTAzLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChFdmVudCYg
ZXZlbnQpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25z
dCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpCisgICAgICAgIHVwZGF0
ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKKwogICAgIGlmIChldmVudFR5
cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdl
ZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKTsKIApAQCAtNTkxMiw2ICs1OTI5LDExIEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIFJlZjxFdmVudExpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxp
c3RlbmVyLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CisjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYg
KGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50KQorICAgICAgICB1
cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlmCisKICAgICBpZiAoZXZl
bnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNo
YW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggZjA1ZTIyM2I5MzJmNzE3YzFhY2MzMDBiNWY4MTFkNjkxNGIyOTZhNi4u
ZmUwN2FkMGY0Nzk3ZTcwOWE1NzA5OGRiYzU5MzM1NzlmYTQwM2U0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTY4Miw3ICs2ODIsNyBAQCBwcml2YXRlOgogCiAj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0
IGZpbmFsOwotICAgIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFs
OworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIGZpbmFsOwogICAg
IFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCkBAIC02OTYsNiArNjk2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gQ0RNQ2xp
ZW50CiAgICAgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5
KCkgZmluYWw7CiAjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgdXBkYXRlU2hvdWxkQ29udGludWVB
ZnRlck5lZWRLZXkoKTsKKyNlbmRpZgogICAgIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCiAgICAgdm9pZCBtZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2ly
ZWxlc3NDaGFuZ2VkKGJvb2wpIGZpbmFsOwpAQCAtMTE2OCw2ICsxMTcyLDcgQEAgcHJpdmF0ZToK
ICAgICBNZWRpYVByb3ZpZGVyIG1fbWVkaWFQcm92aWRlcjsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9oYXNOZWVka2V5TGlzdGVuZXIgeyBmYWxzZSB9
OwogICAgIFJlZlB0cjxXZWJLaXRNZWRpYUtleXM+IG1fd2ViS2l0TWVkaWFLZXlzOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUVuY3J5cHRpb25TY2hlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAppbmRleCA3NGIzYWE3ZDdiZGIwMGEyNjc1NmEwMjM2
NTY2ZjM2ODgxMmJjZTNiLi4xYTdhNTYyN2RiY2E2NDFiNDljZTdlNTZlNjcxNmUzMThhOTg4YmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCkBAIC0yNywxMyArMjcsMjcgQEAKIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNRW5jcnlwdGlvblNjaGVtZSB7CitlbnVt
IGNsYXNzIENETUVuY3J5cHRpb25TY2hlbWUgOiB1aW50OF90IHsKICAgICBjZW5jLAogICAgIGNi
Y3MsCiB9OwogCiB9CiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWU+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lLAorICAg
ICAgICBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lOjpjZW5jLAorICAgICAgICBXZWJDb3Jl
OjpDRE1FbmNyeXB0aW9uU2NoZW1lOjpjYmNzCisgICAgPjsKK307CisKK30KKwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3Rv
cnkuY3BwCmluZGV4IDRiYjU5OWZhODA3M2QzYjg1NWQ4NDYxNzg2MTlkYmMwMjYxMDU4ZjIuLjY2
MWQ1YjRlYjc1MmVhNTVhYTJkOGU0ZjllZWQ2Mzg2ZWRkYWM1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwCkBAIC01
Nyw2ICs1NywxMSBAQCB2b2lkIENETUZhY3Rvcnk6OnVucmVnaXN0ZXJGYWN0b3J5KENETUZhY3Rv
cnkmIGZhY3RvcnkpCiAgICAgcmVnaXN0ZXJlZEZhY3RvcmllcygpLnJlbW92ZUFsbCgmZmFjdG9y
eSk7CiB9CiAKK3ZvaWQgQ0RNRmFjdG9yeTo6cmVzZXRGYWN0b3JpZXMoKQoreworICAgIHBsYXRm
b3JtUmVnaXN0ZXJGYWN0b3JpZXMocmVnaXN0ZXJlZEZhY3RvcmllcygpKTsKK30KKwogI2lmICFV
U0UoR1NUUkVBTUVSKSAmJiAhVVNFKEFWRk9VTkRBVElPTikKIHZvaWQgQ0RNRmFjdG9yeTo6cGxh
dGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAppbmRl
eCA0NGVhYWIwN2U3NTdhZmU1OGI1MzYxZjVhZjEyYjI0Nzc2YTAzNTJlLi5lMWFlNjA0MjE2YTk3
NTkyZjMzY2I4MzYyZmMyYzIxYTJiMDg4YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCkBAIC00Miw3ICs0Miw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBjcmVhdGVDRE0o
Y29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShj
b25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgcmVn
aXN0ZXJlZEZhY3RvcmllcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8Q0RN
RmFjdG9yeSo+JiByZWdpc3RlcmVkRmFjdG9yaWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgcmVzZXRGYWN0b3JpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCByZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIHVucmVnaXN0ZXJGYWN0b3J5KENETUZhY3RvcnkmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXggOGY5
ZjNlYjg3NDVjMzUyMDI4MzE0YzYwNmQyODlkNGUzZjcxYTA0OC4uN2ZlMDlmMGFmM2ZkNzMwMzYy
MzVjMjI3N2JhY2RlYmEwNjQ5YjE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC01Miw2ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgTW9jaywKICAgICAgICAgQ2xlYXJLZXksCiAgICAgICAgIEZhaXJQbGF5U3Ry
ZWFtaW5nLAorICAgICAgICBSZW1vdGUsCiAgICAgfTsKICAgICB2aXJ0dWFsIEltcGxlbWVudGF0
aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCA9IDA7CiAKQEAgLTY4LDcgKzY5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9u
KCkgPSAwOwogCi0gICAgZW51bSBjbGFzcyBIRENQU3RhdHVzIHsKKyAgICBlbnVtIGNsYXNzIEhE
Q1BTdGF0dXMgOiB1aW50OF90IHsKICAgICAgICAgVW5rbm93biwKICAgICAgICAgVmFsaWQsCiAg
ICAgICAgIE91dHB1dFJlc3RyaWN0ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDg3MjVh
MzFkOGJiM2UyMmJlMjFkZjA3ZTMyMGIzNmU3NTAzODZlMWEuLmQ0NjRiNzRkMWM3MjAyYTlhMzM5
ZGZmNjVkMDZlMDgyMDg5NjlkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC03Miw5ICs3
Miw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKICAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpw
YWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25XYXNDbG9z
ZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91
YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1
Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOwog
Ci0gICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgeworICAgIGVudW0gY2xhc3MgU2Vz
c2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCiAgICAgICAgIE5vU2Vz
c2lvbkRhdGEsCiAgICAgICAgIE1pc21hdGNoZWRTZXNzaW9uVHlwZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1cy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKaW5kZXgg
YWQ5Njk2MjM2MDRjZDE0NzA1NWEyN2I3MzM2ZjY3N2MwYjNhZjJjNC4uY2M1ZTcxODZmNzRlZjhl
ODE0Y2IzYWY3NTVlMTYxYTY1YzIwODgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKQEAgLTMwLDkgKzMwLDExIEBA
CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETUtleVN0YXR1cyB7Citl
bnVtIGNsYXNzIENETUtleVN0YXR1cyA6IHVpbnQ4X3QgewogICAgIFVzYWJsZSwKICAgICBFeHBp
cmVkLAogICAgIFJlbGVhc2VkLApAQCAtNDQsNCArNDYsMjAgQEAgZW51bSBjbGFzcyBDRE1LZXlT
dGF0dXMgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUtleVN0YXR1cz4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzLAor
ICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6VXNhYmxlLAorICAgIFdlYkNvcmU6OkNETUtleVN0
YXR1czo6RXhwaXJlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlJlbGVhc2VkLAorICAg
IFdlYkNvcmU6OkNETUtleVN0YXR1czo6T3V0cHV0UmVzdHJpY3RlZCwKKyAgICBXZWJDb3JlOjpD
RE1LZXlTdGF0dXM6Ok91dHB1dERvd25zY2FsZWQsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVz
OjpTdGF0dXNQZW5kaW5nLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6SW50ZXJuYWxFcnJv
cgorICAgID47Cit9OworCit9CiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaAppbmRleCA2MTJkNjQ1ZmFhNTI0OGY3MWYx
YzE1NjdmNDUwN2U4OWYzYjMxY2U1Li44NTI1ODdjZWRhMDUxMjE0NDc5NTIyZmFjMzhlNGMwZmI5
ODc0OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCkBAIC00OCw2ICs0
OCw2NyBAQCBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiB7CiAgICAgQ0RNUmVxdWly
ZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyIHsgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsIH07
CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlIHsgQ0RNUmVxdWlyZW1lbnQ6Ok9w
dGlvbmFsIH07CiAgICAgVmVjdG9yPENETVNlc3Npb25UeXBlPiBzZXNzaW9uVHlwZXM7CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGxhYmVsOworICAgICAgICBlbmNv
ZGVyIDw8IGluaXREYXRhVHlwZXM7CisgICAgICAgIGVuY29kZXIgPDwgYXVkaW9DYXBhYmlsaXRp
ZXM7CisgICAgICAgIGVuY29kZXIgPDwgdmlkZW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGVuY29k
ZXIgPDwgZGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IHBlcnNpc3Rl
bnRTdGF0ZTsKKyAgICAgICAgZW5jb2RlciA8PCBzZXNzaW9uVHlwZXM7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAg
T3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAgICAgZGVjb2RlciA+PiBsYWJlbDsKKyAgICAg
ICAgaWYgKCFsYWJlbCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGluaXREYXRhVHlwZXM7CisgICAgICAgIGRlY29k
ZXIgPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgaWYgKCFpbml0RGF0YVR5cGVzKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RN
TWVkaWFDYXBhYmlsaXR5Pj4gYXVkaW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGRlY29kZXIgPj4g
YXVkaW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxD
RE1NZWRpYUNhcGFiaWxpdHk+PiB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgZGVjb2RlciA+
PiB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgaWYgKCF2aWRlb0NhcGFiaWxpdGllcykKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Q0RNUmVx
dWlyZW1lbnQ+IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKKyAgICAgICAgZGVjb2RlciA+PiBkaXN0
aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgCisgICAgICAgIE9wdGlv
bmFsPENETVJlcXVpcmVtZW50PiBwZXJzaXN0ZW50U3RhdGU7CisgICAgICAgIGRlY29kZXIgPj4g
cGVyc2lzdGVudFN0YXRlOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENETVNl
c3Npb25UeXBlPj4gc2Vzc2lvblR5cGVzOworICAgICAgICBkZWNvZGVyID4+IHNlc3Npb25UeXBl
czsKKyAgICAgICAgaWYgKCFzZXNzaW9uVHlwZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqbGFiZWwp
LAorICAgICAgICAgICAgV1RGTW92ZSgqaW5pdERhdGFUeXBlcyksCisgICAgICAgICAgICBXVEZN
b3ZlKCphdWRpb0NhcGFiaWxpdGllcyksCisgICAgICAgICAgICBXVEZNb3ZlKCp2aWRlb0NhcGFi
aWxpdGllcyksCisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyLAorICAgICAgICAg
ICAgKnBlcnNpc3RlbnRTdGF0ZSwKKyAgICAgICAgICAgIFdURk1vdmUoKnNlc3Npb25UeXBlcyks
CisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lZGlhQ2Fw
YWJpbGl0eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVk
aWFDYXBhYmlsaXR5LmgKaW5kZXggOTAxYjU0ZmYwNTA4ZWRhOWJiYjg4YzVjMWRiODY1MzhkY2Ux
NDI4Mi4uZjg0YTBkMTJhYjRjZDUyMGUzZjBlMDRkNjRlYmVmYzYzMTYyNTg3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmls
aXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVk
aWFDYXBhYmlsaXR5LmgKQEAgLTM5LDYgKzM5LDM5IEBAIHN0cnVjdCBDRE1NZWRpYUNhcGFiaWxp
dHkgewogICAgIFN0cmluZyBjb250ZW50VHlwZTsKICAgICBTdHJpbmcgcm9idXN0bmVzczsKICAg
ICBPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1lPiBlbmNyeXB0aW9uU2NoZW1lOworCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlwZTsKKyAgICAgICAg
ZW5jb2RlciA8PCByb2J1c3RuZXNzOworICAgICAgICBlbmNvZGVyIDw8IGVuY3J5cHRpb25TY2hl
bWU7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9w
dGlvbmFsPENETU1lZGlhQ2FwYWJpbGl0eT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
eworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlOworICAgICAgICBkZWNvZGVy
ID4+IGNvbnRlbnRUeXBlOworICAgICAgICBpZiAoIWNvbnRlbnRUeXBlKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHJvYnVzdG5l
c3M7CisgICAgICAgIGRlY29kZXIgPj4gcm9idXN0bmVzczsKKyAgICAgICAgaWYgKCFyb2J1c3Ru
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1lPj4gZW5jcnlwdGlvblNjaGVtZTsKKyAgICAg
ICAgZGVjb2RlciA+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBpZiAoIWVuY3J5cHRpb25T
Y2hlbWUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVy
biB7eworICAgICAgICAgICAgV1RGTW92ZSgqY29udGVudFR5cGUpLAorICAgICAgICAgICAgV1RG
TW92ZSgqcm9idXN0bmVzcyksCisgICAgICAgICAgICBXVEZNb3ZlKCplbmNyeXB0aW9uU2NoZW1l
KSwKKyAgICAgICAgfX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2Fn
ZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3Nh
Z2VUeXBlLmgKaW5kZXggZTVmNzk2YTllMGUwNzUxYWEwMjc4MmI5YjY2NmNhMjMxZWY3ZTYwOS4u
OTViZjI4YzJhYTk0YTNkYTUwNDViNWVjMDBmMzU4Y2QyNmQ5NWNhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5o
CkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFz
cyBDRE1NZXNzYWdlVHlwZSB7CitlbnVtIGNsYXNzIENETU1lc3NhZ2VUeXBlIDogdWludDhfdCB7
CiAgICAgTGljZW5zZVJlcXVlc3QsCiAgICAgTGljZW5zZVJlbmV3YWwsCiAgICAgTGljZW5zZVJl
bGVhc2UsCkBAIC00MSw0ICs0MywxOCBAQCBlbnVtIGNsYXNzIENETU1lc3NhZ2VUeXBlIHsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLAorICAg
ICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QsCisgICAgICAgIFdl
YkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZWxlYXNlLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNz
YWdlVHlwZTo6SW5kaXZpZHVhbGl6YXRpb25SZXF1ZXN0CisgICAgPjsKK307CisKK30KKwogI2Vu
ZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5kZXggMjVmNzgxNmEyZmUxZGE2
ZjkwYzJmZWY3Nzc1NTE0MDZhYTBmNGEwMy4uNzQ5ZmNkZjJmYzM3YTVlOWZlNjI1ZDUzYTNlMDEx
YzcxYzRhZWQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNDEsMTEgKzQxLDExIEBAIGNsYXNzIENETVByaXZhdGUg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETVByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5
cGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RN
U2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRl
ZFJvYnVzdG5lc3NlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENETVJlcXVpcmVtZW50IGRp
c3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFu
ZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVx
dWlyZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJl
cXVpcmVtZW50LmgKaW5kZXggNjlhYzEyZDMxNmJmNjY1N2JiMGEyNGRhZjdhZTRmYTBmZDRmMWM5
OC4uNWIwYjc3ODBkMjdkZmViMTkzZGNlNmVjZGE3MTc4NTI4ZjdjZDU5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXF1aXJlbWVu
dC5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBj
bGFzcyBDRE1SZXF1aXJlbWVudCB7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWludDhf
dCB7CiAgICAgUmVxdWlyZWQsCiAgICAgT3B0aW9uYWwsCiAgICAgTm90QWxsb3dlZApAQCAtNDAs
NCArNDIsMTcgQEAgZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCB7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkLAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVu
dDo6T3B0aW9uYWwsCisgICAgICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpOb3RBbGxvd2Vk
CisgICAgPjsKK307CisKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0
cmljdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJl
c3RyaWN0aW9ucy5oCmluZGV4IGM1MmUyODJhMTJlOTFhNDg4MTBiZDE4Yjg3ZWI2YWQ2MzhmMjEw
YTguLjljYTJhYzU5ZThiMTM1NDYzYTUyZGI0NWU4MDczMWY1MGM2OTRmM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0
aW9ucy5oCkBAIC0zNiw2ICszNiwzOSBAQCBzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zIHsKICAgICBi
b29sIGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCB7IGZhbHNlIH07CiAgICAgYm9vbCBwZXJz
aXN0ZW50U3RhdGVEZW5pZWQgeyBmYWxzZSB9OwogICAgIEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUs
IFdURjo6SW50SGFzaDxDRE1TZXNzaW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8
Q0RNU2Vzc2lvblR5cGU+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAg
eworICAgICAgICBlbmNvZGVyIDw8IGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAg
ICAgZW5jb2RlciA8PCBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAgIGVuY29kZXIgPDwg
ZGVuaWVkU2Vzc2lvblR5cGVzOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVy
PgorICAgIHN0YXRpYyBPcHRpb25hbDxDRE1SZXN0cmljdGlvbnM+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZGlzdGluY3RpdmVJZGVudGlm
aWVyRGVuaWVkOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmll
ZDsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHBlcnNpc3Rl
bnRTdGF0ZURlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7
CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlRGVuaWVkKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxIYXNoU2V0PENETVNlc3Npb25UeXBl
LCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICAgICAgZGVjb2RlciA+
PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAgICAgIGlmICghZGVuaWVkU2Vzc2lvblR5cGVzKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAg
ICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQsCisgICAgICAgICAgICAqcGVy
c2lzdGVudFN0YXRlRGVuaWVkLAorICAgICAgICAgICAgV1RGTW92ZSgqZGVuaWVkU2Vzc2lvblR5
cGVzKSwKKyAgICAgICAgfX07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vz
c2lvblR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNl
c3Npb25UeXBlLmgKaW5kZXggNjA1NzRhNWE2OTNhOTZjNDlmNDlmYjczNDk2ZWQ3NWI3ZTFlNmZi
Yi4uZTA3YzMwMDI3OTMwNWY3NzQzZjIyZmNmNTQwNmYyY2ZhNjgxZGUyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlw
ZS5oCkBAIC0zMCw5ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBj
bGFzcyBDRE1TZXNzaW9uVHlwZSB7CitlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIDogdWludDhf
dCB7CiAgICAgVGVtcG9yYXJ5LAogICAgIFBlcnNpc3RlbnRVc2FnZVJlY29yZCwKICAgICBQZXJz
aXN0ZW50TGljZW5zZQpAQCAtNDAsNCArNDIsMTcgQEAgZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlw
ZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1TZXNzaW9uVHlw
ZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSwKKyAgICAgICAg
V2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZCwKKyAgICAgICAg
V2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlCisgICAgPjsKK307CisK
K30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAKaW5kZXggNDUxMTFkYzc1YjU1MDgwY2VmNGU1ZmIzOGFlMjYzM2IzOWVhNzIz
My4uODY0ZDZlM2RlODNiMDJjM2IxYzBkM2FkYjU2NTdiM2NlN2I2MTk4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJDRE1SZXN0cmljdGlvbnMuaCIKICNpbmNs
dWRlICJDRE1TZXNzaW9uVHlwZS5oIgorI2luY2x1ZGUgIkluaXREYXRhUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgpAQCAtMjkwLDEwICsyOTEsMTMgQEAgYm9vbCBDRE1GYWN0b3J5Q2xlYXJLZXk6
OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogQ0RNUHJpdmF0ZUNs
ZWFyS2V5OjpDRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiBDRE1Qcml2YXRlQ2xlYXJL
ZXk6On5DRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgQ0RNUHJpdmF0ZUNs
ZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QKIHsKLSAgICAvLyBga2V5aWRzYCBhbmQgJ2NlbmMnIGFy
ZSB0aGUgb25seSBzdXBwb3J0ZWQgaW5pdCBkYXRhIHR5cGUuCi0gICAgcmV0dXJuIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJjZW5jIikgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAid2VibSIpKTsKKyAgICByZXR1cm4g
eworICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5OjprZXlpZHNOYW1lKCksCisgICAgICAgIEluaXRE
YXRhUmVnaXN0cnk6OmNlbmNOYW1lKCksCisgICAgICAgIEluaXREYXRhUmVnaXN0cnk6OndlYm1O
YW1lKCksCisgICAgfTsKIH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNQZXJzaXN0ZW50TGljZW5z
ZVR5cGUoY29uc3QgVmVjdG9yPENETVNlc3Npb25UeXBlPiYgdHlwZXMpCkBAIC0zMzcsNyArMzQx
LDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhS
ZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihDRE1TZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0Citib29sIENETVByaXZhdGVDbGVhcktleTo6c3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiBz
ZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikgY29uc3QKIHsKICAgICAvLyBPbmx5IHN1cHBvcnQgdGhlICd0ZW1wb3JhcnknIGFuZCAncGVy
c2lzdGVudC1saWNlbnNlJyBzZXNzaW9uIHR5cGVzLgogICAgIGlmIChzZXNzaW9uVHlwZSAhPSBD
RE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5ICYmIHNlc3Npb25UeXBlICE9IENETVNlc3Npb25UeXBl
OjpQZXJzaXN0ZW50TGljZW5zZSkKQEAgLTM0NSwxMCArMzQ5LDEwIEBAIGJvb2wgQ0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lv
blR5cGUmIHNlCiAgICAgcmV0dXJuIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
KTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzUm9idXN0bmVzcyhjb25z
dCBTdHJpbmcmIHJvYnVzdG5lc3MpIGNvbnN0CitWZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdAogewogICAgIC8vIE9ubHkg
ZW1wdHkgYHJvYnVzdG5lc3NgIHN0cmluZyBpcyBzdXBwb3J0ZWQuCi0gICAgcmV0dXJuIHJvYnVz
dG5lc3MuaXNFbXB0eSgpOworICAgIHJldHVybiB7IGVtcHR5QXRvbSgpIH07CiB9CiAKIENETVJl
cXVpcmVtZW50IENETVByaXZhdGVDbGVhcktleTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVp
cmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmlj
dGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKQEAgLTQ5OCw3ICs1MDIsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogI2lmIExP
R19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxv
Z2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJlY2F1c2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oCmluZGV4IDY3MDRhZTdhOTU3ZjMyZmUxZjg0OTgzZWQzYjNmNjUw
MmE1MzE1YTIuLjRhYjlkZTBmMDJjZWViYjIwYTkzY2RmNjFlM2I3NzBmNWZkZTgyMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNzQsMTEgKzc0LDExIEBAIHB1YmxpYzoKICAgICBD
RE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsK
IAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0
IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkg
Y29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3Nl
cygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRz
Q29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiwgY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9y
dHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIENETVJlcXVp
cmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAg
ICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENs
ZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CkBA
IC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5
KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBtX3BhcmVudEluc3RhbmNl
KHBhcmVudCkgeyB9CiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNs
b3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDU3ZGZjYmY0YmM3YzQ4ODQ0
ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIuLmRiMGIyZjhhN2UwZjI2OTZhMWQ4ZGI2ZjRkNGY0N2Fh
ZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2NTcsMTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6YXR0ZW1w
dFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiAKICNlbmRpZgog
CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVk
KGJvb2wgc2hvdWxkKQoreworICAgIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCA9IHNo
b3VsZDsKKyAgICBtX3ByaXZhdGUtPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hv
dWxkKTsKK30KKyNlbmRpZgorCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5kdXJhdGlvbk1lZGlhVGltZSgpOwpAQCAtMTMx
Miw5ICsxMzIwLDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBNZWRpYVBsYXllcjo6Y2FjaGVkS2V5
Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50KCku
bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChrZXlJZCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5
ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXI6Omtl
eU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVk
aWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERhdGEpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyS2V5
TmVlZGVkKGluaXREYXRhKTsKIH0KIAogU3RyaW5nIE1lZGlhUGxheWVyOjptZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCmluZGV4IDdlNmNiOGEzOTBkZjdmZTFhN2FhZTAxNzM5ZGM5NDhmNzc2
NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBjNTY5ZTY3YTQxZTEyMGI3NjQwZWZhNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjAwLDcg
KzIwMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQog
ICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktl
eUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IH0K
ICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAjZW5kaWYKIApAQCAtMzY2LDYgKzM2
NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENE
TUluc3RhbmNlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVB
ZnRlcktleU5lZWRlZChib29sKTsKKyAgICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVk
ZWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQ7IH0KKyNl
bmRpZgorCiAgICAgYm9vbCBwYXVzZWQoKSBjb25zdDsKICAgICBib29sIHNlZWtpbmcoKSBjb25z
dDsKIApAQCAtNTE5LDcgKzUyNCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SWQo
Y29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3Q7Ci0gICAgYm9vbCBrZXlOZWVkZWQoVWludDhBcnJh
eSogaW5pdERhdGEpOworICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsK
ICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogI2VuZGlmCiAK
QEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVhbTsKICNlbmRpZgorI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyNl
bmRpZgogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggOWY3
ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0YjBkY2ExY2MxNzVhOC4uN2E4MjA0NzBmOTk5YWM5OWE2
YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI0Myw2ICsyNDMsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZENvbnRp
bnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkgeyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCA0ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3
ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJhYmZjZGU1YTBkNGI4MTE4ZDAzY2M5MmYxZDYxOWQ2MWQ3
N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI0
Nyw5ICsyNDcsOSBAQCBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVm
YXVsdDsKIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERh
dGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxBdG9t
U3RyaW5nPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlw
ZXMoKSBjb25zdAogewotICAgIHJldHVybiB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhp
bml0RGF0YVR5cGUpOworICAgIHJldHVybiBjb3B5VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5cGVz
KCkpOwogfQogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25m
aWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
IGNvbnN0CkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0QKICAgICBy
ZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uKENETVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RN
U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKSBjb25zdAogewogICAgIGlmIChzZXNzaW9uVHlwZSA9PSBDRE1TZXNz
aW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3Rl
bnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCkBAIC0zMTYsMTMgKzMxNiwxMCBA
QCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKENETVNlc3NpbwogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVj
dG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVkUm9i
dXN0bmVzc2VzKCkgY29uc3QKIHsKLSAgICBpZiAocm9idXN0bmVzcy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCiAgICAgLy8gRklYTUU6IERldGVybWluZSBhbiBlbnVtZXJhdGVk
IGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1ZXMgc3VwcG9ydGVkIGJ5IEZQUy4KLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHsgZW1wdHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQg
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWly
ZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0
aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyArMzYzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogCiBib29sIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFz
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghdmFsaWRJbml0RGF0
YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBzaW5mTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IDUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZk
MTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFkN2FmYmFlMmQyYzU2MTJmODRiNDM0YzBmMTBmNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC01NSwxMSArNTUsMTEg
QEAgcHVibGljOgogICAgIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1
YWwgfkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogCi0gICAgYm9vbCBzdXBwb3J0c0lu
aXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRo
UmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1S
ZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5
cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVz
cyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lv
blR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0
cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0RNUmVx
dWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlk
ZTsKICAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3Jp
Z2luQW5kQ2xlYXJhYmxlKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDcwZWFjMzZhNDc5NzgxNWExYWYyNGUyZDU3
YjAyMjZmYjQ5NzljNDYuLmY4OGU5NDYxYmY4Njg5M2U0YzJlNzY5OWIzODUxZDgyZjkzMjhlNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTkzMSw5ICsxOTMxLDkgQEAgYm9vbCBBVkZXcmFwcGVy
OjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdFIKIAogICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXIt
PmJ5dGVMZW5ndGgoKTsKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICgh
bV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1fb3duZXItPnBsYXllcigpLT5rZXlOZWVkZWQoaW5p
dERhdGEucHRyKCkpOwogCisgICAgICAgIGltX293bmVyLT5wbGF5ZXIoKS0+c2hvdWxkQ29udGlu
dWVBZnRlcktleU5lZWRlZCgpOwogICAgICAgICBzZXRSZXF1ZXN0Rm9yS2V5KGtleVVSSSwgYXZS
ZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
LmgKaW5kZXggYjExZjcxYTliNWUzOGJmNjk4YjEzOTQ5ZGRkZTg2ZjNkZDk5NGNjMS4uN2YwZTJk
NWFjMDBlNjA2MmQzNWJhYzQ1ZDZlMWU3MWQ0NDAzZTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNz
aW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lv
bihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3
MzI2Nzc1ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0NjQ3Y2I4ZDMxLi5mMDliMjg5YTMzZTdlYzA0
MGYwNGQxZjZmOTlhZjhlZjkwZDk3NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAt
NTgwLDcgKzU4MCw3IEBAIHN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5y
ZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFs
KHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byBleHBpcmVk
U2Vzc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKQEAgLTcx
MSw3ICs3MTEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVx
dWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVu
dEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1p
bmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07Cisg
ICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNz
Q29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBj
b250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVz
cG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogCiAgICAgLy8gRklYTUUocmRhcjov
L3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBB
VkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgc3Ry
dWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uIG1ldGhvZCA9IHByb3RvY29sX2dldE1ldGhvZERl
c2NyaXB0aW9uKEBwcm90b2NvbChBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGUpLCBAc2VsZWN0
b3IoY29udGVudEtleVNlc3Npb246Y29udGVudEtleVJlcXVlc3REaWRTdWNjZWVkOiksIE5PLCBZ
RVMpOwpAQCAtMTE0MCw3ICsxMTQwLDggQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChOU0RhdGEKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7Ci0gICAgbV9jbGllbnQt
PnNlc3Npb25JZENoYW5nZWQobV9zZXNzaW9uSWQpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPnNlc3Npb25JZENoYW5nZWQobV9zZXNzaW9uSWQpOwogfQogCiB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Z3JvdXBTZXNzaW9uSWRl
bnRpZmllckNoYW5nZWQoQVZDb250ZW50S2V5UmVwb3J0R3JvdXAqIGdyb3VwLCBOU0RhdGEgKnNl
c3Npb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYjM3YzQ0MTEzMTQ5
ODg3OTU0NmVjOGE1N2EwZGQ4ZTExZjc4NDY5Ny4uZWJhNmU3NTJiZmJlNjM3ZmRmYzNlODg1Y2Fl
ZDJjNmM2NmQ2ZGQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNjc4LDggKzE2Nzgs
MTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAga2V5VVJJQXJyYXktPnNldFJh
bmdlKFN0cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwga2V5VVJJLmxl
bmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAogICAgICAgICBhdXRvIGluaXRE
YXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAwLCBieXRl
TGVuZ3RoKTsKLSAgICAgICAgaWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigp
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcGxheWVyKCktPmtleU5lZWRl
ZChpbml0RGF0YS5wdHIoKSk7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICAgICAg
aWYgKCFwbGF5ZXIoKS0+c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQpAQCAtMTcxMyw3ICsxNzE2LDkgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkp
CisgICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworCisgICAgICAg
IGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBtX2tleVVSSVRvUmVxdWVzdE1hcC5zZXQoa2V5
SUQsIGF2UmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3Bw
CmluZGV4IGNlNWQ4ZjdkNmJkZjM4YjU5MjIwOTMwMmE2ZTZkNzFiMzY5NjYzMmQuLjBhNGQ2NTc1
MGExNTRjNWU1ZWUxOWI1ODMwYzlmYmFlMDAwMWUzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC05OCw2ICs5OCwxMSBAQCB2b2lkIE1vY2tDRE1GYWN0
b3J5OjpzZXRTdXBwb3J0ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykKICAgICAg
ICAgbV9zdXBwb3J0ZWREYXRhVHlwZXMuYXBwZW5kKHR5cGUpOwogfQogCit2b2lkIE1vY2tDRE1G
YWN0b3J5OjpzZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKFZlY3RvcjxTdHJpbmc+JiYgcm9idXN0bmVz
c2VzKQoreworICAgIG1fc3VwcG9ydGVkUm9idXN0bmVzcyA9IHJvYnVzdG5lc3Nlcy5tYXAoW10g
KGF1dG8mIHJvYnVzdG5lc3MpIC0+IEF0b21TdHJpbmcgeyByZXR1cm4gcm9idXN0bmVzczsgfSk7
Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRl
Q0RNKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETT4obWFr
ZVdlYWtQdHIoKnRoaXMpKTsKQEAgLTEwOCwxMSArMTEzLDE4IEBAIE1vY2tDRE06Ok1vY2tDRE0o
V2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gZmFjdG9yeSkKIHsKIH0KIAotYm9vbCBNb2NrQ0RNOjpz
dXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0
CitWZWN0b3I8QXRvbVN0cmluZz4gTW9ja0NETTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNv
bnN0CiB7CiAgICAgaWYgKG1fZmFjdG9yeSkKLSAgICAgICAgcmV0dXJuIG1fZmFjdG9yeS0+c3Vw
cG9ydGVkRGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpOworICAg
IHJldHVybiB7IH07Cit9CisKK1ZlY3RvcjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRS
b2J1c3RuZXNzZXMoKSBjb25zdAoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAgIHJldHVy
biBtX2ZhY3RvcnktPnN1cHBvcnRlZFJvYnVzdG5lc3MoKTsKKyAgICByZXR1cm4geyB9OwogfQog
CiBib29sIE1vY2tDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0xMzksNyArMTUxLDcgQEAg
Ym9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNb2Nr
Q0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9u
VHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0Citib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBNZWRpYUtleVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QKIHsKICAgICBpZiAoIW1fZmFjdG9yeSB8fCAhbV9mYWN0
b3J5LT5zdXBwb3J0ZWRTZXNzaW9uVHlwZXMoKS5jb250YWlucyhzZXNzaW9uVHlwZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE0OCwxMyArMTYwLDYgQEAgYm9vbCBNb2NrQ0RNOjpzdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vz
c2lvblQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1JvYnVz
dG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAotewotICAgIGlmIChtX2ZhY3Rv
cnkpCi0gICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZFJvYnVzdG5lc3MoKS5jb250
YWlucyhyb2J1c3RuZXNzKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIE1lZGlhS2V5c1JlcXVp
cmVtZW50IE1vY2tDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBNZWRpYUtleXNSZXN0cmljdGlvbnMm
KSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCkBAIC0xOTksNyArMjA0LDcgQEAgYm9vbCBN
b2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIXN1cHBvcnRzSW5pdERhdGFUeXBlKGlu
aXREYXRhVHlwZSkpCisgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMo
aW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVU5VU0VEX1BBUkFN
KGluaXREYXRhKTsKQEAgLTMyNSw3ICszMzAsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Np
b246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwog
ICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNl
Lmxlbmd0aCgpKSwgc2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwog
fQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNl
U2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/
IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBA
IC0zMzMsNyArMzM4LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJl
c3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNl
LT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMo
U3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZh
aWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggMzk5MDli
OTMwM2E5NGM5MzY4ZWFhMGY2MjVmNGI2N2U1MjUwNTlmMS4uNmNiOTE1Yzg1MDE1NThmMTBiYjhm
YzViMmRhNTI4MzUwNDBmMGViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPE1lZGlhS2V5
U2Vzc2lvblR5cGU+JiBzdXBwb3J0ZWRTZXNzaW9uVHlwZXMoKSBjb25zdCB7IHJldHVybiBtX3N1
cHBvcnRlZFNlc3Npb25UeXBlczsgfQogICAgIHZvaWQgc2V0U3VwcG9ydGVkU2Vzc2lvblR5cGVz
KFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYmIHR5cGVzKSB7IG1fc3VwcG9ydGVkU2Vzc2lv
blR5cGVzID0gV1RGTW92ZSh0eXBlcyk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
dXBwb3J0ZWRSb2J1c3RuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNz
OyB9Ci0gICAgdm9pZCBzZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKFZlY3RvcjxTdHJpbmc+JiYgcm9i
dXN0bmVzcykgeyBtX3N1cHBvcnRlZFJvYnVzdG5lc3MgPSBXVEZNb3ZlKHJvYnVzdG5lc3MpOyB9
CisgICAgY29uc3QgVmVjdG9yPEF0b21TdHJpbmc+JiBzdXBwb3J0ZWRSb2J1c3RuZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOyB9CisgICAgdm9pZCBzZXRTdXBwb3J0
ZWRSb2J1c3RuZXNzKFZlY3RvcjxTdHJpbmc+JiYpOwogCiAgICAgTWVkaWFLZXlzUmVxdWlyZW1l
bnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9k
aXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQ7IH0KICAgICB2b2lkIHNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChNZWRpYUtleXNSZXF1aXJlbWVudCByZXF1aXJlbWVu
dCkgeyBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCA9IHJlcXVpcmVtZW50OyB9
CkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgbV9w
ZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCB7IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25h
bCB9OwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBtX3N1cHBvcnRlZERhdGFUeXBlczsKICAgICBW
ZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7Ci0gICAg
VmVjdG9yPFN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOworICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBtX3N1cHBvcnRlZFJvYnVzdG5lc3M7CiAgICAgVmVjdG9yPE1lZGlhS2V5RW5jcnlwdGlv
blNjaGVtZT4gbV9zdXBwb3J0ZWRFbmNyeXB0aW9uU2NoZW1lczsKICAgICBib29sIG1fcmVnaXN0
ZXJlZCB7IHRydWUgfTsKICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1ZSB9OwpA
QCAtMTA5LDExICsxMDksMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
TW9ja0NETUluc3RhbmNlOwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBB
dG9tU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRl
ZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3Vw
cG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZp
Z3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1l
ZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYp
IGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJp
bmcmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBNZWRpYUtleVNlc3Npb25UeXBlJiwgY29uc3QgTWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlz
dGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAg
IE1lZGlhS2V5c1JlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IE1l
ZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBl
ck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBj
b25zdCBmaW5hbDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
dm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBs
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9h
ZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBT
dHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNh
bGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IDVlZmU2NjI1ZDZmMmY5MGFk
ZWQ3N2Q4YzU1OTdkZjNjNzg4ZjMxZGIuLjViMGZhMTljZTJlYjJlM2U4MzkwMTQ4ZTE1NjY0ODdk
YzA4OTNiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTQ5MCwxMCArNDkwLDkgQEAgUmVmUHRy
PEFycmF5QnVmZmVyPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckNhY2hlZEtl
eUZvcktleUlkKGNvbnN0IFMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSop
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmgKaW5kZXggMTZiYjJkZGZhMjE0NzQ3MGU4NjAwYWI3MTM5NmE1OWNkZjU0
NDlmYS4uNGE3MzlmYjRmOWI1ZDY3M2Q0ZTlmMmI1YWY1Mzk1MWUzZWVkZDBjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5oCkBAIC0xNjgsNyArMTY4LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNo
ZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlh
UGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVy
S2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApAQCAtMjUyLDYg
KzI1MiwxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkxheW91dFJlY3QgbV92aWRlb0NvbnRl
bnRCb3hSZWN0OwogICAgIGZsb2F0IG1fdmlkZW9Db250ZW50U2NhbGUgeyAxLjAgfTsKIAorI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyNl
bmRpZgorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBtX2xv
Z2dlcjsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391622</attachid>
            <date>2020-02-24 22:12:43 -0800</date>
            <delta_ts>2020-02-28 21:29:18 -0800</delta_ts>
            <desc>Part 1: WebCore</desc>
            <filename>bug-208090-20200224221242.patch</filename>
            <type>text/plain</type>
            <size>151950</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uODdlMGI2NzM2MWFhY2ZiNWIwM2IxN2VkNDg3NmUz
YTU5Yjc2ZmE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0wMi0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50
IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZW5hYmxlIGNhY2hpbmcgb2YgY2VydGFpbiBD
RE0gcHJvcGVydGllcywgYWxsb3cgdGhlbSB0byBiZSBmZXRjaGVkIHJhdGhlciB0aGFuIHF1ZXJp
ZXMuIEFzIHN1Y2gsCisgICAgICAgIENETVByaXZhdGU6OnN1cHBvcnRzSW5pdERhdGFUeXBlIC0+
IHN1cHBvcnRlZEluaXREYXRhVHlwZXMsIHN1cHBvcnRzUm9idXN0bmVzcyAtPiBzdXBwb3J0ZWRS
b2J1c3RuZXNzZXMuCisKKyAgICAgICAgVG8gZW5hYmxlIENETSB0eXBlcyB0byBiZSBwYXNzZWQg
YWNyb3NzIFhQQywgYWRkIGV4cGxpY2l0IHNpemVzIHRvIHRoZSBlbnVtZXJhdGlvbnMsIGFuZCBh
ZGQgZW5jb2RlIGFuZAorICAgICAgICBkZWNvZGUgdGVtcGxhdGVzIHRvIHRoZSBkYXRhIHR5cGVz
LgorCisgICAgICAgIFRvIGVuYWJsZSBhc3luYyBtZXNzYWdpbmcgZm9ybSB0aGUgR1BVIHByb2Nl
c3MncyBNZWRpYVBsYXllciwgc2VuZCB0aGUgTWVkaWFQbGF5ZXIgdGhlIGluZm9ybWF0aW9uIGl0
CisgICAgICAgIG5lZWRzIHdoZW4gYm90aCBsZWdhY3ktIGFuZCBtb2Rlcm4tRU1FIEFQSXMgYXJl
IGJvdGggZW5hYmxlZCwgcmF0aGVyIHRoYW4gYWxsb3cgdGhlIE1lZGlhUGxheWVyUHJpdmF0ZQor
ICAgICAgICB0byBxdWVyeSB0aGUgTWVkaWFQbGF5ZXIuCisKKyAgICAgICAgTW92ZSBtb3N0IG9m
IHRoZSBhbGdvcml0aGltaWMgaW1wbGVtZW50YXRpb24gZnJvbSBDRE0gaW50byBDRE1Qcml2YXRl
LCBhbGxvd2luZyBpdCB0byBiZSBydW4gZnJvbSB3aXRoaW4KKyAgICAgICAgdGhlIEdQVSBwcm9j
ZXNzLiBTaW1pbG1hcmx5LCBtYWtlIG1vc3Qgb2YgdGhlIHN5bmNocm9ub3VzIG1ldGhvZHMgaW4g
Q0RNSW5zdGFuY2UgaW5zdGVhZCB0YWtlIGEgY2FsbGJhY2sKKyAgICAgICAgcGFyYW1ldGVyLCBh
bGxvd2luZyB0aGVtIHRvIGJlIGltcGxlbWVudGVkIGluIGEgcmVtb3RlIHByb2Nlc3MuCisKKyAg
ICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5
U3lzdGVtQWNjZXNzOjpjcmVhdGVNZWRpYUtleXMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6c2V0
U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRs
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVBZnRl
ck5lZWRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFF
bmdpbmVXYXNVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFk
ZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVt
b3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cmVzZXRGYWN0b3JpZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUtleVN0YXR1cy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETU1lZGlhQ2FwYWJpbGl0eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNTWVkaWFD
YXBhYmlsaXR5OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNTWVkaWFDYXBh
YmlsaXR5OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1l
c3NhZ2VUeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGU6OmRvU3VwcG9ydGVkQ29uZmln
dXJhdGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6aXNQZXJzaXN0ZW50
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmls
aXRpZXNGb3JBdWRpb1ZpZGVvVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlOjpn
ZXRDb25zZW50U3RhdHVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1l
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVJlc3RyaWN0aW9uczo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xl
YXJLZXk6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZUNsZWFyS2V5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U3RvcmFnZURpcmVjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRl
TGljZW5zZSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2hvdWxkQ29udGludWVBZnRlcktl
eU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5l
ZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29u
ZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnN1cHBvcnRlZFJvYnVzdG5lc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVkZX
cmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U3RvcmFnZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Up
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZFJvYnVzdG5lc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NETTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OnNldFN0b3Jh
Z2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRlZFJvYnVzdG5lc3MgY29uc3Qp
OgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgYWZ0ZXIgcjI1NjgwOApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA1NjEwMmJjYzg4Y2FiN2IwNjhiNGY0ZTJiNTk5MmYwNzdkZDRiZTMwLi5mNmFk
OWM5ZmNjNjYxYzE0NTgxOGE1NzhlODFiNmM3ZmI3ZjQwNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIwLTAyLTIzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZG9wdCBj
aGFuZ2VzIHRvIE1lZGlhUGxheWVyUHJveHkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisKIDIwMjAtMDItMjEgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQXBwLWJvdW5kIGRv
bWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBTZXNzaW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggYWQ0ZjcxZDdjNGI0OTY5MTAzMjE2MzNjYWFmYzM4ZDYwZjYyY2YxZC4uNWFiN2Jh
NTEzYjYwMTFhZmEzMmUxMTZhYjY4YmE1MTM5YjZhNTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xMDMxLDYgKzEwMzEsMjAgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKICAgICBwbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAogCisgICAgcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNRmFjdG9yeS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2UuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisg
ICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmgKKyAgICBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKKyAgICBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisgICAgcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaAorICAgIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNU2Vzc2lvblR5cGUuaAorCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJvdmlkZXIu
aAogICAgIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgKICAgICBwbGF0
Zm9ybS9nYW1lcGFkL1BsYXRmb3JtR2FtZXBhZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggNGJiYjJiY2U2MTg3NGI3ZWUxNDhhNDE2ODU1
MGE2YjE1NjQzOTJhMC4uYzU1YmUwNjQyMTY1MDBlZDBiMjdkNWE5ZTljYzk2MjFmN2E0YTAzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAt
NzksNTEwICs3OSwxOCBAQCB2b2lkIENETTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maQogewogICAgIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1zdXBwb3J0ZWQtY29uZmlndXJh
dGlvbgogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CisgICAgLy8g
SW1wbGVtZW50ZWQgaW4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbigpCiAK
LSAgICAvLyAzLjEuMS4xIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbgotICAgIC8vIEdpdmVu
IGEgS2V5IFN5c3RlbXMgaW1wbGVtZW50YXRpb24gaW1wbGVtZW50YXRpb24sIE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwgYW5kIG9yaWdpbiwKLSAg
ICAvLyB0aGlzIGFsZ29yaXRobSByZXR1cm5zIGEgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gb3Ig
Tm90U3VwcG9ydGVkIGFzIGFwcHJvcHJpYXRlLgotCi0gICAgLy8gMS4gTGV0IHN1cHBvcnRlZCBj
b25maWd1cmF0aW9uIGJlIENvbnNlbnREZW5pZWQuCi0gICAgLy8gMi4gSW5pdGlhbGl6ZSByZXN0
cmljdGlvbnMgdG8gaW5kaWNhdGUgdGhhdCBubyBjb25maWd1cmF0aW9ucyBoYXZlIGhhZCB1c2Vy
IGNvbnNlbnQgZGVuaWVkLgotICAgIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMg
eyB9OwotICAgIGRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoV1RGTW92ZShjYW5kaWRhdGVD
b25maWd1cmF0aW9uKSwgV1RGTW92ZShyZXN0cmljdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
Ci19Ci0KLXZvaWQgQ0RNOjpkb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25TdGVwKE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jlc3Ry
aWN0aW9ucyYmIHJlc3RyaWN0aW9ucywgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uCi0gICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0
IDA5IE5vdmVtYmVyIDIwMTYsIGN0ZC4KLQotICAgIC8vIDMuMS4xLjEgR2V0IFN1cHBvcnRlZCBD
b25maWd1cmF0aW9uCi0gICAgLy8gMy4gUmVwZWF0IHRoZSBmb2xsb3dpbmcgc3RlcCB3aGlsZSBz
dXBwb3J0ZWQgY29uZmlndXJhdGlvbiBpcyBDb25zZW50RGVuaWVkOgotICAgIC8vIDMuMS4gTGV0
IHN1cHBvcnRlZCBjb25maWd1cmF0aW9uIGFuZCwgaWYgcHJvdmlkZWQsIHJlc3RyaWN0aW9ucyBi
ZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUKLSAgICAvLyBHZXQgU3VwcG9ydGVkIENvbmZp
Z3VyYXRpb24gYW5kIENvbnNlbnQgYWxnb3JpdGhtIHdpdGggaW1wbGVtZW50YXRpb24sIGNhbmRp
ZGF0ZSBjb25maWd1cmF0aW9uLAotICAgIC8vIHJlc3RyaWN0aW9ucyBhbmQgb3JpZ2luLgotICAg
IGF1dG8gb3B0aW9uYWxDb25maWd1cmF0aW9uID0gZ2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihj
YW5kaWRhdGVDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpOwotICAgIGlmICghb3B0aW9uYWxD
b25maWd1cmF0aW9uKSB7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhbV9w
cml2YXRlKSB7CiAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIGNvbnNlbnRDYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKENvbnNlbnRTdGF0
dXMgc3RhdHVzLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBN
ZWRpYUtleXNSZXN0cmljdGlvbnMmJiByZXN0cmljdGlvbnMpIG11dGFibGUgewotICAgICAgICBp
ZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBv
cnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQuCi0gICAgICAgIC8vIDIyLiBMZXQg
Y29uc2VudCBzdGF0dXMgYW5kIHVwZGF0ZWQgcmVzdHJpY3Rpb25zIGJlIHRoZSByZXN1bHQgb2Yg
cnVubmluZyB0aGUgR2V0IENvbnNlbnQgU3RhdHVzIGFsZ29yaXRobSBvbiBhY2N1bXVsYXRlZCBj
b25maWd1cmF0aW9uLAotICAgICAgICAvLyAgICAgcmVzdHJpY3Rpb25zIGFuZCBvcmlnaW4gYW5k
IGZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSB2YWx1ZSBvZiBjb25zZW50IHN0YXR1cyBmcm9tIHRo
ZSBmb2xsb3dpbmcgbGlzdDoKLSAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICAgICAgY2Fz
ZSBDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkOgotICAgICAgICAgICAgLy8g4oazIENvbnNl
bnREZW5pZWQ6Ci0gICAgICAgICAgICAvLyAgICBSZXR1cm4gQ29uc2VudERlbmllZCBhbmQgdXBk
YXRlZCByZXN0cmljdGlvbnMuCi0gICAgICAgICAgICB3ZWFrVGhpcy0+ZG9TdXBwb3J0ZWRDb25m
aWd1cmF0aW9uU3RlcChXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cyksIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBj
YXNlIENvbnNlbnRTdGF0dXM6OkluZm9ybVVzZXI6Ci0gICAgICAgICAgICAvLyDihrMgSW5mb3Jt
VXNlcgotICAgICAgICAgICAgLy8gICAgSW5mb3JtIHRoZSB1c2VyIHRoYXQgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbiBpcyBpbiB1c2UgaW4gdGhlIG9yaWdpbiBpbmNsdWRpbmcsIHNwZWNpZmlj
YWxseSwgdGhlIGluZm9ybWF0aW9uIHRoYXQKLSAgICAgICAgICAgIC8vICAgIERpc3RpbmN0aXZl
IElkZW50aWZpZXIocykgYW5kL29yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVyKHMp
IGFzIGFwcHJvcHJpYXRlIHdpbGwgYmUgdXNlZCBpZiB0aGUKLSAgICAgICAgICAgIC8vICAgIGRp
c3RpbmN0aXZlSWRlbnRpZmllciBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBp
cyAicmVxdWlyZWQiLiBDb250aW51ZSB0byB0aGUgbmV4dCBzdGVwLgotICAgICAgICAgICAgLy8g
Tk9URTogSW1wbGVtZW50LgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDb25z
ZW50U3RhdHVzOjpBbGxvd2VkOgotICAgICAgICAgICAgLy8g4oazIEFsbG93ZWQ6Ci0gICAgICAg
ICAgICAvLyBDb250aW51ZSB0byB0aGUgbmV4dCBzdGVwLgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgLy8gMjMuIFJldHVybiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9u
LgotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKLSAgICB9OwotICAg
IGdldENvbnNlbnRTdGF0dXMoV1RGTW92ZShvcHRpb25hbENvbmZpZ3VyYXRpb24udmFsdWUoKSks
IFdURk1vdmUocmVzdHJpY3Rpb25zKSwgV1RGTW92ZShjb25zZW50Q2FsbGJhY2spKTsKLX0KLQot
Ym9vbCBDRE06OmlzUGVyc2lzdGVudFR5cGUoTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlw
ZSkKLXsKLSAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNpcy1w
ZXJzaXN0ZW50LXNlc3Npb24tdHlwZQotICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3Zl
bWJlciAyMDE2Ci0KLSAgICAvLyA1LjEuMS4gSXMgcGVyc2lzdGVudCBzZXNzaW9uIHR5cGU/Ci0g
ICAgLy8gMS4gTGV0IHRoZSBzZXNzaW9uIHR5cGUgYmUgdGhlIHNwZWNpZmllZCBNZWRpYUtleVNl
c3Npb25UeXBlIHZhbHVlLgotICAgIC8vIDIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSB2YWx1
ZSBvZiBzZXNzaW9uIHR5cGUgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgc3dpdGNoIChz
ZXNzaW9uVHlwZSkgewotICAgIGNhc2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6VGVtcG9yYXJ5Ogot
ICAgICAgICAvLyDihrMgInRlbXBvcmFyeSIKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNh
c2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2U6Ci0gICAgY2FzZSBNZWRp
YUtleVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQ6Ci0gICAgICAgIC8vIOKGsyAi
cGVyc2lzdGVudC1saWNlbnNlIgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLU9wdGlvbmFsPE1l
ZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9u
KGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlv
biwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCi17Ci0gICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0
aW9uLWFuZC1jb25zZW50Ci0gICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIw
MTYKLQotICAgIEFTU0VSVChtX3ByaXZhdGUpOwotICAgIGlmICghbV9wcml2YXRlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgLy8gMy4xLjEuMiBHZXQgU3VwcG9ydGVkIENv
bmZpZ3VyYXRpb24gYW5kIENvbnNlbnQKLSAgICAvLyBHaXZlbiBhIEtleSBTeXN0ZW1zIGltcGxl
bWVudGF0aW9uIGltcGxlbWVudGF0aW9uLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2Fu
ZGlkYXRlIGNvbmZpZ3VyYXRpb24sCi0gICAgLy8gcmVzdHJpY3Rpb25zIGFuZCBvcmlnaW4sIHRo
aXMgYWxnb3JpdGhtIHJldHVybnMgYSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiwgTm90U3VwcG9y
dGVkLCBvciBDb25zZW50RGVuaWVkCi0gICAgLy8gYXMgYXBwcm9wcmlhdGUgYW5kLCBpbiB0aGUg
Q29uc2VudERlbmllZCBjYXNlLCByZXN0cmljdGlvbnMuCi0KLSAgICAvLyAxLiBMZXQgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiBiZSBhIG5ldyBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24g
ZGljdGlvbmFyeS4KLSAgICBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gYWNjdW11bGF0ZWRD
b25maWd1cmF0aW9uIHsgfTsKLQotICAgIC8vIDIuIFNldCB0aGUgbGFiZWwgbWVtYmVyIG9mIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gZXF1YWwgdGhlIGxhYmVsIG1lbWJlciBvZiBjYW5k
aWRhdGUgY29uZmlndXJhdGlvbi4KLSAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ubGFiZWwg
PSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmxhYmVsOwotCi0gICAgLy8gMy4gSWYgdGhlIGluaXRE
YXRhVHlwZXMgbWVtYmVyIG9mIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uIGlzIG5vbi1lbXB0eSwg
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9u
LmluaXREYXRhVHlwZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIDMuMS4gTGV0IHN1cHBvcnRl
ZCB0eXBlcyBiZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBET01TdHJpbmdzLgotICAgICAgICBWZWN0
b3I8U3RyaW5nPiBzdXBwb3J0ZWRUeXBlczsKLQotICAgICAgICAvLyAzLjIuIEZvciBlYWNoIHZh
bHVlIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgaW5pdERhdGFUeXBlcyBtZW1iZXI6Ci0g
ICAgICAgIGZvciAoYXV0byBpbml0RGF0YVR5cGUgOiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmlu
aXREYXRhVHlwZXMpIHsKLSAgICAgICAgICAgIC8vIDMuMi4xLiBMZXQgaW5pdERhdGFUeXBlIGJl
IHRoZSB2YWx1ZS4KLSAgICAgICAgICAgIC8vIDMuMi4yLiBJZiB0aGUgaW1wbGVtZW50YXRpb24g
c3VwcG9ydHMgZ2VuZXJhdGluZyByZXF1ZXN0cyBiYXNlZCBvbiBpbml0RGF0YVR5cGUsIGFkZCBp
bml0RGF0YVR5cGUKLSAgICAgICAgICAgIC8vICAgICAgICB0byBzdXBwb3J0ZWQgdHlwZXMuIFN0
cmluZyBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLiBUaGUgZW1wdHkgc3RyaW5nIGlzIG5l
dmVyIHN1cHBvcnRlZC4KLSAgICAgICAgICAgIGlmIChpbml0RGF0YVR5cGUuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAobV9wcml2YXRlICYm
IG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkKLSAgICAgICAg
ICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBlbmQoaW5pdERhdGFUeXBlKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIDMuMy4gSWYgc3VwcG9ydGVkIHR5cGVzIGlzIGVtcHR5LCByZXR1cm4gTm90
U3VwcG9ydGVkLgotICAgICAgICBpZiAoc3VwcG9ydGVkVHlwZXMuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICAvLyAzLjQuIFNldCB0aGUgaW5p
dERhdGFUeXBlcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBzdXBwb3J0
ZWQgdHlwZXMuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVz
ID0gV1RGTW92ZShzdXBwb3J0ZWRUeXBlcyk7Ci0gICAgfQotCi0gICAgLy8gNC4gTGV0IGRpc3Rp
bmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQgYmUgdGhlIHZhbHVlIG9mIGNhbmRpZGF0ZSBj
b25maWd1cmF0aW9uJ3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJlci4KLSAgICBNZWRpYUtl
eXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJSZXF1aXJlbWVudCA9IGNhbmRpZGF0
ZUNvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyOwotCi0gICAgLy8gNS4gSWYgZGlz
dGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwiIGFuZCBEaXN0aW5j
dGl2ZSBJZGVudGlmaWVycyBhcmUgbm90IGFsbG93ZWQgYWNjb3JkaW5nIHRvCi0gICAgLy8gICAg
cmVzdHJpY3Rpb25zLCBzZXQgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCB0byAi
bm90LWFsbG93ZWQiLgotICAgIGlmIChkaXN0aW5jdGl2ZUlkZW50aWZpZXJSZXF1aXJlbWVudCA9
PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwgJiYgcmVzdHJpY3Rpb25zLmRpc3RpbmN0
aXZlSWRlbnRpZmllckRlbmllZCkKLSAgICAgICAgZGlzdGluY3RpdmVJZGVudGlmaWVyUmVxdWly
ZW1lbnQgPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZDsKLQotICAgIC8vIDYuIEZv
bGxvdyB0aGUgc3RlcHMgZm9yIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQgZnJv
bSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgc3dpdGNoIChkaXN0aW5jdGl2ZUlkZW50aWZpZXJS
ZXF1aXJlbWVudCkgewotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOgot
ICAgICAgICAvLyDihrMgInJlcXVpcmVkIgotICAgICAgICAvLyBJZiB0aGUgaW1wbGVtZW50YXRp
b24gZG9lcyBub3Qgc3VwcG9ydCB1c2Ugb2YgRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBpbiBj
b21iaW5hdGlvbgotICAgICAgICAvLyB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYW5k
IHJlc3RyaWN0aW9ucywgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKG1fcHJpdmF0
ZS0+ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJh
dGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWw6Ci0gICAgICAgIC8vIOKGsyAib3B0
aW9uYWwiCi0gICAgICAgIC8vIENvbnRpbnVlIHdpdGggdGhlIGZvbGxvd2luZyBzdGVwcy4KLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2Vk
OgotICAgICAgICAvLyDihrMgIm5vdC1hbGxvd2VkIgotICAgICAgICAvLyBJZiB0aGUgaW1wbGVt
ZW50YXRpb24gcmVxdWlyZXMgdXNlIERpc3RpbmN0aXZlIElkZW50aWZpZXIocykgb3IgRGlzdGlu
Y3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykKLSAgICAgICAgLy8gaW4gY29tYmluYXRpb24g
d2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBO
b3RTdXBwb3J0ZWQuCi0gICAgICAgIGlmIChtX3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRlbnRpZmll
cnNSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0g
TWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgLy8gNy4gU2V0IHRoZSBkaXN0
aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8g
ZXF1YWwgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudC4KLSAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID0gZGlzdGluY3RpdmVJZGVudGlm
aWVyUmVxdWlyZW1lbnQ7Ci0KLSAgICAvLyA4LiBMZXQgcGVyc2lzdGVudCBzdGF0ZSByZXF1aXJl
bWVudCBiZSBlcXVhbCB0byB0aGUgdmFsdWUgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBw
ZXJzaXN0ZW50U3RhdGUgbWVtYmVyLgotICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IHBlcnNpc3Rl
bnRTdGF0ZVJlcXVpcmVtZW50ID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3Rh
dGU7Ci0KLSAgICAvLyA5LiBJZiBwZXJzaXN0ZW50IHN0YXRlIHJlcXVpcmVtZW50IGlzICJvcHRp
b25hbCIgYW5kIHBlcnNpc3Rpbmcgc3RhdGUgaXMgbm90IGFsbG93ZWQgYWNjb3JkaW5nIHRvIHJl
c3RyaWN0aW9ucywKLSAgICAvLyAgICBzZXQgcGVyc2lzdGVudCBzdGF0ZSByZXF1aXJlbWVudCB0
byAibm90LWFsbG93ZWQiLgotICAgIGlmIChwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCA9PSBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwgJiYgcmVzdHJpY3Rpb25zLnBlcnNpc3RlbnRT
dGF0ZURlbmllZCkKLSAgICAgICAgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgPSAgTWVkaWFL
ZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7Ci0KLSAgICAvLyAxMC4gRm9sbG93IHRoZSBzdGVw
cyBmb3IgcGVyc2lzdGVudCBzdGF0ZSByZXF1aXJlbWVudCBmcm9tIHRoZSBmb2xsb3dpbmcgbGlz
dDoKLSAgICBzd2l0Y2ggKHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KSB7Ci0gICAgY2FzZSBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQ6Ci0gICAgICAgIC8vIOKGsyAicmVxdWlyZWQi
Ci0gICAgICAgIC8vIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBlcnNp
c3Rpbmcgc3RhdGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9u
Ci0gICAgICAgIC8vIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAg
ICAgIGlmIChtX3ByaXZhdGUtPnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90
QWxsb3dlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWw6Ci0gICAgICAgIC8v
IOKGsyAib3B0aW9uYWwiCi0gICAgICAgIC8vIENvbnRpbnVlIHdpdGggdGhlIGZvbGxvd2luZyBz
dGVwcy4KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1lZGlhS2V5c1JlcXVpcmVtZW50OjpO
b3RBbGxvd2VkOgotICAgICAgICAvLyDihrMgIm5vdC1hbGxvd2VkIgotICAgICAgICAvLyBJZiB0
aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBzdGF0ZSBpbiBjb21iaW5hdGlv
biB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgLy8gYW5kIHJlc3RyaWN0
aW9ucywgcmV0dXJuIE5vdFN1cHBvcnRlZAotICAgICAgICBpZiAobV9wcml2YXRlLT5wZXJzaXN0
ZW50U3RhdGVSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9u
cykgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgLy8gMTEuIFNldCB0
aGUgcGVyc2lzdGVudFN0YXRlIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGVxdWFsIHRoZSB2YWx1ZSBvZiBwZXJzaXN0ZW50IHN0YXRlIHJlcXVpcmVtZW50LgotICAgIGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPSBwZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudDsKLQotICAgIC8vIDEyLiBGb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3Qg
bWF0Y2hpbmcgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIFZlY3RvcjxN
ZWRpYUtleVNlc3Npb25UeXBlPiBzZXNzaW9uVHlwZXM7Ci0KLSAgICBpZiAoIWNhbmRpZGF0ZUNv
bmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmlzRW1wdHkoKSkgewotICAgICAgICAvLyDihrMgSWYg
dGhlIHNlc3Npb25UeXBlcyBtZW1iZXIgaXMgcHJlc2VudCBbV2ViSURMXSBpbiBjYW5kaWRhdGUg
Y29uZmlndXJhdGlvbgotICAgICAgICAvLyBMZXQgc2Vzc2lvbiB0eXBlcyBiZSBjYW5kaWRhdGUg
Y29uZmlndXJhdGlvbidzIHNlc3Npb25UeXBlcyBtZW1iZXIuCi0gICAgICAgIHNlc3Npb25UeXBl
cyA9IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIC8vIOKGsyBPdGhlcndpc2UKLSAgICAgICAgLy8gTGV0IHNlc3Npb24gdHlwZXMgYmUg
WyAidGVtcG9yYXJ5IiBdLgotICAgICAgICBzZXNzaW9uVHlwZXMgPSB7IE1lZGlhS2V5U2Vzc2lv
blR5cGU6OlRlbXBvcmFyeSB9OwotICAgIH0KLQotICAgIC8vIDEzLiBGb3IgZWFjaCB2YWx1ZSBp
biBzZXNzaW9uIHR5cGVzOgotICAgIGZvciAoYXV0byYgc2Vzc2lvblR5cGUgOiBzZXNzaW9uVHlw
ZXMpIHsKLSAgICAgICAgLy8gMTMuMS4gTGV0IHNlc3Npb24gdHlwZSBiZSB0aGUgdmFsdWUuCi0g
ICAgICAgIC8vIDEzLjIuIElmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50
U3RhdGUgdmFsdWUgaXMgIm5vdC1hbGxvd2VkIiBhbmQgdGhlCi0gICAgICAgIC8vICAgICAgIElz
IHBlcnNpc3RlbnQgc2Vzc2lvbiB0eXBlPyBhbGdvcml0aG0gcmV0dXJucyB0cnVlIGZvciBzZXNz
aW9uIHR5cGUgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKGFjY3VtdWxhdGVkQ29u
ZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFs
bG93ZWQgJiYgaXNQZXJzaXN0ZW50VHlwZShzZXNzaW9uVHlwZSkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDEzLjMuIElmIHRoZSBpbXBsZW1lbnRhdGlv
biBkb2VzIG5vdCBzdXBwb3J0IHNlc3Npb24gdHlwZSBpbiBjb21iaW5hdGlvbiB3aXRoIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgLy8gICAgICAgYW5kIHJlc3RyaWN0aW9ucyBm
b3Igb3RoZXIgcmVhc29ucywgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKCFtX3By
aXZhdGUtPnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihzZXNzaW9uVHlwZSwg
YWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICAgICAgLy8gMTMuNCBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVy
c2lzdGVudFN0YXRlIHZhbHVlIGlzICJvcHRpb25hbCIgYW5kIHRoZSByZXN1bHQgb2YgcnVubmlu
ZyB0aGUgSXMKLSAgICAgICAgLy8gICAgICBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8gYWxnb3Jp
dGhtIG9uIHNlc3Npb24gdHlwZSBpcyB0cnVlLCBjaGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJh
dGlvbidzIHBlcnNpc3RlbnRTdGF0ZQotICAgICAgICAvLyAgICAgIHZhbHVlIHRvICJyZXF1aXJl
ZCIuCi0gICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRl
ID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbCAmJiBpc1BlcnNpc3RlbnRUeXBlKHNl
c3Npb25UeXBlKSkKLSAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0
ZW50U3RhdGUgPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQ7Ci0gICAgfQotCi0gICAg
Ly8gMTQuIFNldCB0aGUgc2Vzc2lvblR5cGVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1
cmF0aW9uIHRvIHNlc3Npb24gdHlwZXMuCi0gICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnNl
c3Npb25UeXBlcyA9IHNlc3Npb25UeXBlczsKLQotICAgIC8vIDE1LiBJZiB0aGUgdmlkZW9DYXBh
YmlsaXRpZXMgYW5kIGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlcnMgaW4gY2FuZGlkYXRlIGNvbmZp
Z3VyYXRpb24gYXJlIGJvdGggZW1wdHksIHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAgaWYgKGNh
bmRpZGF0ZUNvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMuaXNFbXB0eSgpICYmIGNhbmRp
ZGF0ZUNvbmZpZ3VyYXRpb24uYXVkaW9DYXBhYmlsaXRpZXMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgLy8gMTYuIOKGsyBJZiB0aGUgdmlkZW9DYXBhYmls
aXRpZXMgbWVtYmVyIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uIGlzIG5vbi1lbXB0eToKLSAg
ICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIC8vIDE2LjEuIExldCB2aWRlbyBjYXBhYmlsaXRpZXMgYmUgdGhlIHJlc3Vs
dCBvZiBleGVjdXRpbmcgdGhlIEdldCBTdXBwb3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRpby9W
aWRlbyBUeXBlIGFsZ29yaXRobSBvbgotICAgICAgICAvLyAgICAgICBWaWRlbywgY2FuZGlkYXRl
IGNvbmZpZ3VyYXRpb24ncyB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIsIGFjY3VtdWxhdGVkIGNv
bmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMuCi0gICAgICAgIGF1dG8gdmlkZW9DYXBhYmls
aXRpZXMgPSBnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShBdWRpb1Zp
ZGVvVHlwZTo6VmlkZW8sIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMs
IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKTsKLQotICAgICAgICAvLyAx
Ni4yLiBJZiB2aWRlbyBjYXBhYmlsaXRpZXMgaXMgbnVsbCwgcmV0dXJuIE5vdFN1cHBvcnRlZC4K
LSAgICAgICAgaWYgKCF2aWRlb0NhcGFiaWxpdGllcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICAgICAgLy8gMTYuMyBTZXQgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1l
bWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIHZpZGVvIGNhcGFiaWxpdGllcy4K
LSAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnZpZGVvQ2FwYWJpbGl0aWVzID0gV1RG
TW92ZSh2aWRlb0NhcGFiaWxpdGllcy52YWx1ZSgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAv
LyAxNi4g4oazIE90aGVyd2lzZToKLSAgICAgICAgLy8gICAgIFNldCB0aGUgdmlkZW9DYXBhYmls
aXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gYW4gZW1wdHkgc2Vx
dWVuY2UuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGll
cyA9IHsgfTsKLSAgICB9Ci0KLSAgICAvLyAxNy4g4oazIElmIHRoZSBhdWRpb0NhcGFiaWxpdGll
cyBtZW1iZXIgaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24gaXMgbm9uLWVtcHR5OgotICAgIGlm
ICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgLy8gMTcuMS4gTGV0IGF1ZGlvIGNhcGFiaWxpdGllcyBiZSB0aGUgcmVzdWx0IG9m
IGV4ZWN1dGluZyB0aGUgR2V0IFN1cHBvcnRlZCBDYXBhYmlsaXRpZXMgZm9yIEF1ZGlvL1ZpZGVv
IFR5cGUgYWxnb3JpdGhtIG9uCi0gICAgICAgIC8vICAgICAgIEF1ZGlvLCBjYW5kaWRhdGUgY29u
ZmlndXJhdGlvbidzIGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciwgYWNjdW11bGF0ZWQgY29uZmln
dXJhdGlvbiwgYW5kIHJlc3RyaWN0aW9ucy4KLSAgICAgICAgYXV0byBhdWRpb0NhcGFiaWxpdGll
cyA9IGdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKEF1ZGlvVmlkZW9U
eXBlOjpBdWRpbywgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcywgYWNj
dW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpOwotCi0gICAgICAgIC8vIDE3LjIu
IElmIGF1ZGlvIGNhcGFiaWxpdGllcyBpcyBudWxsLCByZXR1cm4gTm90U3VwcG9ydGVkLgotICAg
ICAgICBpZiAoIWF1ZGlvQ2FwYWJpbGl0aWVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgICAgICAvLyAxNy4zIFNldCB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVy
IG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gYXVkaW8gY2FwYWJpbGl0aWVzLgotICAg
ICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uYXVkaW9DYXBhYmlsaXRpZXMgPSBXVEZNb3Zl
KGF1ZGlvQ2FwYWJpbGl0aWVzLnZhbHVlKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIDE3
LiDihrMgT3RoZXJ3aXNlOgotICAgICAgICAvLyAgICAgU2V0IHRoZSBhdWRpb0NhcGFiaWxpdGll
cyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBhbiBlbXB0eSBzZXF1ZW5j
ZS4KLSAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzID0g
eyB9OwotICAgIH0KLQotICAgIC8vIDE4LiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3Mg
ZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIGlzICJvcHRpb25hbCIsIGZvbGxvdyB0aGUgc3Rl
cHMgZm9yIHRoZSBmaXJzdCBtYXRjaGluZwotICAgIC8vICAgICBjb25kaXRpb24gZnJvbSB0aGUg
Zm9sbG93aW5nIGxpc3Q6Ci0gICAgaWYgKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5j
dGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsKSB7Ci0gICAg
ICAgIC8vIOKGsyBJZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdXNlIERpc3RpbmN0aXZl
IElkZW50aWZpZXIocykgb3IgRGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykgZm9y
IGFueSBvZiB0aGUKLSAgICAgICAgLy8gICAgY29tYmluYXRpb25zIGluIGFjY3VtdWxhdGVkIGNv
bmZpZ3VyYXRpb24KLSAgICAgICAgaWYgKG1fcHJpdmF0ZS0+ZGlzdGluY3RpdmVJZGVudGlmaWVy
c1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpIHsKLSAgICAgICAgICAgIC8vIENoYW5nZSBh
Y2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRv
ICJyZXF1aXJlZCIuCi0gICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGlu
Y3RpdmVJZGVudGlmaWVyID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgLy8g4oazIE90aGVyd2lzZQotICAgICAgICAgICAgLy8g
ICAgQ2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXIgdmFsdWUgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmln
dXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90
QWxsb3dlZDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIDE5LiBJZiBhY2N1bXVsYXRlZCBj
b25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVlIGlzICJvcHRpb25hbCIsIGZvbGxv
dyB0aGUgc3RlcHMgZm9yIHRoZSBmaXJzdCBtYXRjaGluZwotICAgIC8vICAgICBjb25kaXRpb24g
ZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgaWYgKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlv
bi5wZXJzaXN0ZW50U3RhdGUgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsKSB7Ci0g
ICAgICAgIC8vIOKGsyBJZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBz
dGF0ZSBmb3IgYW55IG9mIHRoZSBjb21iaW5hdGlvbnMgaW4gYWNjdW11bGF0ZWQgY29uZmlndXJh
dGlvbgotICAgICAgICBpZiAobV9wcml2YXRlLT5wZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVxdWly
ZW1lbnQ6OlJlcXVpcmVkKSB7Ci0gICAgICAgICAgICAvLyBDaGFuZ2UgYWNjdW11bGF0ZWQgY29u
ZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAg
ICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IE1lZGlhS2V5
c1JlcXVpcmVtZW50OjpSZXF1aXJlZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8v
IOKGsyBPdGhlcndpc2UKLSAgICAgICAgICAgIC8vICAgIENoYW5nZSBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVlIHRvICJub3QtYWxsb3dlZCIuCi0gICAg
ICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID0gTWVkaWFL
ZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyAy
MC4gSWYgaW1wbGVtZW50YXRpb24gaW4gdGhlIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVkIGJ5IHRo
ZSBjb21iaW5hdGlvbiBvZiB0aGUgdmFsdWVzIGluIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24K
LSAgICAvLyAgICAgaXMgbm90IHN1cHBvcnRlZCBvciBub3QgYWxsb3dlZCBpbiB0aGUgb3JpZ2lu
LCByZXR1cm4gTm90U3VwcG9ydGVkLgotICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c0NvbmZp
Z3VyYXRpb24oYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Piht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KICAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luID0gZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiA9IGRv
Y3VtZW50LT50b3BPcmlnaW4oKTsKLQotICAgIGlmICgoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmRpc3RpbmN0aXZlSWRlbnRpZmllciA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQg
fHwgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBNZWRpYUtleXNS
ZXF1aXJlbWVudDo6UmVxdWlyZWQpICYmICFvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0
b3BPcmlnaW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbjsKLSAgICAvLyBOT1RFOiBDb250aW51ZWQgaW4gZ2V0Q29u
c2VudFN0YXR1cygpLgotfQotCi1PcHRpb25hbDxWZWN0b3I8TWVkaWFLZXlTeXN0ZW1NZWRpYUNh
cGFiaWxpdHk+PiBDRE06OmdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBl
KENETTo6QXVkaW9WaWRlb1R5cGUgdHlwZSwgY29uc3QgVmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVk
aWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJpbGl0aWVzLCBjb25zdCBNZWRpYUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9uLCBNZWRpYUtleXNSZXN0cmljdGlv
bnMmIHJlc3RyaWN0aW9ucykKLXsKLSAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlw
dGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNhcGFiaWxpdGllcy1mb3ItYXVkaW8tdmlkZW8tdHlw
ZQotICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2Ci0KLSAgICBBU1NF
UlQobV9wcml2YXRlKTsKLSAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgIC8vIDMuMS4xLjMgR2V0IFN1cHBvcnRlZCBDYXBhYmlsaXRpZXMgZm9y
IEF1ZGlvL1ZpZGVvIFR5cGUKLQotICAgIC8vIEdpdmVuIGFuIGF1ZGlvL3ZpZGVvIHR5cGUsIE1l
ZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5IHNlcXVlbmNlIHJlcXVlc3RlZCBtZWRpYSBjYXBh
YmlsaXRpZXMsIE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbgotICAgIC8vIHBhcnRpYWwgY29u
ZmlndXJhdGlvbiwgYW5kIHJlc3RyaWN0aW9ucywgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHNl
cXVlbmNlIG9mIHN1cHBvcnRlZCBNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eSB2YWx1ZXMK
LSAgICAvLyBmb3IgdGhpcyBhdWRpby92aWRlbyB0eXBlIG9yIG51bGwgYXMgYXBwcm9wcmlhdGUu
Ci0KLSAgICAvLyAxLiBMZXQgbG9jYWwgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBiZSBhIGxv
Y2FsIGNvcHkgb2YgcGFydGlhbCBjb25maWd1cmF0aW9uLgotICAgIE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24gPSBwYXJ0aWFsQ29uZmlndXJhdGlv
bjsKLQotICAgIC8vIDIuIExldCBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzIGJlIGFuIGVt
cHR5IHNlcXVlbmNlIG9mIE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5IGRpY3Rpb25hcmll
cy4KLSAgICBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1NZWRpYUNhcGFiaWxpdHk+IHN1cHBvcnRlZE1l
ZGlhQ2FwYWJpbGl0aWVzIHsgfTsKLQotICAgIC8vIDMuIEZvciBlYWNoIHJlcXVlc3RlZCBtZWRp
YSBjYXBhYmlsaXR5IGluIHJlcXVlc3RlZCBtZWRpYSBjYXBhYmlsaXRpZXM6Ci0gICAgZm9yIChh
dXRvJiByZXF1ZXN0ZWRDYXBhYmlsaXR5IDogcmVxdWVzdGVkQ2FwYWJpbGl0aWVzKSB7Ci0gICAg
ICAgIC8vIDMuMS4gTGV0IGNvbnRlbnQgdHlwZSBiZSByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0
eSdzIGNvbnRlbnRUeXBlIG1lbWJlci4KLSAgICAgICAgLy8gMy4yLiBMZXQgcm9idXN0bmVzcyBi
ZSByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSdzIHJvYnVzdG5lc3MgbWVtYmVyLgotICAgICAg
ICBTdHJpbmcgcm9idXN0bmVzcyA9IHJlcXVlc3RlZENhcGFiaWxpdHkucm9idXN0bmVzczsKLQot
ICAgICAgICAvLyAzLjMuIElmIGNvbnRlbnQgdHlwZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCByZXR1
cm4gbnVsbC4KLSAgICAgICAgaWYgKHJlcXVlc3RlZENhcGFiaWxpdHkuY29udGVudFR5cGUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICAvLyAz
LjQuIElmIGNvbnRlbnQgdHlwZSBpcyBhbiBpbnZhbGlkIG9yIHVucmVjb2duaXplZCBNSU1FIHR5
cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAgICAgICAgT3B0aW9uYWw8UGFy
c2VkQ29udGVudFR5cGU+IGNvbnRlbnRUeXBlID0gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShy
ZXF1ZXN0ZWRDYXBhYmlsaXR5LmNvbnRlbnRUeXBlLCBNb2RlOjpSZmMyMDQ1KTsKLSAgICAgICAg
aWYgKCFjb250ZW50VHlwZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIDMu
NS4gTGV0IGNvbnRhaW5lciBiZSB0aGUgY29udGFpbmVyIHR5cGUgc3BlY2lmaWVkIGJ5IGNvbnRl
bnQgdHlwZS4KLSAgICAgICAgU3RyaW5nIGNvbnRhaW5lciA9IGNvbnRlbnRUeXBlLT5taW1lVHlw
ZSgpOwotCi0gICAgICAgIC8vIDMuNi4gSWYgdGhlIHVzZXIgYWdlbnQgZG9lcyBub3Qgc3VwcG9y
dCBjb250YWluZXIsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4gVGhlIGNhc2Utc2Vu
c2l0aXZpdHkKLSAgICAgICAgLy8gICAgICBvZiBzdHJpbmcgY29tcGFyaXNvbnMgaXMgZGV0ZXJt
aW5lZCBieSB0aGUgYXBwcm9wcmlhdGUgUkZDLgotICAgICAgICAvLyAzLjcuIExldCBwYXJhbWV0
ZXJzIGJlIHRoZSBSRkMgNjM4MSBbUkZDNjM4MV0gcGFyYW1ldGVycywgaWYgYW55LCBzcGVjaWZp
ZWQgYnkgY29udGVudCB0eXBlLgotICAgICAgICAvLyAzLjguIElmIHRoZSB1c2VyIGFnZW50IGRv
ZXMgbm90IHJlY29nbml6ZSBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzLCBjb250aW51ZSB0byB0aGUg
bmV4dCBpdGVyYXRpb24uCi0gICAgICAgIC8vIDMuOS4gTGV0IG1lZGlhIHR5cGVzIGJlIHRoZSBz
ZXQgb2YgY29kZWNzIGFuZCBjb2RlYyBjb25zdHJhaW50cyBzcGVjaWZpZWQgYnkgcGFyYW1ldGVy
cy4gVGhlIGNhc2Utc2Vuc2l0aXZpdHkKLSAgICAgICAgLy8gICAgICBvZiBzdHJpbmcgY29tcGFy
aXNvbnMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYXBwcm9wcmlhdGUgUkZDIG9yIG90aGVyIHNwZWNp
ZmljYXRpb24uCi0gICAgICAgIFN0cmluZyBjb2RlY3MgPSBjb250ZW50VHlwZS0+cGFyYW1ldGVy
VmFsdWVGb3JOYW1lKCJjb2RlY3MiKTsKLSAgICAgICAgaWYgKGNvbnRlbnRUeXBlLT5wYXJhbWV0
ZXJDb3VudCgpID4gKGNvZGVjcy5pc0VtcHR5KCkgPyAwIDogMSkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAvLyAzLjEwLiBJZiBtZWRpYSB0eXBlcyBpcyBlbXB0eToKLSAgICAg
ICAgaWYgKGNvZGVjcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIOKGsyBJZiBjb250YWlu
ZXIgbm9ybWF0aXZlbHkgaW1wbGllcyBhIHNwZWNpZmljIHNldCBvZiBjb2RlY3MgYW5kIGNvZGVj
IGNvbnN0cmFpbnRzOgotICAgICAgICAgICAgLy8g4oazIE90aGVyd2lzZToKLSAgICAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAzLjExLiBJZiBjb250
ZW50IHR5cGUgaXMgbm90IHN0cmljdGx5IGEgYXVkaW8vdmlkZW8gdHlwZSwgY29udGludWUgdG8g
dGhlIG5leHQgaXRlcmF0aW9uLgotICAgICAgICAvLyAzLjEyLiBJZiByb2J1c3RuZXNzIGlzIG5v
dCB0aGUgZW1wdHkgc3RyaW5nIGFuZCBjb250YWlucyBhbiB1bnJlY29nbml6ZWQgdmFsdWUgb3Ig
YSB2YWx1ZSBub3Qgc3VwcG9ydGVkIGJ5Ci0gICAgICAgIC8vICAgICAgIGltcGxlbWVudGF0aW9u
LCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uIFN0cmluZyBjb21wYXJpc29uIGlzIGNh
c2Utc2Vuc2l0aXZlLgotICAgICAgICBpZiAoIXJvYnVzdG5lc3MuaXNFbXB0eSgpICYmICFtX3By
aXZhdGUtPnN1cHBvcnRzUm9idXN0bmVzcyhyb2J1c3RuZXNzKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIC8vIDMuMTMuIElmIHRoZSB1c2VyIGFnZW50IGFuZCBpbXBsZW1lbnRh
dGlvbiBkZWZpbml0ZWx5IHN1cHBvcnQgcGxheWJhY2sgb2YgZW5jcnlwdGVkIG1lZGlhIGRhdGEg
Zm9yIHRoZQotICAgICAgICAvLyAgICAgICBjb21iaW5hdGlvbiBvZiBjb250YWluZXIsIG1lZGlh
IHR5cGVzLCByb2J1c3RuZXNzIGFuZCBsb2NhbCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlu
IGNvbWJpbmF0aW9uCi0gICAgICAgIC8vICAgICAgIHdpdGggcmVzdHJpY3Rpb25zOgotICAgICAg
ICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgICAgIHBhcmFt
ZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlLT5taW1lVHlwZSgpKTsKLSAgICAg
ICAgaWYgKE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgPT0gTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpIHsKLQotICAgICAgICAgICAgLy8gVHJ5
IHdpdGggTWVkaWEgU291cmNlOgotICAgICAgICAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNl
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFt
ZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtX3ByaXZh
dGUtPnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLCByZXN0cmljdGlvbnMpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgLy8gMy4xMy4xLiBBZGQgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkgdG8gc3VwcG9ydGVk
IG1lZGlhIGNhcGFiaWxpdGllcy4KLSAgICAgICAgc3VwcG9ydGVkTWVkaWFDYXBhYmlsaXRpZXMu
YXBwZW5kKHJlcXVlc3RlZENhcGFiaWxpdHkpOwotCi0gICAgICAgIC8vIDMuMTMuMi4g4oazIElm
IGF1ZGlvL3ZpZGVvIHR5cGUgaXMgVmlkZW86Ci0gICAgICAgIC8vICAgICAgICAgQWRkIHJlcXVl
c3RlZCBtZWRpYSBjYXBhYmlsaXR5IHRvIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2Yg
bG9jYWwgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgaWYgKHR5cGUgPT0gQXVk
aW9WaWRlb1R5cGU6OlZpZGVvKQotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LnZpZGVvQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsKLSAgICAgICAg
Ly8gMy4xMy4yLiDihrMgSWYgYXVkaW8vdmlkZW8gdHlwZSBpcyBBdWRpbzoKLSAgICAgICAgLy8g
ICAgICAgICBBZGQgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkgdG8gdGhlIGF1ZGlvQ2FwYWJp
bGl0aWVzIG1lbWJlciBvZiBsb2NhbCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLgotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uYXVkaW9DYXBhYmls
aXRpZXMuYXBwZW5kKHJlcXVlc3RlZENhcGFiaWxpdHkpOwotICAgIH0KLQotICAgIC8vIDQuIElm
IHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMgaXMgZW1wdHksIHJldHVybiBudWxsLgotICAg
IGlmIChzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICAvLyA1LiBSZXR1cm4gc3VwcG9ydGVkIG1lZGlhIGNhcGFi
aWxpdGllcy4KLSAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFDYXBhYmlsaXRpZXM7Ci19Ci0KLXZv
aWQgQ0RNOjpnZXRDb25zZW50U3RhdHVzKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYgcmVzdHJpY3Rp
b25zLCBDb25zZW50U3RhdHVzQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRp
b24tYW5kLWNvbnNlbnQKLSAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAx
NgotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7Ci0gICAgICAgIGNhbGxiYWNr
KENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5pZWQsIFdURk1vdmUoYWNjdW11bGF0ZWRDb25maWd1
cmF0aW9uKSwgV1RGTW92ZShyZXN0cmljdGlvbnMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIE5PVEU6IEluIHRoZSBmdXR1cmUsIHRoZXNlIGNoZWNrcyBiZWxvd2Ugd2lsbCBp
bnZvbHZlIGFza2luZyB0aGUgcGFnZSBjbGllbnQsIHBvc3NpYmx5IGFjcm9zcyBhIHByb2Nlc3Mg
Ym91bmRhcnkuCi0gICAgLy8gVGhleSB3aWxsIGJ5IG5lY2Vzc2l0eSBiZSBhc3luY2hyb25vdXMg
d2l0aCBjYWxsYmFja3MuIEZvciBub3csIGltcGx5IHRoaXMgYmVoYXZpb3IgYnkgcGVyZm9ybWlu
ZyBpdCBpbiBhbiBhc3luYyB0YXNrLgotCi0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbiA9IFdURk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgcmVzdHJp
Y3Rpb25zID0gV1RGTW92ZShyZXN0cmljdGlvbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewotICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICFtX3ByaXZhdGUpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0
dXM6OkNvbnNlbnREZW5pZWQsIFdURk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RG
TW92ZShyZXN0cmljdGlvbnMpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAgICAgICAgICBj
YWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luID0gZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4g
PSBkb2N1bWVudC0+dG9wT3JpZ2luKCk7Ci0KLSAgICAgICAgLy8gMy4xLjEuMiBHZXQgU3VwcG9y
dGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNlbnQsIGN0ZC4KLSAgICAgICAgLy8gMjEuIElmIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMg
InJlcXVpcmVkIiBhbmQgdGhlIERpc3RpbmN0aXZlIElkZW50aWZpZXIocykgYXNzb2NpYXRlZAot
ICAgICAgICAvLyAgICAgd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGFyZSBub3QgdW5p
cXVlIHBlciBvcmlnaW4gYW5kIHByb2ZpbGUgYW5kIGNsZWFyYWJsZToKLSAgICAgICAgaWYgKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkICYmICFtX3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRlbnRpZmll
cnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
KSkgewotICAgICAgICAgICAgLy8gMjEuMS4gVXBkYXRlIHJlc3RyaWN0aW9ucyB0byByZWZsZWN0
IHRoYXQgYWxsIGNvbmZpZ3VyYXRpb25zIGRlc2NyaWJlZCBieSBhY2N1bXVsYXRlZCBjb25maWd1
cmF0aW9uIGRvIG5vdCBoYXZlIHVzZXIgY29uc2VudC4KLSAgICAgICAgICAgIHJlc3RyaWN0aW9u
cy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVlOwotICAgICAgICAgICAgY2FsbGJh
Y2soQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmllZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucykpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS8jZ2V0LWNvbnNlbnQtc3RhdHVzCi0gICAgICAgIC8vIDMuMS4xLjQgR2V0IENvbnNlbnQg
U3RhdHVzCi0gICAgICAgIC8vIEdpdmVuIGFuIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIHJl
c3RyaWN0aW9ucyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIHRoZSBjb25zZW50
IHN0YXR1cyBmb3IgYWNjdW11bGF0ZWQKLSAgICAgICAgLy8gY29uZmlndXJhdGlvbiBhbmQgb3Jp
Z2luIGFzIG9uZSBvZiBDb25zZW50RGVuaWVkLCBJbmZvcm1Vc2VyIG9yIEFsbG93ZWQsIHRvZ2V0
aGVyIHdpdGggYW4gdXBkYXRlZCB2YWx1ZSBmb3IgcmVzdHJpY3Rpb25zCi0gICAgICAgIC8vIGlu
IHRoZSBDb25zZW50RGVuaWVkIGNhc2UuCi0KLSAgICAgICAgLy8gMS4gSWYgdGhlcmUgaXMgcGVy
c2lzdGVkIGRlbmlhbCBmb3Igb3JpZ2luIGluZGljYXRpbmcgdGhhdCBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uIGlzIG5vdCBhbGxvd2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAg
ICAgLy8gMS4xLiBVcGRhdGUgcmVzdHJpY3Rpb25zIHRvIHJlZmxlY3QgdGhlIGNvbmZpZ3VyYXRp
b25zIGZvciB3aGljaCBjb25zZW50IGhhcyBiZWVuIGRlbmllZC4KLSAgICAgICAgLy8gMS4yLiBS
ZXR1cm4gQ29uc2VudERlbmllZCBhbmQgcmVzdHJpY3Rpb25zLgotICAgICAgICAvLyAyLiBJZiB0
aGVyZSBpcyBwZXJzaXN0ZWQgY29uc2VudCBmb3Igb3JpZ2luIGluZGljYXRpbmcgYWNjdW11bGF0
ZWQgY29uZmlndXJhdGlvbiBpcyBhbGxvd2VkLCByZXR1cm4gQWxsb3dlZC4KLSAgICAgICAgLy8g
Tk9URTogcGVyc2lzdGVkIGRlbmlhbCAvIGNvbnNlbnQgdW5pbXBsZW1lbnRlZC4KLQotICAgICAg
ICAvLyAzLiBJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZToKLSAgICAgICAgLy8gICAg
4oazIFRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZp
Z3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIgYW5kIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUg
VXNlciBBZ2VudCwKLSAgICAgICAgLy8gICAgICAgaW1wbGVtZW50YXRpb24gYW5kIGFjY3VtdWxh
dGVkIGNvbmZpZ3VyYXRpb24gZG9lcyBub3QgZm9sbG93IGFsbCB0aGUgcmVjb21tZW5kYXRpb25z
IG9mIEFsbG93IFBlcnNpc3RlbnQgRGF0YSB0byBCZSBDbGVhcmVkCi0gICAgICAgIC8vICAgICAg
IHdpdGggcmVzcGVjdCB0byBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpLgotICAgICAgICAvLyBO
T1RFOiBhc3N1bWUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgZm9sbG93IGFsbCByZWNvbW1lbmRhdGlv
bnMuCi0KLSAgICAgICAgLy8gICAg4oazIFRoZSB1c2VyIGFnZW50IHJlcXVpcmVzIGV4cGxpY2l0
IHVzZXIgY29uc2VudCBmb3IgdGhlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gZm9yIG90aGVy
IHJlYXNvbnMuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSB0aGUgdXNlciBhZ2VudCBkb2VzIG5v
dCByZXF1aXJlIGV4cGxpY2l0IHVzZXIgY29uc2VudC4KLQotICAgICAgICAvLyAzLjEuIFJlcXVl
c3QgdXNlciBjb25zZW50IHRvIHVzZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGluIHRoZSBv
cmlnaW4gYW5kIHdhaXQgZm9yIHRoZSB1c2VyIHJlc3BvbnNlLgotICAgICAgICAvLyAgICAgIFRo
ZSBjb25zZW50IG11c3QgaW5jbHVkZSBjb25zZW50IHRvIHVzZSBhIERpc3RpbmN0aXZlIElkZW50
aWZpZXIocykgYW5kL29yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVyKHMpIGFzIGFw
cHJvcHJpYXRlCi0gICAgICAgIC8vICAgICAgaWYgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidz
IGRpc3RpbmN0aXZlSWRlbnRpZmllciBtZW1iZXIgaXMgInJlcXVpcmVkIi4KLSAgICAgICAgLy8g
My4yLiBJZiBjb25zZW50IHdhcyBkZW5pZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAg
ICAgICAvLyAzLjIuMS4gVXBkYXRlIHJlc3RyaWN0aW9ucyB0byByZWZsZWN0IHRoZSBjb25maWd1
cmF0aW9ucyBmb3Igd2hpY2ggY29uc2VudCB3YXMgZGVuaWVkLgotICAgICAgICAvLyAzLjIuMS4g
UmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3RyaWN0aW9ucy4KLSAgICAgICAgLy8gTk9URTog
YXNzdW1lIGltcGxpZWQgY29uc2VudCBpZiB0aGUgY29tYmluYXRpb24gb2Ygb3JpZ2luIGFuZCB0
b3BPcmlnaW4gYWxsb3dzIGl0LgotICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmRpc3RpbmN0aXZlSWRlbnRpZmllciA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQg
JiYgIW9yaWdpbi5jYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoJnRvcE9yaWdpbikpIHsKLSAgICAgICAg
ICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVlOwotICAg
ICAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmllZCwgV1RGTW92ZShh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucykpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gNC4gSWYgdGhlIGRpc3RpbmN0
aXZlSWRlbnRpZmllciBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBub3Qg
Im5vdC1hbGxvd2VkIiwgcmV0dXJuIEluZm9ybVVzZXIuCi0gICAgICAgIGlmIChhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyICE9IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpOb3RBbGxvd2VkKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpJ
bmZvcm1Vc2VyLCBXVEZNb3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVz
dHJpY3Rpb25zKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyA1LiBJZiB0aGUgdXNlciBhZ2VudCByZXF1aXJlcyBpbmZvcm1pbmcgdGhlIHVzZXIgZm9yIHRo
ZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGZvciBvdGhlciByZWFzb25zLCByZXR1cm4gSW5m
b3JtVXNlci4KLSAgICAgICAgLy8gTk9URTogYXNzdW1lIHRoZSB1c2VyIGFnZW50IGRvZXMgbm90
IHJlcXVpcmUgaW5mb3JtaW5nIHRoZSB1c2VyLgotCi0gICAgICAgIC8vIDYuIFJldHVybiBBbGxv
d2VkLgotICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpBbGxvd2VkLCBXVEZNb3ZlKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0gICAgfSk7
CisgICAgQ0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcyA9IG9yaWdpbi5jYW5B
Y2Nlc3NMb2NhbFN0b3JhZ2UoJnRvcE9yaWdpbikgPyBDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VB
Y2Nlc3M6OkFsbG93ZWQgOiBDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3M6Ok5vdEFsbG93
ZWQ7CisgICAgbV9wcml2YXRlLT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY2Fu
ZGlkYXRlQ29uZmlndXJhdGlvbiksIGFjY2VzcywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2
b2lkIENETTo6bG9hZEFuZEluaXRpYWxpemUoKQpAQCAtNjEyLDcgKzEyMCw3IEBAIGJvb2wgQ0RN
OjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKIAogYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFU
eXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBl
KTsKKyAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFU
eXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uaAppbmRleCBhZTk4MzI1ZjZhZDExZmY3OWFjNmQxNzRjNmVkYWE4YmQ0
NWM5ZDMwLi5kNThjYjBmZWUzMzMxYTg1YTgyOTNkYWYxZGY3YzBjNDBhMTNjZGZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTgwLDI5ICs4MCw2
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pOwogCi0gICAgZW51bSBjbGFzcyBDb25maWd1cmF0aW9uU3RhdHVzIHsKLSAgICAg
ICAgU3VwcG9ydGVkLAotICAgICAgICBOb3RTdXBwb3J0ZWQsCi0gICAgICAgIENvbnNlbnREZW5p
ZWQsCi0gICAgfTsKLQotICAgIGVudW0gY2xhc3MgQ29uc2VudFN0YXR1cyB7Ci0gICAgICAgIENv
bnNlbnREZW5pZWQsCi0gICAgICAgIEluZm9ybVVzZXIsCi0gICAgICAgIEFsbG93ZWQsCi0gICAg
fTsKLQotICAgIGVudW0gY2xhc3MgQXVkaW9WaWRlb1R5cGUgewotICAgICAgICBBdWRpbywKLSAg
ICAgICAgVmlkZW8sCi0gICAgfTsKLQotICAgIHZvaWQgZG9TdXBwb3J0ZWRDb25maWd1cmF0aW9u
U3RlcChNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1cmF0aW9u
LCBNZWRpYUtleXNSZXN0cmljdGlvbnMmJiwgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNr
JiYpOwotICAgIE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gIGdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjYW5k
aWRhdGVDb25maWd1cmF0aW9uLCBNZWRpYUtleXNSZXN0cmljdGlvbnMmKTsKLSAgICBPcHRpb25h
bDxWZWN0b3I8TWVkaWFLZXlTeXN0ZW1NZWRpYUNhcGFiaWxpdHk+PiBnZXRTdXBwb3J0ZWRDYXBh
YmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShBdWRpb1ZpZGVvVHlwZSwgY29uc3QgVmVjdG9yPE1l
ZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJpbGl0aWVzLCBjb25z
dCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9uLCBNZWRp
YUtleXNSZXN0cmljdGlvbnMmKTsKLQotICAgIHVzaW5nIENvbnNlbnRTdGF0dXNDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChDb25zZW50U3RhdHVzLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mJiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYpPjsKLSAgICB2b2lkIGdldENvbnNlbnRT
dGF0dXMoTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgYWNjdW11bGF0ZWRDb25maWd1cmF0
aW9uLCBNZWRpYUtleXNSZXN0cmljdGlvbnMmJiwgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYpOwog
ICAgIFN0cmluZyBtX2tleVN5c3RlbTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
bV9wcml2YXRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkYTE5YmJmZjJjN2NlODJiZWZh
ODAzNWFkNzU0MmUzZTlmMjJhNjlkLi4yOWZhYjQ5OTA2ODI1ODMyYTVhZGRkOTlhODBlOGYzNGQ4
ZDMwOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYKICAgICAgICAgLy8gNi41LiBMZXQgc2Vzc2lvbiBjbG9zZWQgYmUgZmFs
c2UuCiAgICAgICAgIC8vIDYuNi4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNlIHJlcHJlc2Vu
dGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAgICAgICAvLyA2Ljcu
IFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9p
bnN0YW5jZVNlc3Npb24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUs
ICpzYW5pdGl6ZWRSZXNwb25zZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0
aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMs
IE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vz
c1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51
cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBzYW5pdGl6ZWRSZXNwb25z
ZS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
IHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRp
b25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywg
T3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1JbnN0YW5j
ZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNz
VmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3BwCmluZGV4
IDMwYzM0Y2RjNDRlYjhkNjdjZDIyMWVjODk5Y2MwZDZiYTMxNzI0ZTguLmEwOGM0NjhmNDM2OWFm
OGFjZjk3YzMxZmIyOGNmNWU1OTJkNjU3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3Bw
CkBAIC04MSwzNCArODEsMjkgQEAgdm9pZCBNZWRpYUtleVN5c3RlbUFjY2Vzczo6Y3JlYXRlTWVk
aWFLZXlzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIDIuNi4gSW5pdGlhbGl6ZSBpbnN0YW5jZSB0byBlbmFibGUsIGRpc2FibGUgYW5kL29y
IHNlbGVjdCBLZXkgU3lzdGVtIGZlYXR1cmVzIHVzaW5nIGNvbmZpZ3VyYXRpb24uCi0gICAgICAg
IGlmIChpbnN0YW5jZS0+aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKCptX2NvbmZpZ3VyYXRp
b24pID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJlamVj
dChOb3RBbGxvd2VkRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAg
ICAgICAgLy8gMi43LiBJZiB1c2UgZGlzdGluY3RpdmUgaWRlbnRpZmllciBpcyBmYWxzZSwgcHJl
dmVudCBpbnN0YW5jZSBmcm9tIHVzaW5nIERpc3RpbmN0aXZlIElkZW50aWZpZXIocykgYW5kIERp
c3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVyKHMpLgotICAgICAgICBpZiAoIXVzZURpc3Rp
bmN0aXZlSWRlbnRpZmllciAmJiBpbnN0YW5jZS0+c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0Fs
bG93ZWQoZmFsc2UpID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KICAgICAgICAgLy8gMi44LiBJZiBwZXJzaXN0ZW50IHN0YXRlIGFsbG93ZWQgaXMgZmFs
c2UsIHByZXZlbnQgaW5zdGFuY2UgZnJvbSBwZXJzaXN0aW5nIGFueSBzdGF0ZSByZWxhdGVkIHRv
IHRoZSBhcHBsaWNhdGlvbiBvciBvcmlnaW4gb2YgdGhpcyBvYmplY3QncyBEb2N1bWVudC4KLSAg
ICAgICAgaWYgKCFwZXJzaXN0ZW50U3RhdGVBbGxvd2VkICYmIGluc3RhbmNlLT5zZXRQZXJzaXN0
ZW50U3RhdGVBbGxvd2VkKGZhbHNlKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7Ci0gICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDIuOS4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcg
c3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4Y2VwdGlvbiB3aG9z
ZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgotICAgICAgICAvLyAyLjEwLiBM
ZXQgbWVkaWEga2V5cyBiZSBhIG5ldyBNZWRpYUtleXMgb2JqZWN0LCBhbmQgaW5pdGlhbGl6ZSBp
dCBhcyBmb2xsb3dzOgotICAgICAgICAvLyAyLjEwLjEuIExldCB0aGUgdXNlIGRpc3RpbmN0aXZl
IGlkZW50aWZpZXIgdmFsdWUgYmUgdXNlIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIuCi0gICAgICAg
IC8vIDIuMTAuMi4gTGV0IHRoZSBwZXJzaXN0ZW50IHN0YXRlIGFsbG93ZWQgdmFsdWUgYmUgcGVy
c2lzdGVudCBzdGF0ZSBhbGxvd2VkLgotICAgICAgICAvLyAyLjEwLjMuIExldCB0aGUgc3VwcG9y
dGVkIHNlc3Npb24gdHlwZXMgdmFsdWUgYmUgYmUgdGhlIHZhbHVlIG9mIGNvbmZpZ3VyYXRpb24n
cyBzZXNzaW9uVHlwZXMgbWVtYmVyLgotICAgICAgICAvLyAyLjEwLjQuIExldCB0aGUgY2RtIGlt
cGxlbWVudGF0aW9uIHZhbHVlIGJlIHRoaXMgb2JqZWN0J3MgY2RtIGltcGxlbWVudGF0aW9uIHZh
bHVlLgotICAgICAgICAvLyAyLjEwLjUuIExldCB0aGUgY2RtIGluc3RhbmNlIHZhbHVlIGJlIGlu
c3RhbmNlLgotICAgICAgICBhdXRvIG1lZGlhS2V5cyA9IE1lZGlhS2V5czo6Y3JlYXRlKHVzZURp
c3RpbmN0aXZlSWRlbnRpZmllciwgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgbV9jb25maWd1cmF0
aW9uLT5zZXNzaW9uVHlwZXMsIG1faW1wbGVtZW50YXRpb24uY29weVJlZigpLCBpbnN0YW5jZS5y
ZWxlYXNlTm9uTnVsbCgpKTsKLQotICAgICAgICAvLyAyLjExLiBSZXNvbHZlIHByb21pc2Ugd2l0
aCBtZWRpYSBrZXlzLgotICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJ
RExJbnRlcmZhY2U8TWVkaWFLZXlzPj4oV1RGTW92ZShtZWRpYUtleXMpKTsKKyAgICAgICAgdXNp
bmcgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzID0gQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGlu
Y3RpdmVJZGVudGlmaWVyczsKKyAgICAgICAgdXNpbmcgQWxsb3dQZXJzaXN0ZW50U3RhdGUgPSBD
RE1JbnN0YW5jZTo6QWxsb3dQZXJzaXN0ZW50U3RhdGU7CisKKyAgICAgICAgaW5zdGFuY2UtPmlu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbigqbV9jb25maWd1cmF0aW9uLCB1c2VEaXN0aW5jdGl2
ZUlkZW50aWZpZXIgPyBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnM6OlllcyA6IEFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVyczo6Tm8sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPyBBbGxvd1Bl
cnNpc3RlbnRTdGF0ZTo6WWVzIDogQWxsb3dQZXJzaXN0ZW50U3RhdGU6Ok5vLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBl
cnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGluc3RhbmNlID0gV1RGTW92ZShpbnN0YW5jZSksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byBzdWNjZXNzVmFsdWUpIG11dGFibGUgeworICAg
ICAgICAgICAgaWYgKHN1Y2Nlc3NWYWx1ZSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7CisgICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyAyLjkuIElmIGFu
eSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5l
dyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4K
KyAgICAgICAgICAgIC8vIDIuMTAuIExldCBtZWRpYSBrZXlzIGJlIGEgbmV3IE1lZGlhS2V5cyBv
YmplY3QsIGFuZCBpbml0aWFsaXplIGl0IGFzIGZvbGxvd3M6CisgICAgICAgICAgICAvLyAyLjEw
LjEuIExldCB0aGUgdXNlIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgdmFsdWUgYmUgdXNlIGRpc3Rp
bmN0aXZlIGlkZW50aWZpZXIuCisgICAgICAgICAgICAvLyAyLjEwLjIuIExldCB0aGUgcGVyc2lz
dGVudCBzdGF0ZSBhbGxvd2VkIHZhbHVlIGJlIHBlcnNpc3RlbnQgc3RhdGUgYWxsb3dlZC4KKyAg
ICAgICAgICAgIC8vIDIuMTAuMy4gTGV0IHRoZSBzdXBwb3J0ZWQgc2Vzc2lvbiB0eXBlcyB2YWx1
ZSBiZSBiZSB0aGUgdmFsdWUgb2YgY29uZmlndXJhdGlvbidzIHNlc3Npb25UeXBlcyBtZW1iZXIu
CisgICAgICAgICAgICAvLyAyLjEwLjQuIExldCB0aGUgY2RtIGltcGxlbWVudGF0aW9uIHZhbHVl
IGJlIHRoaXMgb2JqZWN0J3MgY2RtIGltcGxlbWVudGF0aW9uIHZhbHVlLgorICAgICAgICAgICAg
Ly8gMi4xMC41LiBMZXQgdGhlIGNkbSBpbnN0YW5jZSB2YWx1ZSBiZSBpbnN0YW5jZS4KKyAgICAg
ICAgICAgIGF1dG8gbWVkaWFLZXlzID0gTWVkaWFLZXlzOjpjcmVhdGUodXNlRGlzdGluY3RpdmVJ
ZGVudGlmaWVyLCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBtX2NvbmZpZ3VyYXRpb24tPnNlc3Np
b25UeXBlcywgbV9pbXBsZW1lbnRhdGlvbi5jb3B5UmVmKCksIGluc3RhbmNlLnJlbGVhc2VOb25O
dWxsKCkpOworCisgICAgICAgICAgICAvLyAyLjExLiBSZXNvbHZlIHByb21pc2Ugd2l0aCBtZWRp
YSBrZXlzLgorICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURM
SW50ZXJmYWNlPE1lZGlhS2V5cz4+KFdURk1vdmUobWVkaWFLZXlzKSk7CisgICAgICAgIH0pOwog
ICAgIH0pOwogCiAgICAgLy8gMy4gUmV0dXJuIHByb21pc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggYzYyNGU1MzI5
ZTU5Njg4MmYwZDQxZjU3NDU4ODVmYzIzZDM5YTZlNC4uMTg3ZDU5ZGVmMzQwNTVmOGNjNWNkNTli
ZDdmMGFhNzVhNWU5NjU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtODEsNyArODEsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8TWVkaWFLZXlTZXNzaW9uPj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleAogICAgIHJldHVybiBzZXNzaW9uOwogfQogCi12b2lkIE1lZGlhS2V5czo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
QnVmZmVyU291cmNlJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQordm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKGNvbnN0IEJ1ZmZl
clNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20t
bWVkaWFrZXlzLXNldHNlcnZlcmNlcnRpZmljYXRlCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0
IDA5IE5vdmVtYmVyIDIwMTYKQEAgLTEwNiwxNiArMTA2LDE0IEBAIHZvaWQgTWVkaWFLZXlzOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBCdWZmCiAgICAgLy8gNC4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAgICAvLyA1
LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKIAotICAgIGNvbnRleHQuZXZl
bnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBjZXJ0aWZp
Y2F0ZSA9IFdURk1vdmUoY2VydGlmaWNhdGUpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgIC8vIDUuMS4gVXNlIHRoaXMgb2JqZWN0J3MgY2RtIGluc3Rh
bmNlIHRvIHByb2Nlc3MgY2VydGlmaWNhdGUuCi0gICAgICAgIGlmIChtX2luc3RhbmNlLT5zZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmljYXRlKSkgPT0gQ0RNSW5zdGFuY2U6OkZh
aWxlZCkgewotICAgICAgICAgICAgLy8gNS4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVk
LCByZXNvbHZlIHByb21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0
aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KKyAgICAvLyA1LjEuIFVzZSB0aGlzIG9iamVjdCdz
IGNkbSBpbnN0YW5jZSB0byBwcm9jZXNzIGNlcnRpZmljYXRlLgorICAgIG1faW5zdGFuY2UtPnNl
dFNlcnZlckNlcnRpZmljYXRlKFdURk1vdmUoY2VydGlmaWNhdGUpLCBbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldIChhdXRvIHN1Y2Nlc3MpIHsKKyAgICAgICAgLy8gNS4yLiBJZiB0aGUgcHJl
Y2VkaW5nIHN0ZXAgZmFpbGVkLCByZXNvbHZlIHByb21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRp
b24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KKyAgICAgICAgLy8g
NS4xLiBbRWxzZSxdIFJlc29sdmUgcHJvbWlzZSB3aXRoIHRydWUuCisgICAgICAgIGlmIChzdWNj
ZXNzID09IENETUluc3RhbmNlOjpGYWlsZWQpCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3Qo
SW52YWxpZFN0YXRlRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gNS4xLiBSZXNvbHZlIHByb21pc2Ugd2l0aCB0cnVlLgotICAgICAgICBwcm9taXNl
LT5yZXNvbHZlPElETEJvb2xlYW4+KHRydWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBw
cm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHRydWUpOwogICAgIH0pOwogCiAgICAgLy8gNi4g
UmV0dXJuIHByb21pc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuaAppbmRleCAxZTJlMWEyNzcxMzQwZTZkZjFlMGE5OGE1NDJjY2Q1Zjgy
YWUyOGRmLi5iNmI3MmEyNzIyMjJiNWM5YmRjMjI1NDA2NmJlOGRlMjkxYmE2ODdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAg
LTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIH5NZWRpYUtleXMoKTsKIAogICAgIEV4Y2VwdGlv
bk9yPFJlZjxNZWRpYUtleVNlc3Npb24+PiBjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBNZWRpYUtleVNlc3Npb25UeXBlKTsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmlj
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKGNvbnN0IEJ1
ZmZlclNvdXJjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAgICAgdm9pZCBhdHRhY2hD
RE1DbGllbnQoQ0RNQ2xpZW50Jik7CiAgICAgdm9pZCBkZXRhY2hDRE1DbGllbnQoQ0RNQ2xpZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5pZGwKaW5kZXggZDZmMDRjZGRiZTUwZDMxNDgzOTVmNjVlYzZiZjkwNTdmZmJmNGRjZS4u
ZGIxYjA1MzQzYmMyMTM4YzliNmJjNTIyNWY3OTI5NzMzNmZkYjI5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApAQCAtMzMs
NSArMzMsNSBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBN
ZWRpYUtleXMgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKLSAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlzZTxib29sPiBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShCdWZmZXJTb3VyY2Ugc2VydmVyQ2VydGlmaWNhdGUpOworICAgIFByb21pc2U8Ym9vbD4gc2V0
U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNlcnZlckNlcnRpZmljYXRlKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IGFmY2FhYjNhMWQzZTUzMDgxN2RiMGZjNGMzNDVmYjE5NDg4MTAzYzAu
LjkxODViZTU0YmZkNGZiZWE3N2I2ZmVmNmRhMGUzZjIxOGJmMjE3MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC0xODIyLDYgKzE4MjIsNyBAQCBwbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcAogcGxh
dGZvcm0vYXVkaW8vWmVyb1BvbGUuY3BwCiAKIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZh
Y3RvcnkuY3BwCitwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNwcAogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xF
V2ViS2l0QnJpZGdlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDdiMThhNTBhNDRmNmE4ZTYzZDE0YzMyODg0MzM1Njc5MDFk
MTEyMGIuLmE0MjU0Yzk5MTRiZjdjMjk2ZTNjY2MyZjI1NmYyNmZmZTRlNDc2N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQw
NjUsNiArNDA2NSwxOSBAQAogCQlDRDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0
OTU2MTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDNBNDk2MjE3
QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1OTE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNl
QnVmZmVyLmggKi87IH07CiAJCUNEM0E0OTY1MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZm
ZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovOyB9OworCQlD
RDNDRTBGODI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRW5jcnlwdGlvblNjaGVtZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNzU2OUIyMTVDMjNBNDAw
RUZDQjUwIC8qIENETUVuY3J5cHRpb25TY2hlbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGOTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RN
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q5NEE1RDIxRjcxQ0I2QjAwRjUyNUM1IC8qIENETUZhY3RvcnkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTBGQTI0MDFBQUQ5MDA0QkEw
MUQgLyogQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEOTRBNUNFMUY3MUNCNkEwMEY1MjVDNSAvKiBDRE1JbnN0YW5jZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZCMjQw
MUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOUQzNzVBMjE1MTYzRTQwMDQ5NjU3QiAvKiBD
RE1JbnN0YW5jZVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlDRDNDRTBGQzI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5U3RhdHVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVENDFG
NzFDQjZDMDBGNTI1QzUgLyogQ0RNS2V5U3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkQyNDAxQUFEOTAwNEJBMDFEIC8qIENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEOTRBNUNEMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQ0QzQ0UwRkUyNDAxQUFEOTAwNEJBMDFEIC8qIENETU1lZGlhQ2FwYWJpbGl0eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1RDMx
RjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZGMjQwMUFBREEwMDRCQTAx
RCAvKiBDRE1NZXNzYWdlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q5NEE1RDYxRjcxQ0I2RDAwRjUyNUM1IC8qIENETU1lc3NhZ2VUeXBlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0Ux
MDAyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNGMUY3MUNCNkEwMEY1MjVDNSAvKiBDRE1Q
cml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFGNzFDQjYxMDBGNTI1QzUg
LyogQ0RNUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVxdWlyZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUNDMUY3MUNC
NjkwMEY1MjVDNSAvKiBDRE1SZXF1aXJlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTAzMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1S
ZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEOTRBNUQwMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1SZXN0cmljdGlvbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwNDI0MDFB
QURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ1MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1TZXNz
aW9uVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNFMjFEQjIx
ODMzRjUxMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEM0UyNTFDMTgwNDZCMDYwMEUy
N0Y1NiAvKiBHcmlkQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2IC8qIEdyaWRBcmVhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QzRTI1MjQxODA0NkJD
RDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTIyMTgwNDZCQ0QwMEUyN0Y1NiAv
KiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggKi87IH07CkBAIC00MTk1LDcgKzQyMDgsNyBA
QAogCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIwMEYxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tUcmFja3MuaCAqLzsgfTsKIAkJQ0RGNEI3MTIxRTAwODdBRTAwRTIzNUEyIC8q
IExlZ2FjeUNETVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBMZWdhY3lDRE1TZXNzaW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNEI3
MTUxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0QjcxMzFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmNwcCAq
LzsgfTsKLQkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEy
IC8qIENETS5oICovOyB9OworCQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0QjcxNDFFMDBC
N0U1MDBFMjM1QTIgLyogQ0RNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0RGNEI3MTgxRTAxQ0I5MTAwRTIzNUEyIC8qIE1lZGlhS2V5c1Jlc3Ry
aWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RGNEI3MTcxRTAxQ0I5MTAwRTIzNUEyIC8qIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucy5oICovOyB9
OwogCQlDREY0QjcxQTFFMDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9uVHlwZS5pZGwg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREY0QjcxOTFF
MDFEM0QwMDBFMjM1QTIgLyogTWVkaWFLZXlTZXNzaW9uVHlwZS5pZGwgKi87IH07CiAJCUNERjRC
NzFFMUUwMUUxMUEwMEUyMzVBMiAvKiBKU01lZGlhS2V5U2Vzc2lvblR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzFDMUUwMUUxMUEwMEUy
MzVBMiAvKiBKU01lZGlhS2V5U2Vzc2lvblR5cGUuaCAqLzsgfTsKQEAgLTEzNzY3LDYgKzEzNzgw
LDcgQEAKIAkJQ0QzQTQ5NUIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnVmZmVyTGlzdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0E0OTVDMTdBOUQwMUIwMDI3NEU0
MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNvdXJjZUJ1ZmZlckxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzQTQ5
NUQxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFNvdXJjZUJ1ZmZlckxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDNDRTExQzI0MDQ1MUFGMDA0QkEwMUQgLyogQ0RNUHJpdmF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDRE1Qcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0QzRTIxREIyMTgzM0Y1MTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDNFMjUxQjE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JpZEFyZWEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0QzRTI1MjExODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFy
ZWFzVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTR3Jp
ZFRlbXBsYXRlQXJlYXNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NjI4Nyw2ICsyNjMwMSw3IEBACiAJCQkJQ0Q5NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1l
ZGlhQ2FwYWJpbGl0eS5oICovLAogCQkJCUNEOTRBNUQ2MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1N
ZXNzYWdlVHlwZS5oICovLAogCQkJCUNEOTRBNUNGMUY3MUNCNkEwMEY1MjVDNSAvKiBDRE1Qcml2
YXRlLmggKi8sCisJCQkJQ0QzQ0UxMUMyNDA0NTFBRjAwNEJBMDFEIC8qIENETVByaXZhdGUuY3Bw
ICovLAogCQkJCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVENSAvKiBDRE1Qcm94eS5jcHAgKi8sCiAJ
CQkJQ0Q5NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1IC8qIENETVByb3h5LmggKi8sCiAJCQkJQ0Q5NEE1
Q0MxRjcxQ0I2OTAwRjUyNUM1IC8qIENETVJlcXVpcmVtZW50LmggKi8sCkBAIC0yOTI2Miw5ICsy
OTI3NywyMiBAQAogCQkJCTY1NTBCNjlFMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBp
biBIZWFkZXJzICovLAogCQkJCUNEOTRBNURFMUY3MkY1N0IwMEY1MjVDNSAvKiBDRE1DbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEY4MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1FbmNy
eXB0aW9uU2NoZW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGOTI0MDFBQUQ5MDA0QkEw
MUQgLyogQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RCNzA0NUExRjc0NjVBMTAw
MzkyM0RGIC8qIENETUZhaXJQbGF5U3RyZWFtaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDND
RTBGQTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEM0NFMEZDMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTdGF0dXMuaCBp
biBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZEMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGRTI0MDFBQUQ5MDA0
QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBG
RjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRDMxODYyMzE5OUYxRTJBMDAzMEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENE
TVByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyog
Q0RNUmVxdWlyZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAzMjQwMUFBREEwMDRC
QTAxRCAvKiBDRE1SZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERTU5NTk3MUJG
MjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRDNDRTEwNDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTVGQTkwNENBMTc4RTYxRjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0
ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjhGMEI1MjE5NTNENjUwMDBDMkIwMCAvKiBD
ZXJ0aWZpY2F0ZUluZm9CYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1
MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGU5ZjhlYTIwNWM4MGNmYTI5ODVm
ZWYxODViZmVmZTBjMTIyODJiOC4uOTRlZjVhN2I5OTQwZmFhMjJmNTljYzk0Yjg2NmZhMTM5ZmY5
OGMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNTYx
LDE1ICsyNTYxLDI1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCkKK3sKKyAgICBpZiAoIW1f
cGxheWVyKQorICAgICAgICByZXR1cm47CisgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IGhhc0V2
ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVka2V5IikgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuZW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRvY3VtZW50
KCkucXVpcmtzKCkuaGFzQnJva2VuRW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmsoKSk7Cisg
ICAgbV9wbGF5ZXItPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkQ29udGlu
dWUpOworfQorI2VuZGlmCisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAog
ewogICAgIHJldHVybiBtX3dlYktpdE1lZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNo
ZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBudWxscHRyOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkK
IHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVn
YWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtl
eSIpCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKQEAgLTI1ODAsMTQgKzI1OTAsMTIgQEAg
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBp
bml0RGF0YSkKICAgICAgICAgKSB7CiAgICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVh
dGUoTWVkaWFFcnJvcjo6TUVESUFfRVJSX0VOQ1JZUFRFRCk7CiAgICAgICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVk
ZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXREYXRh
KTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5l
bnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0
cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdApAQCAtNTEyOSw2ICs1MTM3LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFFbmdpbmVXYXNVcGRhdGVkKCkKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQogICAgIHNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSgpOwogI2VuZGlmCisKKyNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAg
ICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlmCiB9CiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCkKQEAgLTU4OTEsNiAr
NTkwMywxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2
ZW50KQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3Qg
QWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CisjaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50KQorICAgICAgICB1cGRhdGVT
aG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpOworI2VuZGlmCisKICAgICBpZiAoZXZlbnRUeXBl
ICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRF
dmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucyk7CiAKQEAgLTU5MTIsNiArNTkyOSwxMSBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlLCBSZWY8RXZlbnRMaQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0
ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogeworI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChl
dmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCkKKyAgICAgICAgdXBk
YXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKTsKKyNlbmRpZgorCiAgICAgaWYgKGV2ZW50
VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFu
Z2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IGYwNWUyMjNiOTMyZjcxN2MxYWNjMzAwYjVmODExZDY5MTRiMjk2YTYuLmZl
MDdhZDBmNDc5N2U3MDlhNTcwOThkYmM1OTMzNTc5ZmE0MDNlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC02ODIsNyArNjgyLDcgQEAgcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdCBm
aW5hbDsKLSAgICBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsK
KyAgICB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBT
dHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7
CiAjZW5kaWYKIApAQCAtNjk2LDYgKzY5NiwxMCBAQCBwcml2YXRlOgogICAgIC8vIENETUNsaWVu
dAogICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgp
IGZpbmFsOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0
ZXJOZWVkS2V5KCk7CisjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogICAgIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVs
ZXNzQ2hhbmdlZChib29sKSBmaW5hbDsKQEAgLTExNjgsNiArMTE3Miw3IEBAIHByaXZhdGU6CiAg
ICAgTWVkaWFQcm92aWRlciBtX21lZGlhUHJvdmlkZXI7CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKKyAgICBib29sIG1faGFzTmVlZGtleUxpc3RlbmVyIHsgZmFsc2UgfTsK
ICAgICBSZWZQdHI8V2ViS2l0TWVkaWFLZXlzPiBtX3dlYktpdE1lZGlhS2V5czsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1F
bmNyeXB0aW9uU2NoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKaW5kZXggNzRiM2FhN2Q3YmRiMDBhMjY3NTZhMDIzNjU2
NmYzNjg4MTJiY2UzYi4uMWE3YTU2MjdkYmNhNjQxYjQ5Y2U3ZTU2ZTY3MTZlMzE4YTk4OGJmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5j
cnlwdGlvblNjaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaApAQCAtMjcsMTMgKzI3LDI3IEBACiAKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETUVuY3J5cHRpb25TY2hlbWUgeworZW51bSBj
bGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIDogdWludDhfdCB7CiAgICAgY2VuYywKICAgICBjYmNz
LAogfTsKIAogfQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZSwKKyAgICAg
ICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2VuYywKKyAgICAgICAgV2ViQ29yZTo6
Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2JjcworICAgID47Cit9OworCit9CisKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5
LmNwcAppbmRleCA0YmI1OTlmYTgwNzNkM2I4NTVkODQ2MTc4NjE5ZGJjMDI2MTA1OGYyLi42NjFk
NWI0ZWI3NTJlYTU1YWEyZDhlNGY5ZWVkNjM4NmVkZGFjNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcApAQCAtNTcs
NiArNTcsMTEgQEAgdm9pZCBDRE1GYWN0b3J5Ojp1bnJlZ2lzdGVyRmFjdG9yeShDRE1GYWN0b3J5
JiBmYWN0b3J5KQogICAgIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKS5yZW1vdmVBbGwoJmZhY3Rvcnkp
OwogfQogCit2b2lkIENETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKCkKK3sKKyAgICBwbGF0Zm9y
bVJlZ2lzdGVyRmFjdG9yaWVzKHJlZ2lzdGVyZWRGYWN0b3JpZXMoKSk7Cit9CisKICNpZiAhVVNF
KEdTVFJFQU1FUikgJiYgIVVTRShBVkZPVU5EQVRJT04pCiB2b2lkIENETUZhY3Rvcnk6OnBsYXRm
b3JtUmVnaXN0ZXJGYWN0b3JpZXMoVmVjdG9yPENETUZhY3RvcnkqPiYpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKaW5kZXgg
NDRlYWFiMDdlNzU3YWZlNThiNTM2MWY1YWYxMmIyNDc3NmEwMzUyZS4uZTFhZTYwNDIxNmE5NzU5
MmYzM2NiODM2MmZjMmMyMWEyYjA4OGI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaApAQCAtNDIsNyArNDIsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29u
c3QgU3RyaW5nJikgPSAwOwogCi0gICAgc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIHJlZ2lz
dGVyZWRGYWN0b3JpZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPENETUZh
Y3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIHJlc2V0RmFjdG9yaWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
cmVnaXN0ZXJGYWN0b3J5KENETUZhY3RvcnkmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCB1bnJlZ2lzdGVyRmFjdG9yeShDRE1GYWN0b3J5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmluZGV4IDhmOWYz
ZWI4NzQ1YzM1MjAyODMxNGM2MDZkMjg5ZDRlM2Y3MWEwNDguLjczNGM5MzUwNzU2ZDc5Zjc0ZDkw
NjVlMjQwMWMyZWU4YWJjMTMwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkNETU1lc3NhZ2VUeXBlLmgiCiAjaW5jbHVkZSAiQ0RNU2Vzc2lvblR5cGUuaCIKICNpbmNs
dWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTUyLDIzICs1MywzMyBAQCBwdWJsaWM6
CiAgICAgICAgIE1vY2ssCiAgICAgICAgIENsZWFyS2V5LAogICAgICAgICBGYWlyUGxheVN0cmVh
bWluZywKKyAgICAgICAgUmVtb3RlLAogICAgIH07CiAgICAgdmlydHVhbCBJbXBsZW1lbnRhdGlv
blR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgPSAwOwogCi0gICAgZW51bSBTdWNjZXNz
VmFsdWUgeworICAgIGVudW0gU3VjY2Vzc1ZhbHVlIDogYm9vbCB7CiAgICAgICAgIEZhaWxlZCwK
ICAgICAgICAgU3VjY2VlZGVkLAogICAgIH07CisgICAgdXNpbmcgU3VjY2Vzc0NhbGxiYWNrID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPjsKIAotICAgIHZpcnR1YWwgU3Vj
Y2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1
ZSBzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIFN1Y2Nl
c3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7Ci0g
ICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KSA9IDA7CisgICAgZW51bSBjbGFzcyBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgOiBib29s
IHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcywKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBB
bGxvd1BlcnNpc3RlbnRTdGF0ZSA6IGJvb2wgeworICAgICAgICBObywKKyAgICAgICAgWWVzLAor
ICAgIH07CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmll
cnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbigpID0gMDsKIAotICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyB7CisgICAgZW51
bSBjbGFzcyBIRENQU3RhdHVzIDogdWludDhfdCB7CiAgICAgICAgIFVua25vd24sCiAgICAgICAg
IFZhbGlkLAogICAgICAgICBPdXRwdXRSZXN0cmljdGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApp
bmRleCA4NzI1YTMxZDhiYjNlMjJiZTIxZGYwN2UzMjBiMzZlNzUwMzg2ZTFhLi5kNDY0Yjc0ZDFj
NzIwMmE5YTMzOWRmZjY1ZDA2ZTA4MjA4OTY5ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApA
QCAtNzIsOSArNzIsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7CiAgICAgdXNpbmcgTWVzc2Fn
ZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5n
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNz
aW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBt
ZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYpID0gMDsKIAotICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIHsKKyAgICBlbnVt
IGNsYXNzIFNlc3Npb25Mb2FkRmFpbHVyZSA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLAogICAg
ICAgICBOb1Nlc3Npb25EYXRhLAogICAgICAgICBNaXNtYXRjaGVkU2Vzc2lvblR5cGUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0
dXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1
cy5oCmluZGV4IGFkOTY5NjIzNjA0Y2QxNDcwNTVhMjdiNzMzNmY2NzdjMGIzYWYyYzQuLmNjNWU3
MTg2Zjc0ZWY4ZTgxNGNiM2FmNzU1ZTE2MWE2NWMyMDg4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0YXR1cy5oCkBAIC0zMCw5
ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBDRE1LZXlT
dGF0dXMgeworZW51bSBjbGFzcyBDRE1LZXlTdGF0dXMgOiB1aW50OF90IHsKICAgICBVc2FibGUs
CiAgICAgRXhwaXJlZCwKICAgICBSZWxlYXNlZCwKQEAgLTQ0LDQgKzQ2LDIwIEBAIGVudW0gY2xh
c3MgQ0RNS2V5U3RhdHVzIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1LZXlTdGF0
dXM+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6OkNETUtl
eVN0YXR1cywKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlVzYWJsZSwKKyAgICBXZWJDb3Jl
OjpDRE1LZXlTdGF0dXM6OkV4cGlyZWQsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpSZWxl
YXNlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6Ok91dHB1dFJlc3RyaWN0ZWQsCisgICAg
V2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpPdXRwdXREb3duc2NhbGVkLAorICAgIFdlYkNvcmU6OkNE
TUtleVN0YXR1czo6U3RhdHVzUGVuZGluZywKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6Oklu
dGVybmFsRXJyb3IKKyAgICA+OworfTsKKworfQogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKaW5kZXggNjEyZDY0NWZh
YTUyNDhmNzFmMWMxNTY3ZjQ1MDdlODlmM2IzMWNlNS4uODUyNTg3Y2VkYTA1MTIxNDQ3OTUyMmZh
YzM4ZTRjMGZiOTg3NDlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaApA
QCAtNDgsNiArNDgsNjcgQEAgc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gewogICAg
IENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllciB7IENETVJlcXVpcmVtZW50OjpP
cHRpb25hbCB9OwogICAgIENETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZSB7IENETVJlcXVp
cmVtZW50OjpPcHRpb25hbCB9OwogICAgIFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4gc2Vzc2lvblR5
cGVzOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBsYWJlbDsKKyAg
ICAgICAgZW5jb2RlciA8PCBpbml0RGF0YVR5cGVzOworICAgICAgICBlbmNvZGVyIDw8IGF1ZGlv
Q2FwYWJpbGl0aWVzOworICAgICAgICBlbmNvZGVyIDw8IHZpZGVvQ2FwYWJpbGl0aWVzOworICAg
ICAgICBlbmNvZGVyIDw8IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKKyAgICAgICAgZW5jb2RlciA8
PCBwZXJzaXN0ZW50U3RhdGU7CisgICAgICAgIGVuY29kZXIgPDwgc2Vzc2lvblR5cGVzOworICAg
IH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbGFiZWw7CisgICAgICAgIGRlY29kZXIgPj4gbGFi
ZWw7CisgICAgICAgIGlmICghbGFiZWwpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBpbml0RGF0YVR5cGVzOworICAg
ICAgICBkZWNvZGVyID4+IGluaXREYXRhVHlwZXM7CisgICAgICAgIGlmICghaW5pdERhdGFUeXBl
cykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8
VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IGF1ZGlvQ2FwYWJpbGl0aWVzOworICAgICAgICBk
ZWNvZGVyID4+IGF1ZGlvQ2FwYWJpbGl0aWVzOworICAgICAgICBpZiAoIWF1ZGlvQ2FwYWJpbGl0
aWVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gdmlkZW9DYXBhYmlsaXRpZXM7CisgICAgICAg
IGRlY29kZXIgPj4gdmlkZW9DYXBhYmlsaXRpZXM7CisgICAgICAgIGlmICghdmlkZW9DYXBhYmls
aXRpZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlv
bmFsPENETVJlcXVpcmVtZW50PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGRlY29k
ZXIgPj4gZGlzdGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBpZiAoIWRpc3RpbmN0aXZlSWRl
bnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIAorICAg
ICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4gcGVyc2lzdGVudFN0YXRlOworICAgICAgICBk
ZWNvZGVyID4+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgaWYgKCFwZXJzaXN0ZW50U3RhdGUp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZl
Y3RvcjxDRE1TZXNzaW9uVHlwZT4+IHNlc3Npb25UeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBz
ZXNzaW9uVHlwZXM7CisgICAgICAgIGlmICghc2Vzc2lvblR5cGVzKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1v
dmUoKmxhYmVsKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmluaXREYXRhVHlwZXMpLAorICAgICAg
ICAgICAgV1RGTW92ZSgqYXVkaW9DYXBhYmlsaXRpZXMpLAorICAgICAgICAgICAgV1RGTW92ZSgq
dmlkZW9DYXBhYmlsaXRpZXMpLAorICAgICAgICAgICAgKmRpc3RpbmN0aXZlSWRlbnRpZmllciwK
KyAgICAgICAgICAgICpwZXJzaXN0ZW50U3RhdGUsCisgICAgICAgICAgICBXVEZNb3ZlKCpzZXNz
aW9uVHlwZXMpLAorICAgICAgICB9fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1NZWRpYUNhcGFiaWxpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETU1lZGlhQ2FwYWJpbGl0eS5oCmluZGV4IDkwMWI1NGZmMDUwOGVkYTliYmI4OGM1YzFk
Yjg2NTM4ZGNlMTQyODIuLmY4NGEwZDEyYWI0Y2Q1MjBlM2YwZTA0ZDY0ZWJlZmM2MzE2MjU4N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1l
ZGlhQ2FwYWJpbGl0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETU1lZGlhQ2FwYWJpbGl0eS5oCkBAIC0zOSw2ICszOSwzOSBAQCBzdHJ1Y3QgQ0RNTWVk
aWFDYXBhYmlsaXR5IHsKICAgICBTdHJpbmcgY29udGVudFR5cGU7CiAgICAgU3RyaW5nIHJvYnVz
dG5lc3M7CiAgICAgT3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNjaGVtZT4gZW5jcnlwdGlvblNjaGVt
ZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgY29udGVudFR5cGU7
CisgICAgICAgIGVuY29kZXIgPDwgcm9idXN0bmVzczsKKyAgICAgICAgZW5jb2RlciA8PCBlbmNy
eXB0aW9uU2NoZW1lOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAg
IHN0YXRpYyBPcHRpb25hbDxDRE1NZWRpYUNhcGFiaWxpdHk+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKKyAgICAg
ICAgZGVjb2RlciA+PiBjb250ZW50VHlwZTsKKyAgICAgICAgaWYgKCFjb250ZW50VHlwZSkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5n
PiByb2J1c3RuZXNzOworICAgICAgICBkZWNvZGVyID4+IHJvYnVzdG5lc3M7CisgICAgICAgIGlm
ICghcm9idXN0bmVzcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgT3B0aW9uYWw8T3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNjaGVtZT4+IGVuY3J5cHRpb25TY2hl
bWU7CisgICAgICAgIGRlY29kZXIgPj4gZW5jcnlwdGlvblNjaGVtZTsKKyAgICAgICAgaWYgKCFl
bmNyeXB0aW9uU2NoZW1lKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUoKmNvbnRlbnRUeXBlKSwKKyAgICAg
ICAgICAgIFdURk1vdmUoKnJvYnVzdG5lc3MpLAorICAgICAgICAgICAgV1RGTW92ZSgqZW5jcnlw
dGlvblNjaGVtZSksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETU1lc3NhZ2VUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1NZXNzYWdlVHlwZS5oCmluZGV4IGU1Zjc5NmE5ZTBlMDc1MWFhMDI3ODJiOWI2NjZjYTIz
MWVmN2U2MDkuLjk1YmYyOGMyYWE5NGEzZGE1MDQ1YjVlYzAwZjM1OGNkMjZkOTVjYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVz
c2FnZVR5cGUuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWVudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgeworZW51bSBjbGFzcyBDRE1NZXNzYWdlVHlwZSA6
IHVpbnQ4X3QgewogICAgIExpY2Vuc2VSZXF1ZXN0LAogICAgIExpY2Vuc2VSZW5ld2FsLAogICAg
IExpY2Vuc2VSZWxlYXNlLApAQCAtNDEsNCArNDMsMTggQEAgZW51bSBjbGFzcyBDRE1NZXNzYWdl
VHlwZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdl
VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0LAor
ICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsCisgICAgICAg
IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVsZWFzZSwKKyAgICAgICAgV2ViQ29y
ZTo6Q0RNTWVzc2FnZVR5cGU6OkluZGl2aWR1YWxpemF0aW9uUmVxdWVzdAorICAgID47Cit9Owor
Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTVhYTI1ZmE1ODE0ZGM0Yzg3NjUyNzI1MTNhNmI1MjBmODZiMDBlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZS5jcHAKQEAgLTAsMCArMSw1MjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ0RNUHJpdmF0ZS5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJDRE1N
ZWRpYUNhcGFiaWxpdHkuaCIKKyNpbmNsdWRlICJDRE1SZXF1aXJlbWVudC5oIgorI2luY2x1ZGUg
IkNETVJlc3RyaWN0aW9ucy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYXJzZWRDb250ZW50VHlwZS5oIgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0RNUHJpdmF0ZTo6
Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKK0NETVByaXZhdGU6On5DRE1Qcml2YXRlKCkgPSBkZWZh
dWx0OworCit2b2lkIENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIExvY2FsU3RvcmFn
ZUFjY2VzcyBhY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1z
dXBwb3J0ZWQtY29uZmlndXJhdGlvbgorICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3Zl
bWJlciAyMDE2CisKKyAgICAvLyAzLjEuMS4xIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbgor
ICAgIC8vIEdpdmVuIGEgS2V5IFN5c3RlbXMgaW1wbGVtZW50YXRpb24gaW1wbGVtZW50YXRpb24s
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24sIGFuZCBv
cmlnaW4sCisgICAgLy8gdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBvcnRlZCBjb25maWd1
cmF0aW9uIG9yIE5vdFN1cHBvcnRlZCBhcyBhcHByb3ByaWF0ZS4KKworICAgIC8vIDEuIExldCBz
dXBwb3J0ZWQgY29uZmlndXJhdGlvbiBiZSBDb25zZW50RGVuaWVkLgorICAgIC8vIDIuIEluaXRp
YWxpemUgcmVzdHJpY3Rpb25zIHRvIGluZGljYXRlIHRoYXQgbm8gY29uZmlndXJhdGlvbnMgaGF2
ZSBoYWQgdXNlciBjb25zZW50IGRlbmllZC4KKyAgICBDRE1SZXN0cmljdGlvbnMgcmVzdHJpY3Rp
b25zIHsgfTsKKyAgICBkb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25TdGVwKFdURk1vdmUoY2FuZGlk
YXRlQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSwgYWNjZXNzLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgQ0RNUHJpdmF0ZTo6ZG9TdXBwb3J0ZWRDb25maWd1cmF0
aW9uU3RlcChDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlv
biwgQ0RNUmVzdHJpY3Rpb25zJiYgcmVzdHJpY3Rpb25zLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNj
ZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICAv
LyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNv
bmZpZ3VyYXRpb24KKyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNiwg
Y3RkLgorCisgICAgLy8gMy4xLjEuMSBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24KKyAgICAv
LyAzLiBSZXBlYXQgdGhlIGZvbGxvd2luZyBzdGVwIHdoaWxlIHN1cHBvcnRlZCBjb25maWd1cmF0
aW9uIGlzIENvbnNlbnREZW5pZWQ6CisgICAgLy8gMy4xLiBMZXQgc3VwcG9ydGVkIGNvbmZpZ3Vy
YXRpb24gYW5kLCBpZiBwcm92aWRlZCwgcmVzdHJpY3Rpb25zIGJlIHRoZSByZXN1bHQgb2YgZXhl
Y3V0aW5nIHRoZQorICAgIC8vIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbiBhbmQgQ29uc2Vu
dCBhbGdvcml0aG0gd2l0aCBpbXBsZW1lbnRhdGlvbiwgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24s
CisgICAgLy8gcmVzdHJpY3Rpb25zIGFuZCBvcmlnaW4uCisgICAgYXV0byBvcHRpb25hbENvbmZp
Z3VyYXRpb24gPSBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNhbmRpZGF0ZUNvbmZpZ3VyYXRp
b24sIHJlc3RyaWN0aW9ucywgYWNjZXNzKTsKKyAgICBpZiAoIW9wdGlvbmFsQ29uZmlndXJhdGlv
bikgeworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byBjb25zZW50Q2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGFjY2Vzc10gKENvbnNlbnRT
dGF0dXMgc3RhdHVzLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwg
Q0RNUmVzdHJpY3Rpb25zJiYgcmVzdHJpY3Rpb25zKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykgeworICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyAzLjEuMS4yIEdldCBTdXBwb3J0ZWQg
Q29uZmlndXJhdGlvbiBhbmQgQ29uc2VudCwgY3RkLgorICAgICAgICAvLyAyMi4gTGV0IGNvbnNl
bnQgc3RhdHVzIGFuZCB1cGRhdGVkIHJlc3RyaWN0aW9ucyBiZSB0aGUgcmVzdWx0IG9mIHJ1bm5p
bmcgdGhlIEdldCBDb25zZW50IFN0YXR1cyBhbGdvcml0aG0gb24gYWNjdW11bGF0ZWQgY29uZmln
dXJhdGlvbiwKKyAgICAgICAgLy8gICAgIHJlc3RyaWN0aW9ucyBhbmQgb3JpZ2luIGFuZCBmb2xs
b3cgdGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2YgY29uc2VudCBzdGF0dXMgZnJvbSB0aGUgZm9s
bG93aW5nIGxpc3Q6CisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAgIGNhc2UgQ29u
c2VudFN0YXR1czo6Q29uc2VudERlbmllZDoKKyAgICAgICAgICAgIC8vIOKGsyBDb25zZW50RGVu
aWVkOgorICAgICAgICAgICAgLy8gICAgUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHVwZGF0ZWQg
cmVzdHJpY3Rpb25zLgorICAgICAgICAgICAgd2Vha1RoaXMtPmRvU3VwcG9ydGVkQ29uZmlndXJh
dGlvblN0ZXAoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgV1RGTW92ZShyZXN0cmljdGlvbnMpLCBh
Y2Nlc3MsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBjYXNlIENvbnNlbnRTdGF0dXM6OkluZm9ybVVzZXI6CisgICAgICAgICAgICAvLyDihrMgSW5m
b3JtVXNlcgorICAgICAgICAgICAgLy8gICAgSW5mb3JtIHRoZSB1c2VyIHRoYXQgYWNjdW11bGF0
ZWQgY29uZmlndXJhdGlvbiBpcyBpbiB1c2UgaW4gdGhlIG9yaWdpbiBpbmNsdWRpbmcsIHNwZWNp
ZmljYWxseSwgdGhlIGluZm9ybWF0aW9uIHRoYXQKKyAgICAgICAgICAgIC8vICAgIERpc3RpbmN0
aXZlIElkZW50aWZpZXIocykgYW5kL29yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVy
KHMpIGFzIGFwcHJvcHJpYXRlIHdpbGwgYmUgdXNlZCBpZiB0aGUKKyAgICAgICAgICAgIC8vICAg
IGRpc3RpbmN0aXZlSWRlbnRpZmllciBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlv
biBpcyAicmVxdWlyZWQiLiBDb250aW51ZSB0byB0aGUgbmV4dCBzdGVwLgorICAgICAgICAgICAg
Ly8gTk9URTogSW1wbGVtZW50LgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBD
b25zZW50U3RhdHVzOjpBbGxvd2VkOgorICAgICAgICAgICAgLy8g4oazIEFsbG93ZWQ6CisgICAg
ICAgICAgICAvLyBDb250aW51ZSB0byB0aGUgbmV4dCBzdGVwLgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgLy8gMjMuIFJldHVybiBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uLgorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICB9Owor
ICAgIGdldENvbnNlbnRTdGF0dXMoV1RGTW92ZShvcHRpb25hbENvbmZpZ3VyYXRpb24udmFsdWUo
KSksIFdURk1vdmUocmVzdHJpY3Rpb25zKSwgYWNjZXNzLCBXVEZNb3ZlKGNvbnNlbnRDYWxsYmFj
aykpOworfQorCitib29sIENETVByaXZhdGU6OmlzUGVyc2lzdGVudFR5cGUoQ0RNU2Vzc2lvblR5
cGUgc2Vzc2lvblR5cGUpCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRl
ZC1tZWRpYS8jaXMtcGVyc2lzdGVudC1zZXNzaW9uLXR5cGUKKyAgICAvLyBXM0MgRWRpdG9yJ3Mg
RHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gNS4xLjEuIElzIHBlcnNpc3RlbnQgc2Vz
c2lvbiB0eXBlPworICAgIC8vIDEuIExldCB0aGUgc2Vzc2lvbiB0eXBlIGJlIHRoZSBzcGVjaWZp
ZWQgQ0RNU2Vzc2lvblR5cGUgdmFsdWUuCisgICAgLy8gMi4gRm9sbG93IHRoZSBzdGVwcyBmb3Ig
dGhlIHZhbHVlIG9mIHNlc3Npb24gdHlwZSBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBz
d2l0Y2ggKHNlc3Npb25UeXBlKSB7CisgICAgY2FzZSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5
OgorICAgICAgICAvLyDihrMgInRlbXBvcmFyeSIKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGNhc2UgQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlOgorICAgIGNhc2UgQ0RNU2Vz
c2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZDoKKyAgICAgICAgLy8g4oazICJwZXJzaXN0
ZW50LWxpY2Vuc2UiCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLCBD
RE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucywgTG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcykK
K3sKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3Vw
cG9ydGVkLWNvbmZpZ3VyYXRpb24tYW5kLWNvbnNlbnQKKyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJh
ZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gMy4xLjEuMiBHZXQgU3VwcG9ydGVkIENvbmZp
Z3VyYXRpb24gYW5kIENvbnNlbnQKKyAgICAvLyBHaXZlbiBhIEtleSBTeXN0ZW1zIGltcGxlbWVu
dGF0aW9uIGltcGxlbWVudGF0aW9uLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0
ZSBjb25maWd1cmF0aW9uLAorICAgIC8vIHJlc3RyaWN0aW9ucyBhbmQgb3JpZ2luLCB0aGlzIGFs
Z29yaXRobSByZXR1cm5zIGEgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24sIE5vdFN1cHBvcnRlZCwg
b3IgQ29uc2VudERlbmllZAorICAgIC8vIGFzIGFwcHJvcHJpYXRlIGFuZCwgaW4gdGhlIENvbnNl
bnREZW5pZWQgY2FzZSwgcmVzdHJpY3Rpb25zLgorCisgICAgLy8gMS4gTGV0IGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gYmUgYSBuZXcgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBkaWN0aW9u
YXJ5LgorICAgIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gYWNjdW11bGF0ZWRDb25maWd1cmF0
aW9uIHsgfTsKKworICAgIC8vIDIuIFNldCB0aGUgbGFiZWwgbWVtYmVyIG9mIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gdG8gZXF1YWwgdGhlIGxhYmVsIG1lbWJlciBvZiBjYW5kaWRhdGUgY29u
ZmlndXJhdGlvbi4KKyAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ubGFiZWwgPSBjYW5kaWRh
dGVDb25maWd1cmF0aW9uLmxhYmVsOworCisgICAgLy8gMy4gSWYgdGhlIGluaXREYXRhVHlwZXMg
bWVtYmVyIG9mIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uIGlzIG5vbi1lbXB0eSwgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6CisgICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLmluaXREYXRh
VHlwZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIDMuMS4gTGV0IHN1cHBvcnRlZCB0eXBlcyBi
ZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBET01TdHJpbmdzLgorICAgICAgICBWZWN0b3I8U3RyaW5n
PiBzdXBwb3J0ZWRUeXBlczsKKworICAgICAgICAvLyAzLjIuIEZvciBlYWNoIHZhbHVlIGluIGNh
bmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgaW5pdERhdGFUeXBlcyBtZW1iZXI6CisgICAgICAgIGZv
ciAoYXV0byBpbml0RGF0YVR5cGUgOiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmluaXREYXRhVHlw
ZXMpIHsKKyAgICAgICAgICAgIC8vIDMuMi4xLiBMZXQgaW5pdERhdGFUeXBlIGJlIHRoZSB2YWx1
ZS4KKyAgICAgICAgICAgIC8vIDMuMi4yLiBJZiB0aGUgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMg
Z2VuZXJhdGluZyByZXF1ZXN0cyBiYXNlZCBvbiBpbml0RGF0YVR5cGUsIGFkZCBpbml0RGF0YVR5
cGUKKyAgICAgICAgICAgIC8vICAgICAgICB0byBzdXBwb3J0ZWQgdHlwZXMuIFN0cmluZyBjb21w
YXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLiBUaGUgZW1wdHkgc3RyaW5nIGlzIG5ldmVyIHN1cHBv
cnRlZC4KKyAgICAgICAgICAgIGlmIChpbml0RGF0YVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoc3VwcG9ydGVkSW5pdERhdGFUeXBl
cygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkVHlw
ZXMuYXBwZW5kKGluaXREYXRhVHlwZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyAzLjMuIElm
IHN1cHBvcnRlZCB0eXBlcyBpcyBlbXB0eSwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KKyAgICAgICAg
aWYgKHN1cHBvcnRlZFR5cGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgLy8gMy40LiBTZXQgdGhlIGluaXREYXRhVHlwZXMgbWVtYmVyIG9m
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gc3VwcG9ydGVkIHR5cGVzLgorICAgICAgICBh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uaW5pdERhdGFUeXBlcyA9IFdURk1vdmUoc3VwcG9ydGVk
VHlwZXMpOworICAgIH0KKworICAgIC8vIDQuIExldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJl
cXVpcmVtZW50IGJlIHRoZSB2YWx1ZSBvZiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGRpc3Rp
bmN0aXZlSWRlbnRpZmllciBtZW1iZXIuCisgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJ
ZGVudGlmaWVyUmVxdWlyZW1lbnQgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZl
SWRlbnRpZmllcjsKKworICAgIC8vIDUuIElmIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWly
ZW1lbnQgaXMgIm9wdGlvbmFsIiBhbmQgRGlzdGluY3RpdmUgSWRlbnRpZmllcnMgYXJlIG5vdCBh
bGxvd2VkIGFjY29yZGluZyB0bworICAgIC8vICAgIHJlc3RyaWN0aW9ucywgc2V0IGRpc3RpbmN0
aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KKyAgICBpZiAoZGlz
dGluY3RpdmVJZGVudGlmaWVyUmVxdWlyZW1lbnQgPT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
ICYmIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQpCisgICAgICAgIGRp
c3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93
ZWQ7CisKKyAgICAvLyA2LiBGb2xsb3cgdGhlIHN0ZXBzIGZvciBkaXN0aW5jdGl2ZSBpZGVudGlm
aWVyIHJlcXVpcmVtZW50IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgIHN3aXRjaCAoZGlz
dGluY3RpdmVJZGVudGlmaWVyUmVxdWlyZW1lbnQpIHsKKyAgICBjYXNlIENETVJlcXVpcmVtZW50
OjpSZXF1aXJlZDoKKyAgICAgICAgLy8g4oazICJyZXF1aXJlZCIKKyAgICAgICAgLy8gSWYgdGhl
IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdXNlIG9mIERpc3RpbmN0aXZlIElkZW50
aWZpZXIocykgaW4gY29tYmluYXRpb24KKyAgICAgICAgLy8gd2l0aCBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAg
IGlmIChkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1
cmF0aW9uLCByZXN0cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IENETVJlcXVpcmVtZW50OjpPcHRpb25hbDoKKyAgICAgICAgLy8g4oazICJvcHRpb25hbCIKKyAg
ICAgICAgLy8gQ29udGludWUgd2l0aCB0aGUgZm9sbG93aW5nIHN0ZXBzLgorICAgICAgICBicmVh
azsKKworICAgIGNhc2UgQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ6CisgICAgICAgIC8vIOKG
syAibm90LWFsbG93ZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJl
cyB1c2UgRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBvciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQg
SWRlbnRpZmllcihzKQorICAgICAgICAvLyBpbiBjb21iaW5hdGlvbiB3aXRoIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gYW5kIHJlc3RyaWN0aW9ucywgcmV0dXJuIE5vdFN1cHBvcnRlZC4KKyAg
ICAgICAgaWYgKGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChhY2N1bXVsYXRlZENv
bmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgLy8gNy4gU2V0IHRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gZXF1YWwgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1
aXJlbWVudC4KKyAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlm
aWVyID0gZGlzdGluY3RpdmVJZGVudGlmaWVyUmVxdWlyZW1lbnQ7CisKKyAgICAvLyA4LiBMZXQg
cGVyc2lzdGVudCBzdGF0ZSByZXF1aXJlbWVudCBiZSBlcXVhbCB0byB0aGUgdmFsdWUgb2YgY2Fu
ZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgbWVtYmVyLgorICAgIENETVJl
cXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50ID0gY2FuZGlkYXRlQ29uZmlndXJh
dGlvbi5wZXJzaXN0ZW50U3RhdGU7CisKKyAgICAvLyA5LiBJZiBwZXJzaXN0ZW50IHN0YXRlIHJl
cXVpcmVtZW50IGlzICJvcHRpb25hbCIgYW5kIHBlcnNpc3Rpbmcgc3RhdGUgaXMgbm90IGFsbG93
ZWQgYWNjb3JkaW5nIHRvIHJlc3RyaWN0aW9ucywKKyAgICAvLyAgICBzZXQgcGVyc2lzdGVudCBz
dGF0ZSByZXF1aXJlbWVudCB0byAibm90LWFsbG93ZWQiLgorICAgIGlmIChwZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudCA9PSBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgJiYgcmVzdHJpY3Rpb25z
LnBlcnNpc3RlbnRTdGF0ZURlbmllZCkKKyAgICAgICAgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1l
bnQgPSAgQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7CisKKyAgICAvLyAxMC4gRm9sbG93IHRo
ZSBzdGVwcyBmb3IgcGVyc2lzdGVudCBzdGF0ZSByZXF1aXJlbWVudCBmcm9tIHRoZSBmb2xsb3dp
bmcgbGlzdDoKKyAgICBzd2l0Y2ggKHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KSB7CisgICAg
Y2FzZSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ6CisgICAgICAgIC8vIOKGsyAicmVxdWlyZWQi
CisgICAgICAgIC8vIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBlcnNp
c3Rpbmcgc3RhdGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9u
CisgICAgICAgIC8vIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAg
ICAgIGlmICh0aGlzLT5wZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsOgorICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgor
ICAgICAgICAvLyBDb250aW51ZSB3aXRoIHRoZSBmb2xsb3dpbmcgc3RlcHMuCisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKKyAgICAgICAgLy8g
4oazICJub3QtYWxsb3dlZCIKKyAgICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVp
cmVzIHBlcnNpc3Rpbmcgc3RhdGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uCisgICAgICAgIC8vIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0
ZWQKKyAgICAgICAgaWYgKHRoaXMtPnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGFjY3VtdWxh
dGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWly
ZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICAvLyAxMS4gU2V0IHRoZSBwZXJzaXN0ZW50U3RhdGUgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gZXF1YWwgdGhlIHZhbHVlIG9mIHBlcnNpc3RlbnQgc3Rh
dGUgcmVxdWlyZW1lbnQuCisgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRT
dGF0ZSA9IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50OworCisgICAgLy8gMTIuIEZvbGxvdyB0
aGUgc3RlcHMgZm9yIHRoZSBmaXJzdCBtYXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93
aW5nIGxpc3Q6CisgICAgVmVjdG9yPENETVNlc3Npb25UeXBlPiBzZXNzaW9uVHlwZXM7CisKKyAg
ICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmlzRW1wdHkoKSkgewor
ICAgICAgICAvLyDihrMgSWYgdGhlIHNlc3Npb25UeXBlcyBtZW1iZXIgaXMgcHJlc2VudCBbV2Vi
SURMXSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbgorICAgICAgICAvLyBMZXQgc2Vzc2lvbiB0
eXBlcyBiZSBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIHNlc3Npb25UeXBlcyBtZW1iZXIuCisg
ICAgICAgIHNlc3Npb25UeXBlcyA9IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVz
OworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIOKGsyBPdGhlcndpc2UKKyAgICAgICAgLy8gTGV0
IHNlc3Npb24gdHlwZXMgYmUgWyAidGVtcG9yYXJ5IiBdLgorICAgICAgICBzZXNzaW9uVHlwZXMg
PSB7IENETVNlc3Npb25UeXBlOjpUZW1wb3JhcnkgfTsKKyAgICB9CisKKyAgICAvLyAxMy4gRm9y
IGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0eXBlczoKKyAgICBmb3IgKGF1dG8mIHNlc3Npb25UeXBl
IDogc2Vzc2lvblR5cGVzKSB7CisgICAgICAgIC8vIDEzLjEuIExldCBzZXNzaW9uIHR5cGUgYmUg
dGhlIHZhbHVlLgorICAgICAgICAvLyAxMy4yLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9u
J3MgcGVyc2lzdGVudFN0YXRlIHZhbHVlIGlzICJub3QtYWxsb3dlZCIgYW5kIHRoZQorICAgICAg
ICAvLyAgICAgICBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8gYWxnb3JpdGhtIHJldHVybnMg
dHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50
OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxMy4zLiBJZiB0aGUgaW1wbGVt
ZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzZXNzaW9uIHR5cGUgaW4gY29tYmluYXRpb24gd2l0
aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vICAgICAgIGFuZCByZXN0cmlj
dGlvbnMgZm9yIG90aGVyIHJlYXNvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlm
ICghc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKHNlc3Npb25UeXBlLCBhY2N1
bXVsYXRlZENvbmZpZ3VyYXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICAvLyAxMy40IElmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0
ZW50U3RhdGUgdmFsdWUgaXMgIm9wdGlvbmFsIiBhbmQgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRo
ZSBJcworICAgICAgICAvLyAgICAgIHBlcnNpc3RlbnQgc2Vzc2lvbiB0eXBlPyBhbGdvcml0aG0g
b24gc2Vzc2lvbiB0eXBlIGlzIHRydWUsIGNoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9u
J3MgcGVyc2lzdGVudFN0YXRlCisgICAgICAgIC8vICAgICAgdmFsdWUgdG8gInJlcXVpcmVkIi4K
KyAgICAgICAgaWYgKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPT0g
Q0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5cGUp
KQorICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9
IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZDsKKyAgICB9CisKKyAgICAvLyAxNC4gU2V0IHRoZSBz
ZXNzaW9uVHlwZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gc2Vzc2lv
biB0eXBlcy4KKyAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzID0gc2Vz
c2lvblR5cGVzOworCisgICAgLy8gMTUuIElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBhbmQgYXVk
aW9DYXBhYmlsaXRpZXMgbWVtYmVycyBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBhcmUgYm90
aCBlbXB0eSwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KKyAgICBpZiAoY2FuZGlkYXRlQ29uZmlndXJh
dGlvbi52aWRlb0NhcGFiaWxpdGllcy5pc0VtcHR5KCkgJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlv
bi5hdWRpb0NhcGFiaWxpdGllcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAvLyAxNi4g4oazIElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgaW4g
Y2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24gaXMgbm9uLWVtcHR5OgorICAgIGlmICghY2FuZGlkYXRl
Q29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8g
MTYuMS4gTGV0IHZpZGVvIGNhcGFiaWxpdGllcyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0
aGUgR2V0IFN1cHBvcnRlZCBDYXBhYmlsaXRpZXMgZm9yIEF1ZGlvL1ZpZGVvIFR5cGUgYWxnb3Jp
dGhtIG9uCisgICAgICAgIC8vICAgICAgIFZpZGVvLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidz
IHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciwgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwgYW5k
IHJlc3RyaWN0aW9ucy4KKyAgICAgICAgYXV0byB2aWRlb0NhcGFiaWxpdGllcyA9IGdldFN1cHBv
cnRlZENhcGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKEF1ZGlvVmlkZW9UeXBlOjpWaWRlbywg
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcywgYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLCByZXN0cmljdGlvbnMpOworCisgICAgICAgIC8vIDE2LjIuIElmIHZpZGVvIGNh
cGFiaWxpdGllcyBpcyBudWxsLCByZXR1cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoIXZp
ZGVvQ2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICAvLyAxNi4zIFNldCB0aGUgdmlkZW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxh
dGVkIGNvbmZpZ3VyYXRpb24gdG8gdmlkZW8gY2FwYWJpbGl0aWVzLgorICAgICAgICBhY2N1bXVs
YXRlZENvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMgPSBXVEZNb3ZlKHZpZGVvQ2FwYWJp
bGl0aWVzLnZhbHVlKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIDE2LiDihrMgT3RoZXJ3
aXNlOgorICAgICAgICAvLyAgICAgU2V0IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2Yg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBhbiBlbXB0eSBzZXF1ZW5jZS4KKyAgICAgICAg
YWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnZpZGVvQ2FwYWJpbGl0aWVzID0geyB9OworICAgIH0K
KworICAgIC8vIDE3LiDihrMgSWYgdGhlIGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5k
aWRhdGUgY29uZmlndXJhdGlvbiBpcyBub24tZW1wdHk6CisgICAgaWYgKCFjYW5kaWRhdGVDb25m
aWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyAxNy4x
LiBMZXQgYXVkaW8gY2FwYWJpbGl0aWVzIGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBH
ZXQgU3VwcG9ydGVkIENhcGFiaWxpdGllcyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0g
b24KKyAgICAgICAgLy8gICAgICAgQXVkaW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgYXVk
aW9DYXBhYmlsaXRpZXMgbWVtYmVyLCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVz
dHJpY3Rpb25zLgorICAgICAgICBhdXRvIGF1ZGlvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVk
Q2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5cGU6OkF1ZGlvLCBjYW5k
aWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24sIHJlc3RyaWN0aW9ucyk7CisKKyAgICAgICAgLy8gMTcuMi4gSWYgYXVkaW8gY2FwYWJp
bGl0aWVzIGlzIG51bGwsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghYXVkaW9D
YXBhYmlsaXRpZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IC8vIDE3LjMgU2V0IHRoZSBhdWRpb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbiB0byBhdWRpbyBjYXBhYmlsaXRpZXMuCisgICAgICAgIGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcyA9IFdURk1vdmUoYXVkaW9DYXBhYmlsaXRp
ZXMudmFsdWUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gMTcuIOKGsyBPdGhlcndpc2U6
CisgICAgICAgIC8vICAgICBTZXQgdGhlIGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1
bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGFuIGVtcHR5IHNlcXVlbmNlLgorICAgICAgICBhY2N1
bXVsYXRlZENvbmZpZ3VyYXRpb24uYXVkaW9DYXBhYmlsaXRpZXMgPSB7IH07CisgICAgfQorCisg
ICAgLy8gMTguIElmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50
aWZpZXIgdmFsdWUgaXMgIm9wdGlvbmFsIiwgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIGZpcnN0
IG1hdGNoaW5nCisgICAgLy8gICAgIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoK
KyAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9
PSBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwpIHsKKyAgICAgICAgLy8g4oazIElmIHRoZSBpbXBs
ZW1lbnRhdGlvbiByZXF1aXJlcyB1c2UgRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBvciBEaXN0
aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKSBmb3IgYW55IG9mIHRoZQorICAgICAgICAv
LyAgICBjb21iaW5hdGlvbnMgaW4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBp
ZiAoZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJh
dGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpIHsKKyAgICAg
ICAgICAgIC8vIENoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3RpdmVJ
ZGVudGlmaWVyIHZhbHVlIHRvICJyZXF1aXJlZCIuCisgICAgICAgICAgICBhY2N1bXVsYXRlZENv
bmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVp
cmVkOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g4oazIE90aGVyd2lzZQorICAg
ICAgICAgICAgLy8gICAgQ2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5j
dGl2ZUlkZW50aWZpZXIgdmFsdWUgdG8gIm5vdC1hbGxvd2VkIi4KKyAgICAgICAgICAgIGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPSBDRE1SZXF1aXJlbWVu
dDo6Tm90QWxsb3dlZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIDE5LiBJZiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVlIGlzICJvcHRpb25hbCIs
IGZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSBmaXJzdCBtYXRjaGluZworICAgIC8vICAgICBjb25k
aXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgaWYgKGFjY3VtdWxhdGVkQ29uZmln
dXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsKSB7Cisg
ICAgICAgIC8vIOKGsyBJZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBz
dGF0ZSBmb3IgYW55IG9mIHRoZSBjb21iaW5hdGlvbnMgaW4gYWNjdW11bGF0ZWQgY29uZmlndXJh
dGlvbgorICAgICAgICBpZiAodGhpcy0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11
bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1
aXJlZCkgeworICAgICAgICAgICAgLy8gQ2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24n
cyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUgdG8gInJlcXVpcmVkIi4KKyAgICAgICAgICAgIGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPSBDRE1SZXF1aXJlbWVudDo6UmVx
dWlyZWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCisg
ICAgICAgICAgICAvLyAgICBDaGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNp
c3RlbnRTdGF0ZSB2YWx1ZSB0byAibm90LWFsbG93ZWQiLgorICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxv
d2VkOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGlu
IHRoZSBjb25maWd1cmF0aW9uIHNwZWNpZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZh
bHVlcyBpbiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgLy8gICAgIGlzIG5vdCBzdXBw
b3J0ZWQgb3Igbm90IGFsbG93ZWQgaW4gdGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4K
KyAgICBpZiAoIXN1cHBvcnRzQ29uZmlndXJhdGlvbihhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24p
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKChhY2N1bXVsYXRlZENv
bmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1
aXJlZCB8fCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJl
cXVpcmVtZW50OjpSZXF1aXJlZCkgJiYgYWNjZXNzID09IExvY2FsU3RvcmFnZUFjY2Vzczo6Tm90
QWxsb3dlZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBhY2N1
bXVsYXRlZENvbmZpZ3VyYXRpb247CisgICAgLy8gTk9URTogQ29udGludWVkIGluIGdldENvbnNl
bnRTdGF0dXMoKS4KK30KKworT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IENE
TVByaXZhdGU6OmdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKENETVBy
aXZhdGU6OkF1ZGlvVmlkZW9UeXBlIHR5cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxp
dHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRpZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mIHBhcnRpYWxDb25maWd1cmF0aW9uLCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykK
K3sKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3Vw
cG9ydGVkLWNhcGFiaWxpdGllcy1mb3ItYXVkaW8tdmlkZW8tdHlwZQorICAgIC8vIFczQyBFZGl0
b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CisKKyAgICAvLyAzLjEuMS4zIEdldCBTdXBwb3J0
ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlCisKKyAgICAvLyBHaXZlbiBhbiBh
dWRpby92aWRlbyB0eXBlLCBDRE1NZWRpYUNhcGFiaWxpdHkgc2VxdWVuY2UgcmVxdWVzdGVkIG1l
ZGlhIGNhcGFiaWxpdGllcywgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbgorICAgIC8vIHBhcnRp
YWwgY29uZmlndXJhdGlvbiwgYW5kIHJlc3RyaWN0aW9ucywgdGhpcyBhbGdvcml0aG0gcmV0dXJu
cyBhIHNlcXVlbmNlIG9mIHN1cHBvcnRlZCBDRE1NZWRpYUNhcGFiaWxpdHkgdmFsdWVzCisgICAg
Ly8gZm9yIHRoaXMgYXVkaW8vdmlkZW8gdHlwZSBvciBudWxsIGFzIGFwcHJvcHJpYXRlLgorCisg
ICAgLy8gMS4gTGV0IGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBj
b3B5IG9mIHBhcnRpYWwgY29uZmlndXJhdGlvbi4KKyAgICBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiA9IHBhcnRpYWxDb25maWd1cmF0aW9uOworCisg
ICAgLy8gMi4gTGV0IHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMgYmUgYW4gZW1wdHkgc2Vx
dWVuY2Ugb2YgQ0RNTWVkaWFDYXBhYmlsaXR5IGRpY3Rpb25hcmllcy4KKyAgICBWZWN0b3I8Q0RN
TWVkaWFDYXBhYmlsaXR5PiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07CisKKyAgICAv
LyAzLiBGb3IgZWFjaCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVk
aWEgY2FwYWJpbGl0aWVzOgorICAgIGZvciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJl
cXVlc3RlZENhcGFiaWxpdGllcykgeworICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUg
YmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCisgICAg
ICAgIC8vIDMuMi4gTGV0IHJvYnVzdG5lc3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkn
cyByb2J1c3RuZXNzIG1lbWJlci4KKyAgICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0
ZWRDYXBhYmlsaXR5LnJvYnVzdG5lc3M7CisKKyAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5
cGUgaXMgdGhlIGVtcHR5IHN0cmluZywgcmV0dXJuIG51bGwuCisgICAgICAgIGlmIChyZXF1ZXN0
ZWRDYXBhYmlsaXR5LmNvbnRlbnRUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgLy8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52
YWxpZCBvciB1bnJlY29nbml6ZWQgTUlNRSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVy
YXRpb24uCisgICAgICAgIE9wdGlvbmFsPFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9
IFBhcnNlZENvbnRlbnRUeXBlOjpjcmVhdGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlw
ZSwgTW9kZTo6UmZjMjA0NSk7CisgICAgICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRh
aW5lciB0eXBlIHNwZWNpZmllZCBieSBjb250ZW50IHR5cGUuCisgICAgICAgIFN0cmluZyBjb250
YWluZXIgPSBjb250ZW50VHlwZS0+bWltZVR5cGUoKTsKKworICAgICAgICAvLyAzLjYuIElmIHRo
ZSB1c2VyIGFnZW50IGRvZXMgbm90IHN1cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUg
bmV4dCBpdGVyYXRpb24uIFRoZSBjYXNlLXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Yg
c3RyaW5nIGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4K
KyAgICAgICAgLy8gMy43LiBMZXQgcGFyYW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFd
IHBhcmFtZXRlcnMsIGlmIGFueSwgc3BlY2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KKyAgICAgICAg
Ly8gMy44LiBJZiB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUg
cGFyYW1ldGVycywgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAvLyAz
LjkuIExldCBtZWRpYSB0eXBlcyBiZSB0aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3Ry
YWludHMgc3BlY2lmaWVkIGJ5IHBhcmFtZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5CisgICAg
ICAgIC8vICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFw
cHJvcHJpYXRlIFJGQyBvciBvdGhlciBzcGVjaWZpY2F0aW9uLgorICAgICAgICBTdHJpbmcgY29k
ZWNzID0gY29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7CisgICAg
ICAgIGlmIChjb250ZW50VHlwZS0+cGFyYW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgp
ID8gMCA6IDEpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gMy4xMC4gSWYg
bWVkaWEgdHlwZXMgaXMgZW1wdHk6CisgICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAvLyDihrMgSWYgY29udGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVj
aWZpYyBzZXQgb2YgY29kZWNzIGFuZCBjb2RlYyBjb25zdHJhaW50czoKKyAgICAgICAgICAgIC8v
IOKGsyBPdGhlcndpc2U6CisgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICB9
CisKKyAgICAgICAgLy8gMy4xMS4gSWYgY29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1
ZGlvL3ZpZGVvIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKyAgICAgICAg
Ly8gMy4xMi4gSWYgcm9idXN0bmVzcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFp
bnMgYW4gdW5yZWNvZ25pemVkIHZhbHVlIG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQorICAg
ICAgICAvLyAgICAgICBpbXBsZW1lbnRhdGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0
aW9uLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KKyAgICAgICAgaWYgKCFy
b2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAhc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkuY29udGFpbnMo
cm9idXN0bmVzcykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyAzLjEzLiBJ
ZiB0aGUgdXNlciBhZ2VudCBhbmQgaW1wbGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBs
YXliYWNrIG9mIGVuY3J5cHRlZCBtZWRpYSBkYXRhIGZvciB0aGUKKyAgICAgICAgLy8gICAgICAg
Y29tYmluYXRpb24gb2YgY29udGFpbmVyLCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9j
YWwgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpbiBjb21iaW5hdGlvbgorICAgICAgICAvLyAg
ICAgICB3aXRoIHJlc3RyaWN0aW9uczoKKyAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyBwYXJhbWV0ZXJzOworICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShj
b250ZW50VHlwZS0+bWltZVR5cGUoKSk7CisgICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9y
dHNUeXBlKHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3Vw
cG9ydGVkKSB7CisKKyAgICAgICAgICAgIC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKKyAgICAg
ICAgICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICBpZiAo
TWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0
aW9ucyhhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyAzLjEzLjEuIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2Fw
YWJpbGl0eSB0byBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzLgorICAgICAgICBzdXBwb3J0
ZWRNZWRpYUNhcGFiaWxpdGllcy5hcHBlbmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisKKyAgICAg
ICAgLy8gMy4xMy4yLiDihrMgSWYgYXVkaW8vdmlkZW8gdHlwZSBpcyBWaWRlbzoKKyAgICAgICAg
Ly8gICAgICAgICBBZGQgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkgdG8gdGhlIHZpZGVvQ2Fw
YWJpbGl0aWVzIG1lbWJlciBvZiBsb2NhbCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLgorICAg
ICAgICBpZiAodHlwZSA9PSBBdWRpb1ZpZGVvVHlwZTo6VmlkZW8pCisgICAgICAgICAgICBhY2N1
bXVsYXRlZENvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMuYXBwZW5kKHJlcXVlc3RlZENh
cGFiaWxpdHkpOworICAgICAgICAvLyAzLjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlz
IEF1ZGlvOgorICAgICAgICAvLyAgICAgICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0
eSB0byB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNv
bmZpZ3VyYXRpb24uCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmln
dXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcy5hcHBlbmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7Cisg
ICAgfQorCisgICAgLy8gNC4gSWYgc3VwcG9ydGVkIG1lZGlhIGNhcGFiaWxpdGllcyBpcyBlbXB0
eSwgcmV0dXJuIG51bGwuCisgICAgaWYgKHN1cHBvcnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIC8vIDUuIFJldHVybiBz
dXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzLgorICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYUNh
cGFiaWxpdGllczsKK30KKwordm9pZCBDRE1Qcml2YXRlOjpnZXRDb25zZW50U3RhdHVzKENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJlc3Ry
aWN0aW9ucyYmIHJlc3RyaWN0aW9ucywgTG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgQ29uc2Vu
dFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25z
ZW50CisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKworICAgIC8v
IDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQuCisg
ICAgLy8gMjEuIElmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50
aWZpZXIgdmFsdWUgaXMgInJlcXVpcmVkIiBhbmQgdGhlIERpc3RpbmN0aXZlIElkZW50aWZpZXIo
cykgYXNzb2NpYXRlZAorICAgIC8vICAgICB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24g
YXJlIG5vdCB1bmlxdWUgcGVyIG9yaWdpbiBhbmQgcHJvZmlsZSBhbmQgY2xlYXJhYmxlOgorICAg
IGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENE
TVJlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAhZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1
ZVBlck9yaWdpbkFuZENsZWFyYWJsZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKSB7CisgICAg
ICAgIC8vIDIxLjEuIFVwZGF0ZSByZXN0cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25m
aWd1cmF0aW9ucyBkZXNjcmliZWQgYnkgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3Qg
aGF2ZSB1c2VyIGNvbnNlbnQuCisgICAgICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50
aWZpZXJEZW5pZWQgPSB0cnVlOworICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25z
ZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVz
dHJpY3Rpb25zKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtY29uc2VudC1zdGF0dXMKKyAgICAvLyAz
LjEuMS40IEdldCBDb25zZW50IFN0YXR1cworICAgIC8vIEdpdmVuIGFuIGFjY3VtdWxhdGVkIGNv
bmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1
cm5zIHRoZSBjb25zZW50IHN0YXR1cyBmb3IgYWNjdW11bGF0ZWQKKyAgICAvLyBjb25maWd1cmF0
aW9uIGFuZCBvcmlnaW4gYXMgb25lIG9mIENvbnNlbnREZW5pZWQsIEluZm9ybVVzZXIgb3IgQWxs
b3dlZCwgdG9nZXRoZXIgd2l0aCBhbiB1cGRhdGVkIHZhbHVlIGZvciByZXN0cmljdGlvbnMKKyAg
ICAvLyBpbiB0aGUgQ29uc2VudERlbmllZCBjYXNlLgorCisgICAgLy8gMS4gSWYgdGhlcmUgaXMg
cGVyc2lzdGVkIGRlbmlhbCBmb3Igb3JpZ2luIGluZGljYXRpbmcgdGhhdCBhY2N1bXVsYXRlZCBj
b25maWd1cmF0aW9uIGlzIG5vdCBhbGxvd2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAg
ICAvLyAxLjEuIFVwZGF0ZSByZXN0cmljdGlvbnMgdG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlv
bnMgZm9yIHdoaWNoIGNvbnNlbnQgaGFzIGJlZW4gZGVuaWVkLgorICAgIC8vIDEuMi4gUmV0dXJu
IENvbnNlbnREZW5pZWQgYW5kIHJlc3RyaWN0aW9ucy4KKyAgICAvLyAyLiBJZiB0aGVyZSBpcyBw
ZXJzaXN0ZWQgY29uc2VudCBmb3Igb3JpZ2luIGluZGljYXRpbmcgYWNjdW11bGF0ZWQgY29uZmln
dXJhdGlvbiBpcyBhbGxvd2VkLCByZXR1cm4gQWxsb3dlZC4KKyAgICAvLyBOT1RFOiBwZXJzaXN0
ZWQgZGVuaWFsIC8gY29uc2VudCB1bmltcGxlbWVudGVkLgorCisgICAgLy8gMy4gSWYgYW55IG9m
IHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6CisgICAgLy8gICAg4oazIFRoZSBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXIgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3Qt
YWxsb3dlZCIgYW5kIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgVXNlciBBZ2VudCwKKyAgICAvLyAg
ICAgICBpbXBsZW1lbnRhdGlvbiBhbmQgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkb2VzIG5v
dCBmb2xsb3cgYWxsIHRoZSByZWNvbW1lbmRhdGlvbnMgb2YgQWxsb3cgUGVyc2lzdGVudCBEYXRh
IHRvIEJlIENsZWFyZWQKKyAgICAvLyAgICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUg
SWRlbnRpZmllcihzKS4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhhdCBpbXBsZW1lbnRhdGlvbnMg
Zm9sbG93IGFsbCByZWNvbW1lbmRhdGlvbnMuCisKKyAgICAvLyAgICDihrMgVGhlIHVzZXIgYWdl
bnQgcmVxdWlyZXMgZXhwbGljaXQgdXNlciBjb25zZW50IGZvciB0aGUgYWNjdW11bGF0ZWQgY29u
ZmlndXJhdGlvbiBmb3Igb3RoZXIgcmVhc29ucy4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVz
ZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCisKKyAgICAv
LyAzLjEuIFJlcXVlc3QgdXNlciBjb25zZW50IHRvIHVzZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uIGluIHRoZSBvcmlnaW4gYW5kIHdhaXQgZm9yIHRoZSB1c2VyIHJlc3BvbnNlLgorICAgIC8v
ICAgICAgVGhlIGNvbnNlbnQgbXVzdCBpbmNsdWRlIGNvbnNlbnQgdG8gdXNlIGEgRGlzdGluY3Rp
dmUgSWRlbnRpZmllcihzKSBhbmQvb3IgRGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIo
cykgYXMgYXBwcm9wcmlhdGUKKyAgICAvLyAgICAgIGlmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRp
b24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIGlzICJyZXF1aXJlZCIuCisgICAgLy8g
My4yLiBJZiBjb25zZW50IHdhcyBkZW5pZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAg
IC8vIDMuMi4xLiBVcGRhdGUgcmVzdHJpY3Rpb25zIHRvIHJlZmxlY3QgdGhlIGNvbmZpZ3VyYXRp
b25zIGZvciB3aGljaCBjb25zZW50IHdhcyBkZW5pZWQuCisgICAgLy8gMy4yLjEuIFJldHVybiBD
b25zZW50RGVuaWVkIGFuZCByZXN0cmljdGlvbnMuCisgICAgLy8gTk9URTogYXNzdW1lIGltcGxp
ZWQgY29uc2VudCBpZiB0aGUgY29tYmluYXRpb24gb2Ygb3JpZ2luIGFuZCB0b3BPcmlnaW4gYWxs
b3dzIGl0LgorICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVu
dGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiBhY2Nlc3MgPT0gTG9jYWxTdG9y
YWdlQWNjZXNzOjpOb3RBbGxvd2VkKSB7CisgICAgICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2
ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVlOworICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVz
OjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1v
dmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0LiBJ
ZiB0aGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1
cmF0aW9uIGlzIG5vdCAibm90LWFsbG93ZWQiLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICBpZiAo
YWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciAhPSBDRE1SZXF1
aXJlbWVudDo6Tm90QWxsb3dlZCkgeworICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpJ
bmZvcm1Vc2VyLCBXVEZNb3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVz
dHJpY3Rpb25zKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA1LiBJZiB0aGUg
dXNlciBhZ2VudCByZXF1aXJlcyBpbmZvcm1pbmcgdGhlIHVzZXIgZm9yIHRoZSBhY2N1bXVsYXRl
ZCBjb25maWd1cmF0aW9uIGZvciBvdGhlciByZWFzb25zLCByZXR1cm4gSW5mb3JtVXNlci4KKyAg
ICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBpbmZvcm1p
bmcgdGhlIHVzZXIuCisKKyAgICAvLyA2LiBSZXR1cm4gQWxsb3dlZC4KKyAgICBjYWxsYmFjayhD
b25zZW50U3RhdHVzOjpBbGxvd2VkLCBXVEZNb3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiks
IFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCAy
NWY3ODE2YTJmZTFkYTZmOTBjMmZlZjc3NzU1MTQwNmFhMGY0YTAzLi5mOGQyYzEzOWIwN2EzM2M3
YmIzZDMyMzhjNjE4ZTE3ZmI4ZjQzYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC0zMSwyMSArMzEsMzEgQEAKICNp
bmNsdWRlICJDRE1SZXF1aXJlbWVudC5oIgogI2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworc3Ry
dWN0IENETU1lZGlhQ2FwYWJpbGl0eTsKIHN0cnVjdCBDRE1SZXN0cmljdGlvbnM7CiAKLWNsYXNz
IENETVByaXZhdGUgeworY2xhc3MgQ0RNUHJpdmF0ZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
RE1Qcml2YXRlPiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpID0gZGVmYXVs
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5DRE1Qcml2YXRlKCk7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0ID0g
MDsKKyAgICBlbnVtIGNsYXNzIExvY2FsU3RvcmFnZUFjY2VzcyA6IGJvb2wgeworICAgICAgICBO
b3RBbGxvd2VkLAorICAgICAgICBBbGxvd2VkLAorICAgIH07CisKKyAgICB1c2luZyBTdXBwb3J0
ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8Q0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbj4pPjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYg
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTG9jYWxTdG9yYWdlQWNjZXNzLCBTdXBwb3J0ZWRDb25m
aWd1cmF0aW9uQ2FsbGJhY2smJik7CisKKyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0
aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rp
b25zJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3Mo
Y29uc3QgU3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0
b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1l
bnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9u
cyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fy
ZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJikgY29uc3QgPSAwOwpAQCAtNTYsNiArNjYsMzQgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9w
dGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAw
OworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgQ0RNUHJpdmF0ZSgpOworICAgIHN0
YXRpYyBib29sIGlzUGVyc2lzdGVudFR5cGUoQ0RNU2Vzc2lvblR5cGUpOworCisgICAgZW51bSBj
bGFzcyBDb25maWd1cmF0aW9uU3RhdHVzIHsKKyAgICAgICAgU3VwcG9ydGVkLAorICAgICAgICBO
b3RTdXBwb3J0ZWQsCisgICAgICAgIENvbnNlbnREZW5pZWQsCisgICAgfTsKKworICAgIGVudW0g
Y2xhc3MgQ29uc2VudFN0YXR1cyB7CisgICAgICAgIENvbnNlbnREZW5pZWQsCisgICAgICAgIElu
Zm9ybVVzZXIsCisgICAgICAgIEFsbG93ZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQXVk
aW9WaWRlb1R5cGUgeworICAgICAgICBBdWRpbywKKyAgICAgICAgVmlkZW8sCisgICAgfTsKKwor
ICAgIHZvaWQgZG9TdXBwb3J0ZWRDb25maWd1cmF0aW9uU3RlcChDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiYsIExvY2Fs
U3RvcmFnZUFjY2VzcywgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOworICAgIE9w
dGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlv
biwgQ0RNUmVzdHJpY3Rpb25zJiwgTG9jYWxTdG9yYWdlQWNjZXNzKTsKKyAgICBPcHRpb25hbDxW
ZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVk
aW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxp
dHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRpZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mIHBhcnRpYWxDb25maWd1cmF0aW9uLCBDRE1SZXN0cmljdGlvbnMmKTsKKworICAgIHVzaW5n
IENvbnNlbnRTdGF0dXNDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChDb25zZW50U3RhdHVz
LCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIENETVJlc3RyaWN0aW9ucyYmKT47CisgICAg
dm9pZCBnZXRDb25zZW50U3RhdHVzKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVs
YXRlZENvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmLCBMb2NhbFN0b3JhZ2VBY2Nlc3Ms
IENvbnNlbnRTdGF0dXNDYWxsYmFjayYmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCmluZGV4IDY5
YWMxMmQzMTZiZjY2NTdiYjBhMjRkYWY3YWU0ZmEwZmQ0ZjFjOTguLjViMGI3NzgwZDI3ZGZlYjE5
M2RjZTZlY2RhNzE3ODUyOGY3Y2Q1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVxdWlyZW1lbnQuaApAQCAtMzAsOSArMzAsMTEg
QEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQg
eworZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6IHVpbnQ4X3QgewogICAgIFJlcXVpcmVkLAog
ICAgIE9wdGlvbmFsLAogICAgIE5vdEFsbG93ZWQKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xh
c3MgQ0RNUmVxdWlyZW1lbnQgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVJlcXVp
cmVtZW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29y
ZTo6Q0RNUmVxdWlyZW1lbnQsCisgICAgICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpSZXF1
aXJlZCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsLAorICAgICAg
ICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZAorICAgID47Cit9OworCit9CisK
ICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAppbmRleCBj
NTJlMjgyYTEyZTkxYTQ4ODEwYmQxOGI4N2ViNmFkNjM4ZjIxMGE4Li45Y2EyYWM1OWU4YjEzNTQ2
M2E1MmRiNDVlODA3MzFmNTBjNjk0ZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaApAQCAtMzYsNiArMzYs
MzkgQEAgc3RydWN0IENETVJlc3RyaWN0aW9ucyB7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50
aWZpZXJEZW5pZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlRGVuaWVkIHsg
ZmFsc2UgfTsKICAgICBIYXNoU2V0PENETVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vz
c2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4gZGVu
aWVkU2Vzc2lvblR5cGVzOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8
PCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQ7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lz
dGVudFN0YXRlRGVuaWVkOworICAgICAgICBlbmNvZGVyIDw8IGRlbmllZFNlc3Npb25UeXBlczsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9u
YWw8Q0RNUmVzdHJpY3Rpb25zPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAg
ICAgIE9wdGlvbmFsPGJvb2w+IGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAgICAg
ZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQ7CisgICAgICAgIGlmICghZGlz
dGluY3RpdmVJZGVudGlmaWVyRGVuaWVkKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAg
ICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudFN0YXRlRGVuaWVkOworICAgICAgICBpZiAoIXBlcnNp
c3RlbnRTdGF0ZURlbmllZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8SGFzaFNldDxDRE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRIYXNoPENETVNl
c3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+PiBk
ZW5pZWRTZXNzaW9uVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gZGVuaWVkU2Vzc2lvblR5cGVz
OworICAgICAgICBpZiAoIWRlbmllZFNlc3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICAqZGlzdGluY3Rp
dmVJZGVudGlmaWVyRGVuaWVkLAorICAgICAgICAgICAgKnBlcnNpc3RlbnRTdGF0ZURlbmllZCwK
KyAgICAgICAgICAgIFdURk1vdmUoKmRlbmllZFNlc3Npb25UeXBlcyksCisgICAgICAgIH19Owor
ICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oCmluZGV4IDYw
NTc0YTVhNjkzYTk2YzQ5ZjQ5ZmI3MzQ5NmVkNzViN2UxZTZmYmIuLmUwN2MzMDAyNzkzMDVmNzc0
M2YyMmZjZjU0MDZmMmNmYTY4MWRlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaApAQCAtMzAsOSArMzAsMTEg
QEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUg
eworZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4X3QgewogICAgIFRlbXBvcmFyeSwK
ICAgICBQZXJzaXN0ZW50VXNhZ2VSZWNvcmQsCiAgICAgUGVyc2lzdGVudExpY2Vuc2UKQEAgLTQw
LDQgKzQyLDE3IEBAIGVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgewogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkNETVNlc3Npb25UeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUsCisgICAgICAgIFdlYkNvcmU6
OkNETVNlc3Npb25UeXBlOjpUZW1wb3JhcnksCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlOjpQZXJzaXN0ZW50TGljZW5zZQorICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDQ1
MTExZGM3NWI1NTA4MGNlZjRlNWZiMzhhZTI2MzNiMzllYTcyMzMuLmRhYTNjZWMyNTMwNjcxNDBh
MmZlM2I1MjIyOTQ1MGQwODg5MjNmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQ0RNUmVzdHJpY3Rpb25zLmgiCiAjaW5jbHVkZSAiQ0RNU2Vzc2lvblR5cGUu
aCIKKyNpbmNsdWRlICJJbml0RGF0YVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI5MCwx
MCArMjkxLDEzIEBAIGJvb2wgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIENETVByaXZhdGVDbGVhcktleTo6Q0RNUHJpdmF0ZUNs
ZWFyS2V5KCkgPSBkZWZhdWx0OwogQ0RNUHJpdmF0ZUNsZWFyS2V5Ojp+Q0RNUHJpdmF0ZUNsZWFy
S2V5KCkgPSBkZWZhdWx0OwogCi1ib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0
RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0
b21TdHJpbmc+IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNv
bnN0CiB7Ci0gICAgLy8gYGtleWlkc2AgYW5kICdjZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVk
IGluaXQgZGF0YSB0eXBlLgotICAgIHJldHVybiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoaW5pdERhdGFUeXBlLCAiY2VuYyIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGluaXREYXRhVHlwZSwgIndlYm0iKSk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgSW5pdERhdGFS
ZWdpc3RyeTo6a2V5aWRzTmFtZSgpLAorICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFt
ZSgpLAorICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5Ojp3ZWJtTmFtZSgpLAorICAgIH07CiB9CiAK
IHN0YXRpYyBib29sIGNvbnRhaW5zUGVyc2lzdGVudExpY2Vuc2VUeXBlKGNvbnN0IFZlY3RvcjxD
RE1TZXNzaW9uVHlwZT4mIHR5cGVzKQpAQCAtMzM3LDcgKzM0MSw3IEBAIGJvb2wgQ0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENE
TUtleVN5c3RlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5
OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNl
c3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KSBjb25zdAorYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgLy8g
T25seSBzdXBwb3J0IHRoZSAndGVtcG9yYXJ5JyBhbmQgJ3BlcnNpc3RlbnQtbGljZW5zZScgc2Vz
c2lvbiB0eXBlcy4KICAgICBpZiAoc2Vzc2lvblR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlRlbXBv
cmFyeSAmJiBzZXNzaW9uVHlwZSAhPSBDRE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2Up
CkBAIC0zNDUsMTAgKzM0OSwxMCBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNT
ZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBzZQogICAgIHJldHVy
biBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJp
dmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNz
KSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVk
Um9idXN0bmVzc2VzKCkgY29uc3QKIHsKICAgICAvLyBPbmx5IGVtcHR5IGByb2J1c3RuZXNzYCBz
dHJpbmcgaXMgc3VwcG9ydGVkLgotICAgIHJldHVybiByb2J1c3RuZXNzLmlzRW1wdHkoKTsKKyAg
ICByZXR1cm4geyBlbXB0eUF0b20oKSB9OwogfQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMp
IGNvbnN0CkBAIC00MzIsMzQgKzQzNiwyMCBAQCBPcHRpb25hbDxTdHJpbmc+IENETVByaXZhdGVD
bGVhcktleTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCiAKIENE
TUluc3RhbmNlQ2xlYXJLZXk6On5DRE1JbnN0YW5jZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1D
RE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikKK3ZvaWQg
Q0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgZGlz
dGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVudFN0YXRl
LCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICAvLyBOby1vcC4KLSAgICByZXR1
cm4gU3VjY2VlZGVkOwotfQotCi1DRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNl
Q2xlYXJLZXk6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCkK
LXsKLSAgICAvLyBSZWplY3Qgc2V0dGluZyBkaXN0aW5jdGl2ZSBpZGVudGlmaWVycyBhcyBhbGxv
d2VkLgotICAgIHJldHVybiAhYWxsb3dlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKLX0KLQotQ0RN
SW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRQZXJzaXN0ZW50
U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dlZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGluZyBwZXJz
aXN0ZW50IHN0YXRlIGFzIGFsbG93ZWQuCi0gICAgcmV0dXJuICFhbGxvd2VkID8gU3VjY2VlZGVk
IDogRmFpbGVkOworICAgIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQgPSAoZGlzdGluY3RpdmVJZGVu
dGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnM6Ok5vICYmIHBlcnNpc3RlbnRT
dGF0ZSA9PSBBbGxvd1BlcnNpc3RlbnRTdGF0ZTo6Tm8pID8gU3VjY2VlZGVkIDogRmFpbGVkOwor
ICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUg
Q0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4mJikKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8g
UmVqZWN0IHNldHRpbmcgYW55IHNlcnZlciBjZXJ0aWZpY2F0ZS4KLSAgICByZXR1cm4gRmFpbGVk
OworICAgIGNhbGxiYWNrKEZhaWxlZCk7CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUg
Q0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHN0
b3JhZ2VEaXJlY3RvcnkpCit2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJikKIHsKLSAgICAvLyBSZWplY3QgYW55IHBlcnNpc3RlbnQgc3Rh
dGUgc3RvcmFnZS4KLSAgICByZXR1cm4gc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkgPyBTdWNj
ZWVkZWQgOiBGYWlsZWQ7CiB9CiAKIGNvbnN0IFN0cmluZyYgQ0RNSW5zdGFuY2VDbGVhcktleTo6
a2V5U3lzdGVtKCkgY29uc3QKQEAgLTQ5OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaQogICAgICAgICB9KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogI2lmIExPR19ESVNBQkxF
RAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRo
ZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJlY2F1c2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5oCmluZGV4IDY3MDRhZTdhOTU3ZjMyZmUxZjg0OTgzZWQzYjNmNjUwMmE1MzE1YTIu
LjY2OTdhMDQ1NWJlZjI5MTU1YmY1OTAzODRmNTJmMDQyOTFhZGMwN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaApAQCAtNzQsMTEgKzc0LDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcml2YXRl
Q2xlYXJLZXkoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKIAotICAgIGJv
b2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOwor
ICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmlu
YWw7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJh
dGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNv
bnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNTZXNz
aW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3Ru
ZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9u
VHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIENETVJlcXVpcmVtZW50IGRp
c3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgQ0RNUmVx
dWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CkBAIC05NywxMSAr
OTcsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9u
VHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRh
dGlvblR5cGU6OkNsZWFyS2V5OyB9Ci0gICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7Ci0gICAg
U3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIGZpbmFs
OwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIGZpbmFs
OwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJz
LCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAg
IFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIH07CkBA
IC0xMTEsNyArMTA5LDcgQEAgcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5
KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBtX3BhcmVudEluc3RhbmNl
KHBhcmVudCkgeyB9CiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNs
b3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDU3ZGZjYmY0YmM3YzQ4ODQ0
ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIuLmRiMGIyZjhhN2UwZjI2OTZhMWQ4ZGI2ZjRkNGY0N2Fh
ZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2NTcsMTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6YXR0ZW1w
dFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiAKICNlbmRpZgog
CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVk
KGJvb2wgc2hvdWxkKQoreworICAgIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCA9IHNo
b3VsZDsKKyAgICBtX3ByaXZhdGUtPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hv
dWxkKTsKK30KKyNlbmRpZgorCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5kdXJhdGlvbk1lZGlhVGltZSgpOwpAQCAtMTMx
Miw5ICsxMzIwLDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBNZWRpYVBsYXllcjo6Y2FjaGVkS2V5
Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50KCku
bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChrZXlJZCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5
ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXI6Omtl
eU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVk
aWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERhdGEpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyS2V5
TmVlZGVkKGluaXREYXRhKTsKIH0KIAogU3RyaW5nIE1lZGlhUGxheWVyOjptZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCmluZGV4IDdlNmNiOGEzOTBkZjdmZTFhN2FhZTAxNzM5ZGM5NDhmNzc2
NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBjNTY5ZTY3YTQxZTEyMGI3NjQwZWZhNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjAwLDcg
KzIwMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQog
ICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktl
eUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSopIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IH0K
ICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAjZW5kaWYKIApAQCAtMzY2LDYgKzM2
NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENE
TUluc3RhbmNlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVB
ZnRlcktleU5lZWRlZChib29sKTsKKyAgICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVk
ZWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQ7IH0KKyNl
bmRpZgorCiAgICAgYm9vbCBwYXVzZWQoKSBjb25zdDsKICAgICBib29sIHNlZWtpbmcoKSBjb25z
dDsKIApAQCAtNTE5LDcgKzUyNCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SWQo
Y29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3Q7Ci0gICAgYm9vbCBrZXlOZWVkZWQoVWludDhBcnJh
eSogaW5pdERhdGEpOworICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsK
ICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogI2VuZGlmCiAK
QEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVhbTsKICNlbmRpZgorI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyNl
bmRpZgogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggOWY3
ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0YjBkY2ExY2MxNzVhOC4uN2E4MjA0NzBmOTk5YWM5OWE2
YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI0Myw2ICsyNDMsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZENvbnRp
bnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkgeyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCA0ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3
ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJhYmZjZGU1YTBkNGI4MTE4ZDAzY2M5MmYxZDYxOWQ2MWQ3
N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI0
Nyw5ICsyNDcsOSBAQCBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVm
YXVsdDsKIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERh
dGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxBdG9t
U3RyaW5nPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlw
ZXMoKSBjb25zdAogewotICAgIHJldHVybiB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhp
bml0RGF0YVR5cGUpOworICAgIHJldHVybiBjb3B5VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5cGVz
KCkpOwogfQogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25m
aWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
IGNvbnN0CkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0QKICAgICBy
ZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uKENETVNlc3Npb25UeXBlJiBzZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RN
U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKSBjb25zdAogewogICAgIGlmIChzZXNzaW9uVHlwZSA9PSBDRE1TZXNz
aW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3Rl
bnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCkBAIC0zMTYsMTMgKzMxNiwxMCBA
QCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKENETVNlc3NpbwogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVj
dG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVkUm9i
dXN0bmVzc2VzKCkgY29uc3QKIHsKLSAgICBpZiAocm9idXN0bmVzcy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCiAgICAgLy8gRklYTUU6IERldGVybWluZSBhbiBlbnVtZXJhdGVk
IGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1ZXMgc3VwcG9ydGVkIGJ5IEZQUy4KLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHsgZW1wdHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQg
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWly
ZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0
aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyArMzYzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogCiBib29sIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFz
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghdmFsaWRJbml0RGF0
YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBzaW5mTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IDUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZk
MTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFkN2FmYmFlMmQyYzU2MTJmODRiNDM0YzBmMTBmNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC01NSwxMSArNTUsMTEg
QEAgcHVibGljOgogICAgIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1
YWwgfkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogCi0gICAgYm9vbCBzdXBwb3J0c0lu
aXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRo
UmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1S
ZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5
cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVz
cyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lv
blR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0
cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0RNUmVx
dWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlk
ZTsKICAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3Jp
Z2luQW5kQ2xlYXJhYmxlKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDcwZWFjMzZhNDc5NzgxNWExYWYyNGUyZDU3
YjAyMjZmYjQ5NzljNDYuLjVkOWE5YTBhZjU3NTNhMTBiMmRkMTdjMWU5NWI3OTQyYTE0MTgyNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTkzMSw5ICsxOTMxLDcgQEAgYm9vbCBBVkZXcmFwcGVy
OjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdFIKIAogICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXIt
PmJ5dGVMZW5ndGgoKTsKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICgh
bV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KKyAgICAgICAgbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChp
bml0RGF0YS5wdHIoKSk7CiAgICAgICAgIHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJLCBhdlJlcXVl
c3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApp
bmRleCBiMTFmNzFhOWI1ZTM4YmY2OThiMTM5NDlkZGRlODZmM2RkOTk0Y2MxLi4wMGI2ZmI4MjIw
Y2E3ZjA1YzA5MWYyNjUzODZlMjk5MmY0MGU2M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgK
QEAgLTc0LDExICs3NCw5IEBAIHB1YmxpYzoKIAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBs
ZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6
OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAKLSAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKLSAg
ICBTdWNjZXNzVmFsdWUgc2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkgZmlu
YWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmlu
YWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmll
cnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
KSBmaW5hbDsKIAogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CkBA
IC0xMjAsNyArMTE4LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAg
ICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
TG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25z
dCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3MzI2Nzc1
ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0NjQ3Y2I4ZDMxLi4yYThiYjM4YzcwMzMwN2E3MmE3MTM1
MTNmYTZiMjM4NDE0M2FhMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjY4LDcy
ICsyNjgsNjMgQEAgYm9vbCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3Vw
cG9ydHNNZWRpYUNhcGFiaWxpdHkoY29uc3QgQ0RNTWVkaWEKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBwZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiB2ZXJpZnkgdGhhdCBGYWlyUGxheVN0cmVh
bWluZyBkb2VzIG5vdCAoYW5kIGNhbm5vdCkgZXhwb3NlIGEgZGlzdGluY3RpdmUgaWRlbnRpZmll
ciB0byB0aGUgY2xpZW50Ci0gICAgaWYgKGNvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlm
aWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsK
LQotICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSAhPSBDRE1SZXF1aXJlbWVu
dDo6UmVxdWlyZWQgJiYgKGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNl
c3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQpIHx8IGNvbmZpZ3VyYXRpb24uc2Vzc2lv
blR5cGVzLmNvbnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkpKQotICAg
ICAgICByZXR1cm4gRmFpbGVkOwotCi0gICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0
YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAhbV9zdG9yYWdlVVJMKQotICAgICAg
ICByZXR1cm4gRmFpbGVkOworICAgIGF1dG8gaW5pdGlhbGl6ZSA9IFsmXSAoKSB7CisgICAgICAg
IGlmIChjb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVu
dDo6UmVxdWlyZWQpCisgICAgICAgICAgICByZXR1cm4gRmFpbGVkOwogCi0gICAgaWYgKGNvbmZp
Z3VyYXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50
TGljZW5zZSkgJiYgIXN1cHBvcnRzUGVyc2lzdGVudEtleXMoKSkKLSAgICAgICAgcmV0dXJuIEZh
aWxlZDsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlICE9IENETVJl
cXVpcmVtZW50OjpSZXF1aXJlZCAmJiAoY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFp
bnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZCkgfHwgY29uZmlndXJhdGlv
bi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNl
KSkpCisgICAgICAgICAgICByZXR1cm4gRmFpbGVkOwogCi0gICAgaWYgKCFQQUw6OmNhbkxvYWRf
QVZGb3VuZGF0aW9uX0FWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCkpCi0gICAg
ICAgIHJldHVybiBGYWlsZWQ7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRT
dGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQgJiYgIW1fc3RvcmFnZVVSTCkKKyAgICAg
ICAgICAgIHJldHVybiBGYWlsZWQ7CiAKLSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQorICAgICAg
ICBpZiAoY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6
OlBlcnNpc3RlbnRMaWNlbnNlKSAmJiAhc3VwcG9ydHNQZXJzaXN0ZW50S2V5cygpKQorICAgICAg
ICAgICAgcmV0dXJuIEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0Fs
bG93ZWQoYm9vbCkKLXsKLSAgICAvLyBGSVhNRTogdmVyaWZ5IHRoYXQgRmFpclBsYXlTdHJlYW1p
bmcgZG9lcyBub3QgKGFuZCBjYW5ub3QpIGV4cG9zZSBhIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIg
dG8gdGhlIGNsaWVudAotICAgIHJldHVybiBTdWNjZWVkZWQ7Ci19CisgICAgICAgIGlmICghUEFM
OjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWlu
ZygpKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NW
YWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0UGVyc2lzdGVudFN0
YXRlQWxsb3dlZChib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpCi17Ci0gICAgbV9wZXJzaXN0
ZW50U3RhdGVBbGxvd2VkID0gcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsKLSAgICByZXR1cm4gU3Vj
Y2VlZGVkOworICAgICAgICBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3Rh
dGUgPT0gQWxsb3dQZXJzaXN0ZW50U3RhdGU6OlllczsKKyAgICAgICAgcmV0dXJuIFN1Y2NlZWRl
ZDsKKyAgICB9OworICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLUNETUluc3RhbmNl
OjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNl
cnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUpCit2
b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBtX3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2
ZXJDZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICBjYWxsYmFjayhTdWNj
ZWVkZWQpOwogfQogCi1DRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgc3Rv
cmFnZURpcmVjdG9yeSkKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KQogewog
ICAgIGlmIChzdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewogICAgICAgICBtX3N0b3JhZ2VV
UkwgPSBuaWw7Ci0gICAgICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBhdXRvIHN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAKICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKICAgICAgICAg
aWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCi0g
ICAgICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxz
ZSBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5LCBGaWxl
U3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpKSB7CiAgICAgICAgIGF1dG8g
dGVtcERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIk1l
ZGlhS2V5cyIpOwogICAgICAgICBpZiAoIXRlbXBEaXJlY3RvcnkpCi0gICAgICAgICAgICByZXR1
cm4gRmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gdGVtcFN0b3Jh
Z2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBEaXJlY3Rv
cnksIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShzdG9yYWdlUGF0aCkpOwogICAgICAgICBp
ZiAoIUZpbGVTeXN0ZW06Om1vdmVGaWxlKHN0b3JhZ2VEaXJlY3RvcnksIHRlbXBTdG9yYWdlUGF0
aCkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6bW92ZUZpbGUodGVtcERpcmVjdG9yeSwgc3RvcmFnZURp
cmVjdG9yeSkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIG1fc3RvcmFnZVVSTCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5p
dEZpbGVVUkxXaXRoUGF0aDpzdG9yYWdlUGF0aCBpc0RpcmVjdG9yeTpOT10pOwotICAgIHJldHVy
biBTdWNjZWVkZWQ7CiB9CiAKIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKCkKQEAgLTU4MCw3ICs1NzEs
NyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUo
KSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURh
dGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CkBAIC03MTEsNyArNzAyLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0gZWxzZQotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0
KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9j
dXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlS
ZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJl
c3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1
NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5
UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIHN0cnVjdCBvYmpjX21l
dGhvZF9kZXNjcmlwdGlvbiBtZXRob2QgPSBwcm90b2NvbF9nZXRNZXRob2REZXNjcmlwdGlvbihA
cHJvdG9jb2woQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9yKGNvbnRlbnRL
ZXlTZXNzaW9uOmNvbnRlbnRLZXlSZXF1ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVTKTsKQEAgLTEx
NDAsNyArMTEzMSw4IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fc2Vzc2lvbklkID0gc2Vzc2lvbklkOwotICAgIG1fY2xpZW50LT5zZXNzaW9uSWRD
aGFuZ2VkKG1fc2Vzc2lvbklkKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFu
Z2VkKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKiBncm91cCwgTlNEYXRhICpzZXNzaW9uSWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGIzN2M0NDExMzE0OTg4Nzk1NDZlYzhh
NTdhMGRkOGUxMWY3ODQ2OTcuLmViYTZlNzUyYmZiZTYzN2ZkZmMzZTg4NWNhZWQyYzZjNjZkNmRk
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTY3OCw4ICsxNjc4LDExIEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdP
ZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdW
aWV3KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNp
emVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CiAKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0g
ICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEu
cHRyKCkpOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgICAgIGlmICghcGxheWVy
KCktPnNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhB
VkUoQVZDT05URU5US0VZU0VTU0lPTikKQEAgLTE3MTMsNyArMTcxNiw5IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291
cmNlKEFWQXNzZXRSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBw
bGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLnB0cigpKTsKKworICAgICAgICBpZiAoIXBsYXll
cigpLT5zaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAgICAgbV9rZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleUlELCBhdlJlcXVl
c3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCBjZTVk
OGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2ZDcxYjM2OTY2MzJkLi44OTE5NjRiYWQ1NTA0OTNkY2Q3
YjgxOGY3MDBhZWViZjdjYmYyYzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcApAQCAtOTgsNiArOTgsMTEgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3Vw
cG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJpbmc+JiYgdHlwZXMpCiAgICAgICAgIG1fc3VwcG9y
dGVkRGF0YVR5cGVzLmFwcGVuZCh0eXBlKTsKIH0KIAordm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0
U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3NlcykKK3sKKyAg
ICBtX3N1cHBvcnRlZFJvYnVzdG5lc3MgPSByb2J1c3RuZXNzZXMubWFwKFtdIChhdXRvJiByb2J1
c3RuZXNzKSAtPiBBdG9tU3RyaW5nIHsgcmV0dXJuIHJvYnVzdG5lc3M7IH0pOworfQorCiBzdGQ6
OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBT
dHJpbmcmKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0
aGlzKSk7CkBAIC0xMDgsMTEgKzExMywxOCBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9j
a0NETUZhY3Rvcnk+IGZhY3RvcnkpCiB7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0
RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0
b21TdHJpbmc+IE1vY2tDRE06OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAoreworICAg
IGlmIChtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFU
eXBlcygpOworICAgIHJldHVybiB7IH07Cit9CisKK1ZlY3RvcjxBdG9tU3RyaW5nPiBNb2NrQ0RN
OjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCi0g
ICAgICAgIHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGlu
aXREYXRhVHlwZSk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9mYWN0b3J5
LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBNb2Nr
Q0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdApAQCAtMTM5LDcgKzE1MSw3IEBAIGJvb2wgTW9ja0NE
TTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Np
b25UeXBlLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAorYm9vbCBN
b2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFL
ZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9y
dGVkU2Vzc2lvblR5cGVzKCkuY29udGFpbnMoc2Vzc2lvblR5cGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xNDgsMTMgKzE2MCw2IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9u
VHlwZVdpdGhDb25maWd1cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0
IFN0cmluZyYgcm9idXN0bmVzcykgY29uc3QKLXsKLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAg
ICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0
bmVzcyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBNZWRpYUtleXNSZXF1aXJlbWVudCBNb2Nr
Q0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QKIHsK
ICAgICBpZiAobV9mYWN0b3J5KQpAQCAtMTk5LDcgKzIwNCw3IEBAIGJvb2wgTW9ja0NETTo6c3Vw
cG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUp
KQorICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlw
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YSk7
CkBAIC0yMzEsNTUgKzIzNiw0OCBAQCBNb2NrQ0RNSW5zdGFuY2U6Ok1vY2tDRE1JbnN0YW5jZShX
ZWFrUHRyPE1vY2tDRE0+IGNkbSkKIHsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBN
b2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCit2b2lkIE1vY2tDRE1JbnN0YW5j
ZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFtX2NkbSB8fCAhbV9jZG0t
PnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIEZh
aWxlZDsKKyAgICBhdXRvIGluaXRpYWxpemUgPSBbJl0geworICAgICAgICBpZiAoIW1fY2RtIHx8
ICFtX2NkbS0+c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKQorICAgICAgICAg
ICAgcmV0dXJuIEZhaWxlZDsKIAotICAgIHJldHVybiBTdWNjZWVkZWQ7Ci19CisgICAgICAgIE1v
Y2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0
cjsKKyAgICAgICAgaWYgKCFmYWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAot
Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldERpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi17
Ci0gICAgaWYgKG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgPT0gZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FsbG93ZWQpCi0gICAgICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgICAgIGJv
b2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVy
cyA9PSBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnM6Olllcyk7CiAKLSAgICBhdXRvKiBmYWN0
b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKG1f
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgIT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fs
bG93ZWQpIHsKKyAgICAgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQg
JiYgZmFjdG9yeS0+ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KCkgPT0gTWVkaWFL
ZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7
CiAKLSAgICBpZiAoIWZhY3RvcnkgfHwgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCAm
JiBmYWN0b3J5LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtl
eXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpKQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAg
ICAgICAgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCA9IGRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNBbGxvd2VkOworICAgICAgICB9CiAKLSAgICBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNB
bGxvd2VkID0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQ7Ci0gICAgcmV0dXJuIFN1Y2Nl
ZWRlZDsKLX0KKyAgICAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gKHBlcnNpc3Rl
bnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3RlbnRTdGF0ZTo6WWVzKTsKIAotQ0RNSW5zdGFuY2U6OlN1
Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9v
bCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKQotewotICAgIGlmIChtX3BlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQgPT0gcGVyc2lzdGVudFN0YXRlQWxsb3dlZCkKLSAgICAgICAgcmV0dXJuIFN1Y2NlZWRl
ZDsKKyAgICAgICAgaWYgKG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCAhPSBwZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKSB7CisgICAgICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYg
ZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJl
bWVudDo6UmVxdWlyZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAgIE1v
Y2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0
cjsKLQotICAgIGlmICghZmFjdG9yeSB8fCAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFj
dG9yeS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVu
dDo6UmVxdWlyZWQpKQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9wZXJz
aXN0ZW50U3RhdGVBbGxvd2VkID0gcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gU3VjY2VlZGVkOworICAgIH07CiAKLSAgICBtX3BlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkOwotICAgIHJldHVybiBTdWNjZWVkZWQ7
CisgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NW
YWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUpCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlm
aWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKLSAgICBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpKQotICAgICAgICBy
ZXR1cm4gU3VjY2VlZGVkOwotICAgIHJldHVybiBGYWlsZWQ7CisgICAgY2FsbGJhY2soZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5z
dGFuY2U6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikKK3ZvaWQgTW9ja0NETUlu
c3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgLy8gT24g
ZGlzayBzdG9yYWdlIGlzIHVudXNlZDsgbm8tb3AuCi0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKIH0K
IAogY29uc3QgU3RyaW5nJiBNb2NrQ0RNSW5zdGFuY2U6OmtleVN5c3RlbSgpIGNvbnN0CkBAIC0z
MjUsNyArMzIzLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Np
b25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RN
SW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBM
aWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0
b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzMzLDcgKzMzMSw3IEBA
IHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBW
ZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZl
Y3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgn
ICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1m
b3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDM5OTA5YjkzMDNhOTRjOTM2OGVhYTBm
NjI1ZjRiNjdlNTI1MDU5ZjEuLjM3MGI2ZTI4MGQ5MWRiYTY3OWFiNDBjNWM2NDY0Y2NiYzM5MDI2
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTUyLDggKzUy
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3Vw
cG9ydGVkU2Vzc2lvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlw
ZXM7IH0KICAgICB2b2lkIHNldFN1cHBvcnRlZFNlc3Npb25UeXBlcyhWZWN0b3I8TWVkaWFLZXlT
ZXNzaW9uVHlwZT4mJiB0eXBlcykgeyBtX3N1cHBvcnRlZFNlc3Npb25UeXBlcyA9IFdURk1vdmUo
dHlwZXMpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVz
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsgfQotICAgIHZvaWQgc2V0
U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3MpIHsgbV9zdXBw
b3J0ZWRSb2J1c3RuZXNzID0gV1RGTW92ZShyb2J1c3RuZXNzKTsgfQorICAgIGNvbnN0IFZlY3Rv
cjxBdG9tU3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vw
cG9ydGVkUm9idXN0bmVzczsgfQorICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmKTsKIAogICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRl
bnRpZmllcnNSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50OyB9CiAgICAgdm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVx
dWlyZW1lbnQoTWVkaWFLZXlzUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpIHsgbV9kaXN0aW5jdGl2
ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQgPSByZXF1aXJlbWVudDsgfQpAQCAtOTAsNyArOTAsNyBA
QCBwcml2YXRlOgogICAgIE1lZGlhS2V5c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQgeyBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBWZWN0b3I8
QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWREYXRhVHlwZXM7CiAgICAgVmVjdG9yPE1lZGlhS2V5U2Vz
c2lvblR5cGU+IG1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IG1f
c3VwcG9ydGVkUm9idXN0bmVzczsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRS
b2J1c3RuZXNzOwogICAgIFZlY3RvcjxNZWRpYUtleUVuY3J5cHRpb25TY2hlbWU+IG1fc3VwcG9y
dGVkRW5jcnlwdGlvblNjaGVtZXM7CiAgICAgYm9vbCBtX3JlZ2lzdGVyZWQgeyB0cnVlIH07CiAg
ICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKQEAgLTk5LDcgKzk5LDcgQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4g
bV9zZXNzaW9uczsKIH07CiAKLWNsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPE1vY2tDRE0+IHsKK2NsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RN
UHJpdmF0ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9j
a0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5Pik7CkBAIC0xMDksMTEgKzEwOSwxMSBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNb2NrQ0RNSW5zdGFuY2U7CiAKLSAgICBi
b29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBmaW5hbDsK
KyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZp
bmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25z
dCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmln
dXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYs
IGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJv
b2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U2Vz
c2lvblR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5h
bDsKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWly
ZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlz
UmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVy
c2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwpAQCAtMTM4LDExICsx
MzgsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxl
bWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6
TW9jazsgfQotICAgIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVl
IHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nl
c3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nl
c3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
LSAgICBTdWNjZXNzVmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5h
bDsKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVy
c2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENE
TUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogCkBAIC0xNTcsNyArMTU1
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBM
aWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmNwcAppbmRleCA1ZWZlNjYyNWQ2ZjJmOTBhZGVkNzdkOGM1NTk3ZGYzYzc4OGYzMWRiLi41
YjBmYTE5Y2UyZWIyZTNlODM5MDE0OGUxNTY2NDg3ZGMwODkzYjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwCkBAIC00OTAsMTAgKzQ5MCw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQoVWludDhBcnJheSopCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1l
ZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE2YmIy
ZGRmYTIxNDc0NzBlODYwMGFiNzEzOTZhNTljZGY1NDQ5ZmEuLjRhNzM5ZmI0ZjliNWQ2NzNkNGU5
ZjJiNWFmNTM5NTFlM2VlZGQwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMTY4LDcgKzE2OCw3IEBA
IHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5n
JikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5
KikgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmlu
YWw7CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCiAKQEAgLTI1Miw2ICsyNTIsMTAgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpMYXlvdXRSZWN0IG1fdmlkZW9Db250ZW50Qm94UmVjdDsKICAgICBmbG9hdCBtX3Zp
ZGVvQ29udGVudFNjYWxlIHsgMS4wIH07CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBib29sIG1fc2hvdWxkQ29udGlu
dWVBZnRlcktleU5lZWRlZCB7IGZhbHNlIH07CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbV9sb2dnZXI7CiAjZW5kaWYK
</data>
<flag name="review"
          id="407137"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391623</attachid>
            <date>2020-02-24 22:18:02 -0800</date>
            <delta_ts>2020-02-28 10:33:02 -0800</delta_ts>
            <desc>Part 2: WebKit + SharedBuffer</desc>
            <filename>bug-208090-20200224221801.patch</filename>
            <type>text/plain</type>
            <size>30732</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY2YWQ5YzlmY2M2NjFjMTQ1
ODE4YTU3OGU4MWI2YzdmYjdmNDA0NWQuLjhmNTVlNWM5ODQxOTdlYjI5ZjAwMWM3YjE1NTNjZTlm
ZmY1MDIxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDItMjMgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rl
cm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSBpcyBtYWRlIG1vcmUgZWZmaWNpZW50IGJ5IHVzaW5nIHRoZSBzYW1lIGVu
Y29kZS9kZWNvZGUgcGF0aCBhcyBpcyB1c2VkIGluCisgICAgICAgIFdlYkNvcmVBcmd1bWVudENv
ZGVyczogdGhlIFNoYXJlZEJ1ZmZlciBpcyBjb3BpZWQgaW50byBzaGFyZWQgbWVtb3J5LCBhbmQg
b25seSBhIGhhbmRsZSBpcyBwYXNzZWQgYWNyb3NzCisgICAgICAgIHRoZSBYUEMgYm91bmRhcnku
IFRoaXMgcmVxdWlyZXMgZXhpc3RpbmcgdXNlcnMgdG8gaGFuZGxlIHJlY2VpdmluZyBhIElQQzo6
U2hhcmVkQnVmZmVyRGF0YUhhbmRsZSBvbiB0aGUKKyAgICAgICAgcmVtb3RlIHNpZGUgb2YgdGhl
IFhQQyBib3VuZGFyeSwgYnV0IHRoaXMgaXMgdHJpdmlhbCwgYW5kIG1hbnkgY2FsbCBzaXRlcyBy
ZXF1aXJlIGEgU2hhcmVkQnVmZmVyIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBpbiB0aGUg
Zmlyc3QgcGxhY2UuIFRoaXMgY29kZSBjb3VsZCBiZSBpbXByb3ZlZCBieSBhbGxvd2luZyB0aGUg
U2hhcmVkTWVtb3J5IG9iamVjdCBiZSBhZG9wdGVkCisgICAgICAgIGJ5IHRoZSBTaGFyZWRCdWZm
ZXIgb2JqZWN0IGF0IGNyZWF0aW9uIHRpbWUsIGxlYWRpbmcgdG8gemVyby1jb3B5IGRlY29kaW5n
LCBidXQgaXMgbm90IGRvbmUgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVy
QXR0YWNobWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1l
VGFza0RpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2Vy
dEF0dGFjaG1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
IDIwMjAtMDItMjMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVVBdIEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA2NzJiZWM0OGVhNzljNjgy
YzEyNDVlNTI2ZjA0ODhjNjc5OTY4MGI3Li41M2E4MDc4MTdiMmE2YjFkZGY1MTM0NTg2ZWYyZTcx
MDJmNjgyNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC0xNDksMTMgKzE0OSwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvbwogICAgIHNlbmRUb0Ns
aWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJl
c3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKIH0KIAot
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBp
ZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV90aW1lb3V0VGlt
ZXIuaXNBY3RpdmUoKSk7Ci0gICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyBk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisgICAgc2Vu
ZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBk
YXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9y
bURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkMzNjYmZm
MTA4OWNjMTA1ZGQxYTAwYmViZmRmNjFkMzNjN2Y2NmJkLi41MDgwMGYzNTAyMjM2MmY5NmNhMjFi
NWU3ZWJkMDdkOGQ0MmEyZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFS
ZWZlcmVuY2U7CiB9CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAg
ICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgK
aW5kZXggYTc0OWFhYjg3MDA1NGNlYjY5MGU1ZjE0ZjQwNzU2M2ZmY2QwZjliOC4uODhmNGYyZmE2
NDI2MzM0OWI3YWQyMmQwNmY0M2EyN2Y3MjMzNTFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtOTYsMTIgKzk2LDYgQEAgc3RydWN0IENvZGluZ1R5
cGUgewogICAgIHR5cGVkZWYgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVu
Y2VfdDxUPj4gVHlwZTsKIH07CiAKLWNsYXNzIERhdGFSZWZlcmVuY2U7Ci1jbGFzcyBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kaW5nVHlwZTxjb25zdCBT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHR5cGVkZWYgRGF0YVJlZmVyZW5jZSBU
eXBlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1Y3QgQ29kaW5nVHlwZTxz
dGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx0eXBlbmFtZSBDb2Rp
bmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkYWQ0NjYwNDYzMmU5
MjY5ZjE5MWQxNWM4MGRkMjExZTU0ODRlN2EzLi5iZmIzMzk1NzY5NmYyZTcyYTIzNDgyMzQyMjUy
YjcyYmQ3OTQyODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yNSw0MCArMjUsNTEgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSgpID0g
ZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkKKyAgICB7CisgICAgfQorICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShi
dWZmZXIpKQorICAgIHsKKyAgICB9CiAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2RhdGEoYnVmZmVy
KSB7IH0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShzdGQ6Om1ha2VfcGFpcihkYXRhLCBzaXpl
KSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSkKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKKyAgICB9CisKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZm
ZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKworICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CisgICAg
c2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkg
OiAwOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQogCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHN3aXRjaE9uKG1fZGF0YSwKLSAgICAgICAgICAg
IFtlbmNvZGVyID0gJmVuY29kZXJdIChjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICB1aW50NjRfdCBidWZmZXJT
aXplID0gYnVmZmVyLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+cmVzZXJ2ZShi
dWZmZXJTaXplICsgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gICAgICAgICAgICAgICAgKmVuY29kZXIg
PDwgYnVmZmVyU2l6ZTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQg
OiBidWZmZXIuZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbGVtZW50LnNlZ21l
bnQtPmRhdGEoKSksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpLCAxKTsKLSAgICAgICAgICAgIH0s
IFtlbmNvZGVyID0gJmVuY29kZXJdIChjb25zdCBzdGQ6OnBhaXI8Y29uc3QgdWludDhfdCosIHNp
emVfdD4mIHBhaXIpIG11dGFibGUgewotICAgICAgICAgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNp
emUgPSBwYWlyLnNlY29uZDsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5yZXNlcnZlKGJ1ZmZl
clNpemUgKyBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgICAgICAgICAqZW5jb2RlciA8PCBi
dWZmZXJTaXplOwotICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCwgMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7
CisgICAgICAgIGVuY29kZXIgPDwgbV9idWZmZXI7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGJ1
ZmZlcjsKKyAgICAgICAgZGVjb2RlciA+PiBidWZmZXI7CisgICAgICAgIGlmICghYnVmZmVyKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgV1RGTW92
ZSgqYnVmZmVyKSB9OwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBWYXJpYW50PHN0ZDo6cGFpcjxj
b25zdCB1aW50OF90Kiwgc2l6ZV90PiwgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDI2MDQ5
MGZiN2I1NmE4OGNmZjBkOWI4OWMxYTcxNjhhZWQwZDE4NWMuLjcxNjRjMzczNDMxMDFmZWYwYzNk
NWYwZGI2N2M1MmNkNjE4YjVlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMjI3LDYgKzIyNyw5IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXInLAorICAgICAgICAnV2Vi
S2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4YzlmYTIxYWYzOGE3MTYyYzZjMjA5
ZTkzOTQ2ODkwNmEyNWMzY2EzLi41YWRiMzdkOGI1YmRlZjAwYTU2NmY0YTAyZGI2NGJiOTVkYWIw
MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTMyMDMsNCArMzIwMywxOCBAQCBPcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmbwogfQogI2Vu
ZGlmCiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIu
Z2V0KCkpOworfQorCitPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGUzODE0ZTIxZjgz
MzZhYWYyZjQ0NDMyMzJlMzQ0ZTAwNzRkYWUyYTEuLmU5NTM1NjkzMDRmNzIxOTNiOGRhMjhkODg2
YmI1ZjgyYjI3NTZiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCkBAIC0xMDAsNiArMTAwLDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9u
OwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3Bv
cnRDb25zdHJhaW50czsKQEAgLTgyOSw2ICs4MzAsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IHsKIH07
CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDc4OTdlMjhlM2M4
Y2EyMjc0NTFmZDU3NDFmN2RkMTU1Y2M3ZGUxNWYuLjM0M2JhMWIxMDM3MzI0MjViNjAyNzdlOGY1
ODEwZjE3ZDgxYWFiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQYWdlQ2xp
ZW50LmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgIlNhZmVCcm93c2lu
Z1dhcm5pbmcuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbXBv
cnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1w
b3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCkBAIC0xODMsMTMgKzE4NCwxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RHJhZ0NhcmV0UmVjdChjb25zdCBJbnRSZWN0JiBkcmFnQ2FyZXRSZWN0KQog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlUHJveHk6OnBs
YXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVu
dCwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJB
dHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgY29uc3QgU3RyaW5n
JiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlKQogewogICAgIGlmIChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwotICAgIGF1dG8gZmls
ZVdyYXBwZXIgPSBhZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNl
KCkgaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKV0pOworICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtwYWdlQ2xpZW50
KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OmRhdGFSZWZlcmVuY2UuYnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCldKTsK
ICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6cHJlZmVycmVkRmlsZU5hbWVd
OwogICAgIGF0dGFjaG1lbnQtPnNldEZpbGVXcmFwcGVyKGZpbGVXcmFwcGVyLmdldCgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGY5NzFmOTZmNGRm
ODNlYmY1MDViMmRkYzRhZTI3ZTZjYTdkNWNjNzUuLjBmYmYwMzUyMmU1ZWY5NWFkMjdmYzU1MTlk
OGY2ZjBmZTE5MTUyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNjkwNiwxMyArNjkwNiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2Fs
bGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1D
YWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRh
dGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKKyAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5z
aXplKCkpLnB0cigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJvb2xDYWxsYmFjayhib29s
IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtOTA4MSw3ICs5MDgxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlu
a0ljb24mIGljb24sIENhbGxiYWMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmZp
bmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihD
YWxsYmFja0lEIGNhbGxiYWNrSUQsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYgZGF0YSkKIHsKICAgICBkYXRhQ2FsbGJhY2soZGF0YSwgY2FsbGJhY2tJRCk7CiB9CkBAIC05
MzEyLDcgKzkzMTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50LAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRp
ZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRl
bnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBNRVNTQUdFX0NI
RUNLKG1fcHJvY2VzcywgSWRlbnRpZmllclRvQXR0YWNobWVudE1hcDo6aXNWYWxpZEtleShpZGVu
dGlmaWVyKSk7CiAKQEAgLTk0MTksNyArOTQxOSw3IEBAIFdlYlBhZ2VQcm94eTo6U2hvdWxkVXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMgV2ViUGFnZVByb3h5Ojp3aWxsVXBkYXRlQXR0YWNobWVu
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJl
Z2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKQordm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVn
aXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjMxNTQ1NDhhMDhiNTg4ZGZiMzQ2MjYxYmM3
ZGUzZGJiNzU0ZjZjZi4uZjMzMmM1ZDIwZGJhOGYxZGFmMjczYjBjNmYxZTVjOGIyYmZkZTc3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE5Myw2ICsxOTMsNyBA
QCBlbnVtIGNsYXNzIEluc3BlY3RvclRhcmdldFR5cGUgOiB1aW50OF90OwogbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTAx
LDcgKzE1MDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KTsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5r
SWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29u
KFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNl
ZCk7CiAgICAgdm9pZCBzZXRXaW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsK
QEAgLTIwMDUsNyArMjAwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlRXZlbnQo
dWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKTsKIAogICAgIHZvaWQgdm9pZENhbGxi
YWNrKENhbGxiYWNrSUQpOwotICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW1hZ2VD
YWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENhbGxiYWNrSUQpOwogICAg
IHZvaWQgYm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHN0
cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwpAQCAtMjE4MywxMiArMjE4
NCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcEFsbFVSTFNjaGVtZVRhc2tzKFdlYlByb2Nl
c3NQcm94eSogPSBudWxscHRyKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0g
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxl
TmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyRnJvbUZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
c0Zyb21TZXJpYWxpemVkRGF0YShWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPiYmKTsKICAgICB2b2lkIGNsb25lQXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5nJiBmcm9t
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0b0lkZW50aWZpZXIpOwogCi0gICAgdm9pZCBwbGF0
Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2
b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQ
STo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCBwbGF0
Zm9ybUNsb25lQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGZyb21BdHRhY2htZW50
LCBSZWY8QVBJOjpBdHRhY2htZW50PiYmIHRvQXR0YWNobWVudCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMzlkYzI1YmJk
OGY4YjE1ZDY2ODE4ZjZkNmQ4MmEzYjU2OTk5NDkyLi5hNWU2Zjk2NTExZTUwYTgxNDNkYjZmMmFk
M2UyNjRlOTJiOWFhYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MzAsNyArNTMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCiAgICAgR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihzdHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCi0gICAgRmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpOworICAgIEZpbmlzaGVk
TG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRIYW5k
bGVBY2NlcHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmlu
ZGV4IDNmNWI2MTgxZTA2ZTBhODQ2ODhiZGE5MTZmMTBkODdhNjFkMTRiZTcuLjkyZmY3N2ViYzc3
MzNhNTFmYjE3YzdhNzYzYzc2ODc2YzYyYWVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZlBy
aXZhdGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDA5ZDc5ODcxZjViNmYzODdkNGY1ZmI2NTUxZWY5YTA0NjdjNDYzYjguLmVk
ZTM5NGRkMjNjYjNkNjE0ZjFiMzNhM2I4YmI5NGRjZWVkNDIxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9y
bURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWUuaCIKQEAgLTE4OSwxNyArMTg5LDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdU
Rk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBkYXRhLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3Mp
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIs
IGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9u
c2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFs
aWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29u
dHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVy
KG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgp
IG11dGFibGUgewotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YSA9IFdU
Rk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92
ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJmYTFjNjlmZWE5ZDUz
OTY2ZmIuLjI2OTA4ZTgyM2Q3OTI0NGU1Nzg2ZGIwNGE1OTY5ZWYxZmM2NTgwODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZTsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCkBAIC04Myw3ICs4Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJj
ZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNl
cnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzRlODZjMTFlMjQ4NmM3YTE2MDM2
ZDdiNDY4ZmI3OGQyNzU4ZmQ2MS4uYzUwZjU1YWU5MjYzYzExNjgxNDFhYTQ1NzBhMmRkZWM2MTY2
NDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTEyOSw3
ICsxMjksNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVCbG9iQ2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZQogICAgIGlmICghbV9jb25uZWN0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXpl
KSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgc2l6ZSkgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9m
ZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDk4YjE1Yjg3ZmMxM2RhMmRiZjQ0M2JhOThhNGQ4NmQ3YTlkMzU0MTkuLjQxNjk3OGIx
ODZjZTU2M2MzY2RkMzVkMjllNDY0NWMyNTdmZDM0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgpAQCAtMTkx
NCw5ICsxOTE1LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
SWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXIKICAgICBhdXRvIGNhbGxiYWNr
SUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZpZXIpOwogICAgIGlm
IChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAgICAgICAgaWYgKGRh
dGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOworICAgICAgICAgICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNh
bGxiYWNrSUQsIHsgKmRhdGEgfSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJh
Y2tJRCwgeyBudWxscHRyLCAwIH0pKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7IH0pKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggZTQ1ODM3NDliNmY5NmI1YzFkZWQxZTA2YTQzMGFhYzg5MTU4N2JmZC4uMTZkNmY4
Y2E3MzM1NTRiMTJjYmFhMGVjZmM5MjJlYmQwZjY1MjhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM1MDAsNyArMzUwMCw3IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2Ug
PSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZE
YXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBkYXRhUmVmZXJlbmNlID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7
CiB9CkBAIC0zNTgxLDcgKzM1ODEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxiYWNrSQogICAgIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFH
ZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0
aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2VuZGlmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQpAQCAtNDkx
OSw3ICs0OTE5LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8KIHsKICAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZy
YW1lSUQsIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soeyBDRkRhdGFHZXRCeXRlUHRyKHBk
ZlBhZ2VEYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgocGRm
UGFnZURhdGEuZ2V0KCkpKSB9LCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZQYWdlRGF0
YS5nZXQoKSkgfSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1Rv
UERGSW1wbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURh
dGFSZWY+JiBwZGZQYWdlRGF0YSkKQEAgLTY1NjMsMTIgKzY1NjMsMTIgQEAgdm9pZCBXZWJQYWdl
Ojp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlm
aWVyLCB1aW50NjQKICAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHRhc2tJZGVu
dGlmaWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJl
Y2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1cmxT
Y2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2
NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
IGRhdGEpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFu
ZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIp
OwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRh
LnNpemUoKSwgZGF0YS5kYXRhKCkpOworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0
YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCAqPihkYXRhLmRhdGEoKSkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRD
b21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtNjc5MCw3ICs2NzkwLDcgQEAgdm9p
ZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0
aW9uYWw8dWludDY0X3Q+JiYgZmkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZv
aWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRf
dD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxl
U2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0
YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRh
Y2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM3Y2YzOGM1YmJhMjAxY2VkNzg4Y2QwM2Q1YTIw
NGQ0YWNhNGYyYTcuLjczYzU5MmNjODRmNzQ4YzJmNDg5OTU4NjdiZTZlMmU5YWVlYWMxMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NSw2ICsx
NTUsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVy
OwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTk0LDcgKzExOTUsNyBAQCBwdWJs
aWM6CiAgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2Vy
dEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4m
JiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKQEAgLTE2NzQsNyArMTY3NSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHVy
bFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIs
IHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jik7Ci0gICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxl
cklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKTsKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBs
ZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzZXRJc1N1c3BlbmRl
ZChib29sKTsK
</data>
<flag name="review"
          id="407138"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391625</attachid>
            <date>2020-02-24 22:21:42 -0800</date>
            <delta_ts>2020-02-28 17:06:46 -0800</delta_ts>
            <desc>Part 3: RemoteCDM (depends on Parts 1 &amp; 2)</desc>
            <filename>bug-208090-20200224222141.patch</filename>
            <type>text/plain</type>
            <size>163060</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhmNTVlNWM5ODQxOTdlYjI5
ZjAwMWM3YjE1NTNjZTlmZmY1MDIxZjkuLmY1YjZkZmY1MDdjODNhYWEyZThiY2Y1M2I4MWY4N2I1
ZjAzNWEyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcwIEBACisyMDIwLTAyLTIzICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTW9k
ZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
UmVtb3RlQ0RNRmFjdG9yeSwgUmVtYXRlQ0RNLCBSZW1vdGVDRE1JbnN0YW5jZSwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLCBhbmQgYWxsCisgICAgICAgIG9mIHRoZWlyIGFzc29jaWF0ZWQgUHJv
eHkgb2JqZWN0cy4KKworICAgICAgICBBbGxvdyB0aGUgZXhpc3RpbmcgQ0RNRmFjdG9yeSBtYWNo
aW5lcnkgdG8gd29yayBub3JtYWxseSBieSBleHBsaWNpdGx5IGNsZWFyaW5nIG91dCBhbGwgdGhl
IGV4aXN0aW5nIAorICAgICAgICB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBlbmFibGVkLCBhbmQg
cmVzZXR0aW5nIHRob3NlIGZhY3RvcmllcyB0byBkZWZhdWx0IHdoZW4gdGhlIEdQVSBwcm9jZXNz
IGlzIGRpc2FibGVkLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFk
ZEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNl
c3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNl
c3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y29u
ZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6Omluc3RhbmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Ojp+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENo
YW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6
OlJlbW90ZUNETVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBv
cnRzSW5pdERhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVNlc3Np
b25JZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpnZXRTdXBwb3J0ZWRDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXpl
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y29uZmlndXJhdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpmYWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6Y2RtSW5zdGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVB
ZnRlcktleU5lZWRlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1
c1ZlY3Rvcj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURl
dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRl
bXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktl
eU5lZWRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6UmVtb3RlQ0RNKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3Vw
cG9ydHNJbml0RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6ZGlzdGlu
Y3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNOjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFu
ZENsZWFyYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Y3JlYXRlSW5z
dGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1GYWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5OjphZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeTo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6UmVtb3RlQ0RNSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y2xvc2VTZXNzaW9u
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c3Rv
cmVSZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW46
IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKwogMjAyMC0w
Mi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0g
SW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGU2ODZjNjNjMThmMzU4
NmZmY2E3NGUxNzMxYzBmZjI3NzQxYjBkM2IuLmM1YWYzYjVmYmUwY2FiYjhiMmRlMzBkMDg2ZDMz
YTRmNzk0NzkxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKQEAgLTE2LDYgKzE2LDEwIEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAg
LTEwOCw2ICsxMTIsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMWZjZjdlNDExMDdmYjNmN2JlMmJjNjk5OTM2NmEwNWY4
ZTY1MDgyOC4uYzczZTI4NzNkOWJmY2E3MTQ2NmM5NDczMTEzYjkwMDI2MGI1MTc1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xMjks
NiArMTI5LDIxIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1Jl
cGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDEwZDE3MjU1ODc1YTE2ZWM2ZDNlNmFmZDI1MDZiNTE1
NTc2MzU0MDQuLjJkMDA3NTg3YTQ1ODYxMzA2ZjQyZGNjMzUwOGQ2NWNmY2JlNjJlZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE0Niw2ICsxNDYsMTEgQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
IFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciBcCiAgICAgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCisgICAgUmVtb3RlQ0RNUHJveHkgXAorICAgIFJl
bW90ZUNETUZhY3RvcnlQcm94eSBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCisgICAg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eSBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggYTM5NGUwOTQzMWUwMjc2OGZhMTA3NDdjZWNmMmI5M2U5ZGY5MTYyNS4uMzkwOWJj
ODY5NTdlNjBiNDJiMjM0ZjllMzNmYTAzZmJiYzE0ZDljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTgs
MTAgKzU4LDE4IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0KICNpbmNs
dWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KIAorI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1J
bnN0YW5jZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oIgor
I2VuZGlmCisKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtMTg5LDYgKzE5NywxNyBAQCBMaWJXZWJSVENDb2RlY3NQcm94eSYgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUHJveHkoKQogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjZG1GYWN0b3J5UHJveHkoKQoreworICAgIGlmICghbV9jZG1GYWN0
b3J5UHJveHkpCisgICAgICAgIG1fY2RtRmFjdG9yeVByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVD
RE1GYWN0b3J5UHJveHk+KCp0aGlzKTsKKworICAgIHJldHVybiAqbV9jZG1GYWN0b3J5UHJveHk7
Cit9CisjZW5kaWYKKworCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewpAQCAtMjM5LDYgKzI1OCwyNyBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQ
cm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJv
eHkoKS5kaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVD
RE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlF
bmNvZGVyKQpAQCAtMjU5LDYgKzI5OSwyNyBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpbwogICAg
ICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAg
ICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
UmVtb3RlQ0RNUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0
b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRp
ZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5
RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCku
ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYKIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjY5LDcgKzMzMCw3IEBAIGNvbnN0IFN0cmluZyYg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZ3B1UHJvY2Vzcy0+bWVkaWFDYWNoZURpcmVjdG9yeShtX3Nlc3Npb25JRCk7
CiB9CiAKLSNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKSB8fCBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIGNvbnN0IFN0
cmluZyYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZ3B1UHJvY2Vzcy0+bWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeShtX3Nlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAwZWMyMzhjZDA2MjUzODM0NzU5YmZl
OTZiYmFlMGFkZWJiMzUxYTdlLi5mMDAwMWNlNDhhZDBlOWMwZjZmMGZjYmUwZmYzY2Y4NWExNzQx
MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CiBjbGFzcyBSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CitjbGFzcyBSZW1vdGVDRE1GYWN0
b3J5UHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIGNsYXNzIFJl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXI7CkBAIC03Niw2ICs3NywxMCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXImIHNlc3Npb25NYW5hZ2VyKCk7CiAKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSYgY2RtRmFjdG9yeVByb3h5KCk7
CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVBy
b2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTExOCw2ICsxMjMsMTAgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDQ29kZWNzUHJveHk+IG1fbGliV2ViUlRDQ29k
ZWNzUHJveHk7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyPiBtX3Nlc3Npb25NYW5hZ2VyOworCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBt
X2NkbUZhY3RvcnlQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0
b3J5UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YjRhZmQ0YjQzNjc3N2QxYzRkMTNmODcwYjQ0ZGQy
YjM2OTgxMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHku
aCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RN
RmFjdG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpSZW1vdGVDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVj
dGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uKQorewor
fQorCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6On5SZW1vdGVDRE1GYWN0b3J5UHJveHkoKSA9IGRl
ZmF1bHQ7CisKK3N0YXRpYyBDRE1GYWN0b3J5KiBmYWN0b3J5Rm9yS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKQoreworICAgIGF1dG8mIGZhY3RvcmllcyA9IENETUZhY3Rvcnk6OnJl
Z2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBhdXRvIGZvdW5kSW5kZXggPSBmYWN0b3JpZXMuZmlu
ZE1hdGNoaW5nKFsmXSAoYXV0byYgZmFjdG9yeSkgeyByZXR1cm4gZmFjdG9yeS0+c3VwcG9ydHNL
ZXlTeXN0ZW0oa2V5U3lzdGVtKTsgfSk7CisgICAgaWYgKGZvdW5kSW5kZXggPT0gbm90Rm91bmQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBmYWN0b3JpZXNbZm91bmRJbmRl
eF07Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpjcmVhdGVDRE0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSWRlbnRpZmll
ciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7CisgICAgYXV0
byBmYWN0b3J5ID0gZmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0ZW0pOworICAgIGlmICghZmFj
dG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGF1dG8gcHJpdmF0ZUNETSA9IGZhY3RvcnktPmNyZWF0ZUNETShrZXlTeXN0
ZW0pOworICAgIGlmICghcHJpdmF0ZUNETSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcHJveHkgPSBSZW1vdGVDRE1Q
cm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBXVEZNb3ZlKHByaXZhdGVDRE0pKTsKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAg
IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IHByb3h5LT5jb25maWd1cmF0
aW9uKCk7CisgICAgYWRkUHJveHkoaWRlbnRpZmllciwgV1RGTW92ZShwcm94eSkpOworICAgIGNv
bXBsZXRpb24oV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uKQoreworICAgIGNvbXBsZXRpb24oZmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0ZW0pKTsK
K30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVt
b3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAg
IHByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAg
aWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVy
PFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgp
KSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQo
bWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5
cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VP
YmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0
aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6
ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IG1faW5zdGFuY2VzLmdldCht
YWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlPihkZWNv
ZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpbnN0YW5jZS0+ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAg
ICBzZXNzaW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5j
b2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRQcm94eShSZW1vdGVD
RE1JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHkp
Cit7CisgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMu
c2V0KGlkLCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpyZW1vdmVQcm94eShSZW1vdGVDRE1JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3By
b3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMucmVtb3ZlKGlkKTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+JiYgaW5z
dGFuY2UpCit7CisgICAgQVNTRVJUKCFtX2luc3RhbmNlcy5jb250YWlucyhpZCkpOworICAgIG1f
aW5zdGFuY2VzLnNldChpZCwgV1RGTW92ZShpbnN0YW5jZSkpOworfQorCit2b2lkIFJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6cmVtb3ZlSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
IGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhpZCkpOworICAgIG1faW5z
dGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlUHJveHkqIFJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlkKTsKK30KKwordm9pZCBS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5PiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM5YjFjY2M5NWJiZDNmZTNiOWYzMzUyZDg1MDAyNzdhNGJmZDM5MzMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5LmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTsKK2NsYXNzIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OworY2xhc3MgUmVtb3RlQ0RNUHJveHk7CitzdHJ1Y3QgUmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbjsKKworY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IGZpbmFsIDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90
ZUNETUZhY3RvcnlQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7
CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeVByb3h5KCk7CisKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyBkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1N
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+Jik7CisKKyAgICB2b2lkIGFkZFByb3h5KFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShSZW1vdGVD
RE1JZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4mJik7Cisg
ICAgdm9pZCByZW1vdmVJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIpOworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIpOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVj
dGlvbjsKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWwgeyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2Vz
CisgICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9u
JiYpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBIYXNoTWFw
PFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4+IG1f
cHJveGllczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+PiBtX2luc3RhbmNlczsKKyAgICBIYXNo
TWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lvbnM7Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ3YzVlNmU2
MWM0MjA3ODMxZGEwYmQxMThhNmFhZWI0MGQzMzEzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMu
aW4KQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETUZhY3Rv
cnlQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVDRE0oU3RyaW5nIGtleVN5c3RlbSkg
LT4gKFdlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRz
S2V5U3lzdGVtKFN0cmluZyBrZXlTeXN0ZW0pIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUyNDhmZGZjODJkOTRh
ZTZlMGVkMTc1YjM1MWMxYjI2YjU1YTMxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApAQCAtMCwwICsx
LDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RN
SW5zdGFuY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8
Q0RNSW5zdGFuY2U+JiYgcHJpdikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5p
cXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRp
b24sIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmPih7CisgICAgICAgIHByaXYtPmtl
eVN5c3RlbSgpLAorICAgIH0pOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eT4obmV3IFJlbW90ZUNETUluc3RhbmNlUHJveHkoV1RGTW92ZShjZG0pLCBX
VEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETUlu
c3RhbmNlUHJveHk6OlJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94
eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2NkbShXVEZNb3Zl
KGNkbSkpCisgICAgLCBtX2luc3RhbmNlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3Vy
YXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEFsbG93RGlzdGlu
Y3RpdmVJZGVudGlmaWVycyBhbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lz
dGVudFN0YXRlIGFsbG93UGVyc2lzdGVudFN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1
Y2Nlc3NWYWx1ZSk+JiYgY29tcGxldGlvbikKK3sKKyAgICBtX2luc3RhbmNlLT5pbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgV1RGTW92ZShjb21wbGV0aW9uKSk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgY2VydGlmaWNhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIGlmICghY2VydGlmaWNhdGUu
YnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbihDRE1JbnN0YW5jZTo6RmFpbGVkKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW5zdGFuY2UtPnNldFNlcnZlckNlcnRpZmlj
YXRlKGNlcnRpZmljYXRlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoY29tcGxl
dGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgbV9pbnN0YW5jZS0+c2V0U3Rv
cmFnZURpcmVjdG9yeShkaXJlY3RvcnkpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJv
eHk6OmNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHBy
aXZTZXNzaW9uID0gbV9pbnN0YW5jZS0+Y3JlYXRlU2Vzc2lvbigpOworICAgIGlmICghcHJpdlNl
c3Npb24gfHwgIW1fY2RtIHx8ICFtX2NkbS0+ZmFjdG9yeSgpKSB7CisgICAgICAgIGNvbXBsZXRp
b24oeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGlkZW50aWZpZXIgPSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8g
c2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjcmVhdGUobWFrZVdlYWtQ
dHIobV9jZG0uZ2V0KCkpLCBwcml2U2Vzc2lvbi5yZWxlYXNlTm9uTnVsbCgpLCBpZGVudGlmaWVy
KTsKKyAgICBtX2NkbS0+ZmFjdG9yeSgpLT5hZGRTZXNzaW9uKGlkZW50aWZpZXIsIFdURk1vdmUo
c2Vzc2lvbikpOworICAgIGNvbXBsZXRpb24oaWRlbnRpZmllcik7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzExMmQ1Zjg0Yjg4NDczMTlkYzQwNGZlYTE1MDZj
OGIxZWYzMGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIENETUluc3RhbmNlOworc3RydWN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb247Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTsK
KworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUlu
c3RhbmNlUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2U+JiYpOworICAgIH5SZW1vdGVDRE1JbnN0YW5jZVByb3h5KCk7CisKKyAg
ICBjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KKyAgICBXZWJDb3JlOjpDRE1J
bnN0YW5jZSYgaW5zdGFuY2UoKSB7IHJldHVybiBtX2luc3RhbmNlOyB9CisKK3ByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0
YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJik7CisK
KyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIHVzaW5nIFN1Y2Nlc3NWYWx1ZSA9
IFdlYkNvcmU6OkNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWU7CisgICAgdXNpbmcgQWxsb3dEaXN0
aW5jdGl2ZUlkZW50aWZpZXJzID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3Rp
dmVJZGVudGlmaWVyczsKKyAgICB1c2luZyBBbGxvd1BlcnNpc3RlbnRTdGF0ZSA9IFdlYkNvcmU6
OkNETUluc3RhbmNlOjpBbGxvd1BlcnNpc3RlbnRTdGF0ZTsKKworICAgIC8vIE1lc3NhZ2VzCisg
ICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQ
ZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJik7
CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmKTsKKyAgICB2
b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjcmVhdGVT
ZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllciYpPiYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+IG1fY2Rt
OworICAgIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBVbmlxdWVS
ZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247CisgICAg
SGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUw
ZTg1MzQxYzJlYjM1YmI2ZWMwODA5NWQ1YTAwNGVjY2ExMzlmOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZVNlc3Npb24oKSAtPiAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKSBTeW5jaHJvbm91
cworICAgIEluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RN
SW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzQWxsb3dlZCwgZW51bTpib29sIFdlYkNvcmU6OkNETUluc3RhbmNlOjpBbGxvd1BlcnNpc3Rl
bnRTdGF0ZSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OkNE
TUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgc3VjY2VzcykgQXN5bmMKKyAgICBTZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgY2VydGlmaWNhdGUpIC0+IChl
bnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBBc3lu
YworICAgIFNldFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nIGRpcmVjdG9yeSkKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWM4NmU2YjQ2MmY5
M2ZjYTVlZDdhOGNlY2EyNjRiNTU1NmRhNGVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApA
QCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0gc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50
aWZpZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHkt
Pm1fc2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Np
b25Qcm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAg
ICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGlu
aXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFpbml0RGF0YS5idWZmZXIo
KSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUgQ0RNUHJp
dmF0ZTo6c3VwcG9ydHNJbml0RGF0YSgpIGNoZWNrIGhlcmU6CisgICAgaWYgKCFtX2NkbS0+c3Vw
cG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUsICppbml0RGF0YS5idWZmZXIoKSkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGlu
aXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRp
b24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAg
ICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFs
aXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAg
ICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGlj
ZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxl
dGlvbikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRp
b24odHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRlOjpzYW5p
dGl6ZVJlc3BvbnNlKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFJlc3BvbnNlID0g
bV9jZG0tPnNhbml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKTsKKyAgICBpZiAoIXNh
bml0aXplZFJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UsIHsgfSwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0aXplZFJl
c3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KV0gKGJvb2wgc2Vzc2lvbkNsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9u
VGltZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAg
ICAgIGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1v
dmUoZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcg
c2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlv
bikKK3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplU2Vzc2lvbklk
KCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFNlc3Npb25JZCA9IG1fY2RtLT5zYW5p
dGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgIGlmICghc2FuaXRpemVkU2Vzc2lvbklkKSB7
CisgICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNt
YXRjaGVkU2Vzc2lvblR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNz
aW9uLT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFtjb21w
bGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhw
aXJhdGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNz
YWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3Rh
bmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAg
ICBjb21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1l
KSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2VlZGVkLCBmYWlsdXJlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNl
c3Npb25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5jbG9zZVNlc3Np
b24oc2Vzc2lvbklkLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFi
bGUgeyBjb21wbGV0aW9uKCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7Cisg
ICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGly
ZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoZXhwaXJlZFNl
c3Npb25zRGF0YSkKKyAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRh
KSk7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhw
aXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQor
eworICAgIG1fc2Vzc2lvbi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCk7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtl
eVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAg
ICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2Vz
KFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAg
ICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdlKHR5cGUs
IFdURk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRv
KiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVy
KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTgxNTM1NjZmNjQyZmM2OGEzNDU2NGU3NDY3NDUwZmI0NDlkYTk0MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKTsK
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAg
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYs
IFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OworCisgICAgLy8gVHlwZXMKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0g
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I7CisgICAgdXNpbmcg
TWVzc2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAgICB1c2lu
ZyBTZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Np
b25Mb2FkRmFpbHVyZTsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgYm9vbCwgYm9vbCk+OworICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiYmLCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wpPjsKKyAg
ICB1c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVz
c2FnZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgQ2xvc2VTZXNz
aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHVzaW5nIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1Zl
Y3RvciYmLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGJvb2wp
PjsKKyAgICB1c2luZyBTdG9yZVJlY29yZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPjsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJik7CisgICAgdm9pZCB1cGRhdGVMaWNl
bnNlKFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQg
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4s
IExvYWRTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVT
ZXNzaW9uRGF0YUNhbGxiYWNrJiYpOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKKworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVu
dAorICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOwor
ICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFu
Z2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4g
bV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gbV9zZXNzaW9uOwor
ICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41YjkzMTk2YzA5NWUwMzRiNjQyMWY4ZWU2MzhhZTA5ZWZjZTIwZTk0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBOb3RSZWZD
b3VudGVkIHsKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OkxpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0
aW9uLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmluZyBzZXNz
aW9uSWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNzaW9uV2Fz
Q2xvc2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1Zl
Y3Rvcj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9w
dGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9v
bCBzdWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2lu
KSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3I+IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRp
b25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wg
c3VjY2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNz
aW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9uKFN0cmlu
ZyBzZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3RyaW5nIHNl
c3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlKSAt
PiAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtl
eXMsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgYm9v
bCBzdWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmluZyBzZXNz
aW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA0Njk5NTkyZGE4NmNiOTY4OGI1YmRl
YmU0OTQ4M2M1ZTcyZjRiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TVByb3h5PiBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5PiYmIGZhY3RvcnksIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmIHBy
aXYpCit7CisgICAgaWYgKCFwcml2KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJl
bW90ZUNETUNvbmZpZ3VyYXRpb24sIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJj4oeworICAgICAg
ICBwcml2LT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCksCisgICAgICAgIHByaXYtPnN1cHBvcnRl
ZFJvYnVzdG5lc3NlcygpLAorICAgICAgICBwcml2LT5zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRl
cygpLAorICAgICAgICBwcml2LT5zdXBwb3J0c1Nlc3Npb25zKCkKKyAgICB9KTsKKyAgICAvLyBV
c2UgbmV3KCkgdG8gYWNjZXNzIENETVByaXZhdGUncyBwcml2YXRlIGNvbnN0cnVjdG9yLgorICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+KG5ldyBSZW1vdGVDRE1Qcm94
eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KSk7Cit9CisKK1JlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4mJiBw
cml2LCBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQor
ICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3ByaXZhdGUoV1RGTW92
ZShwcml2KSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQor
eworfQorCitSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZhdWx0OworCiti
b29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5z
dXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBS
ZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2Up
OworfQorCitPcHRpb25hbDxTdHJpbmc+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5p
dGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpnZXRT
dXBwb3J0ZWRDb25maWd1cmF0aW9uKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
JiBjb25maWd1cmF0aW9uLCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3Mg
YWNjZXNzLCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICBtX3ByaXZhdGUtPmdldFN1cHBvcnRlZENvbmZpZ3VyYXRp
b24oV1RGTW92ZShjb25maWd1cmF0aW9uKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZUluc3RhbmNlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHByaXZhdGVJbnN0YW5jZSA9
IG1fcHJpdmF0ZS0+Y3JlYXRlSW5zdGFuY2UoKTsKKyAgICBpZiAoIXByaXZhdGVJbnN0YW5jZSB8
fCAhbV9mYWN0b3J5KSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGF1dG8gaW5zdGFuY2UgPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIHByaXZhdGVJbnN0YW5jZS5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXI6
OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb24gPSBpbnN0YW5jZS0+Y29uZmlndXJhdGlvbigpOworICAgIG1fZmFjdG9yeS0+YWRkSW5z
dGFuY2UoaWRlbnRpZmllciwgV1RGTW92ZShpbnN0YW5jZSkpOworICAgIGNvbXBsZXRpb24oaWRl
bnRpZmllciwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJv
eHk6OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBtX3ByaXZhdGUtPmxvYWRBbmRJbml0aWFs
aXplKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjOWQ1NThkZmZhMTUyYzBkZDVhMGMw
YjJiNWE4MTczMmExZGI1YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Q
cml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2VudW0g
Y2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90OworZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlw
ZSA6IHVpbnQ4X3Q7CitzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBD
RE1SZXN0cmljdGlvbnM7Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNE
TUluc3RhbmNlUHJveHk7CitzdHJ1Y3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOwor
c3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUNETVByb3h5IDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90
ZUNETVByb3h5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVD
RE1Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJik7CisgICAgflJlbW90ZUNETVByb3h5KCk7
CisKKyAgICBjb25zdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOyB9CisKKyAgICBSZW1vdGVDRE1GYWN0
b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KKwor
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAg
ICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OworICAgIFJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24+JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAg
ICAvLyBNZXNzYWdlcworICAgIHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIFdlYkNvcmU6OkNETVByaXZhdGU6OkxvY2Fs
U3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6U3VwcG9ydGVkQ29uZmlndXJhdGlv
bkNhbGxiYWNrJiYpOworICAgIHZvaWQgY3JlYXRlSW5zdGFuY2UoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbiYmKT4mJik7CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpOworCisgICAgV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4gbV9wcml2YXRlOworICAgIFVuaXF1ZVJlZjxSZW1vdGVD
RE1Db25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NTU1ODRlZGYxNzFhMTY1ZGM1M2YwZGFlNWYxYTM5
NDhjNzU1ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisK
K21lc3NhZ2VzIC0+IFJlbW90ZUNETVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIEdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24gY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OkNETVByaXZhdGU6
OkxvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uPiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pIEFzeW5jCisgICAg
Q3JlYXRlSW5zdGFuY2UoKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIg
aWQsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKSBTeW5jaHJvbm91cworICAgIExvYWRBbmRJbml0aWFsaXplKCkKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggNWIwZmExOWNlMmViMmUzZTgzOTAxNDhlMTU2NjQ4N2Rj
MDg5M2IyOC4uNDgxNDU4NDc1MmExM2IwY2U4NTAzNDg5NWRmOTE0MTAwYzVhYTQxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKQEAgLTQ3LDYgKzQ4LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lu
Y2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ5Nyw5ICs1MDIsOSBAQCB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkq
KQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNv
bnN0IFN0cmluZyYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBT
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGluaXREYXRhKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpJbml0aWFsaXphdGlvbkRhdGFFbmNv
dW50ZXJlZChpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihpbml0RGF0YS0+ZGF0YSgpKSwgaW5pdERhdGEtPmJ5dGVMZW5ndGgoKSkpLCBt
X2lkKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcldhaXRp
bmdGb3JLZXlDaGFuZ2VkKCkKQEAgLTY4MSw2ICs2ODYsMzQgQEAgdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjprZXlBZGRlZCgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlQXR0YWNoZWQo
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0
byogaW5zdGFuY2VQcm94eSA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCku
Y2RtRmFjdG9yeVByb3h5KCkuZ2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxh
eWVyLT5jZG1JbnN0YW5jZUF0dGFjaGVkKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQor
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlRGV0YWNoZWQoUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byogaW5z
dGFuY2VQcm94eSA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFj
dG9yeVByb3h5KCkuZ2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVyLT5j
ZG1JbnN0YW5jZURldGFjaGVkKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQorCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byog
aW5zdGFuY2VQcm94eSA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2Rt
RmFjdG9yeVByb3h5KCkuZ2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVy
LT5hdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkp
OworfQorI2VuZGlmCisKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRT
aG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1fcGxheWVy
LT5zZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3VsZCk7Cit9CisjZW5kaWYKKwog
dm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCiB7
CiAgICAgbV9wbGF5ZXItPmJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApp
bmRleCA0YTczOWZiNGY5YjVkNjczZDRlOWYyYjVhZjUzOTUxZTNlZWRkMGNlLi4yMDg5NmI5NTU1
NDgxMGI1Y2NmZGMyNWNhZDU2YTRkMGFhODY5N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTQ2LDYg
KzQ2LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9CkBAIC0x
MjYsNiArMTMxLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGtleUFkZGVkKCk7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBjZG1JbnN0YW5jZUF0dGFjaGVk
KFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGNkbUluc3RhbmNlRGV0
YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYpOworICAgIHZvaWQgYXR0ZW1wdFRv
RGVjcnlwdFdpdGhJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7CisjZW5k
aWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29s
KTsKKyNlbmRpZgorCiAgICAgdm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwogICAgIHZv
aWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggY2E2NjMxNGRmYmU2ZDMxYmUwOTk1MmM1ZjI4MmYxMDYxOGZlYmViYS4uMjlk
Mjg2OWMxNjQyZDhmYzI2NmU4OTFjYjYxOGU0ODI0YjBiMjI5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkubWVzc2FnZXMuaW4KQEAgLTczLDkgKzczLDE2IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCiAgICAgIyBTZXRDRE1TZXNzaW9uCiAgICAgS2V5QWRkZWQoKQotICAgICMgQ2Rt
SW5zdGFuY2VBdHRhY2hlZAotICAgICMgQ2RtSW5zdGFuY2VEZXRhY2hlZAotICAgICMgQXR0ZW1w
dFRvRGVjcnlwdFdpdGhJbnN0YW5jZQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIENkbUluc3RhbmNlQXR0YWNoZWQoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIgaW5zdGFuY2VJZCkKKyAgICBDZG1JbnN0YW5jZURldGFjaGVkKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisgICAgQXR0ZW1wdFRvRGVjcnlw
dFdpdGhJbnN0YW5jZShXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5j
ZUlkKQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBTZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVk
KGJvb2wgc2hvdWxkKQogI2VuZGlmCiAKICAgICBCZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA1
YWRiMzdkOGI1YmRlZjAwYTU2NmY0YTAyZGI2NGJiOTVkYWIwMDI0Li44YmY4ZDNkNTVlYTU1NDY1
NDdiYzEzN2U0MjY4NDBhNGExMWY4MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMyMTcsNCArMzIxNyw1OSBAQCBPcHRpb25hbDxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmRlYwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2UmIG1lc3NhZ2UpCit7CisgICAgZW5jb2RlciA8PCBtZXNz
YWdlLmZpcnN0OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNz
YWdlLnNlY29uZC5jb3B5UmVmKCk7CisgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsKK30KKwor
T3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiAgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2VU
eXBlIHR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIHJldHVybiBtYWtlT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlPih7IHR5cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIH0pOwor
fQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImIGtleVN0YXR1c2VzKQoreworICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGtleVN0YXR1c2VzLnNpemUoKSk7CisgICAg
Zm9yIChhdXRvJiBrZXlTdGF0dXMgOiBrZXlTdGF0dXNlcykgeworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBrZXkgPSBrZXlTdGF0dXMuZmlyc3QuY29weVJlZigpOworICAgICAgICBlbmNv
ZGVyIDw8IGtleSA8PCBrZXlTdGF0dXMuc2Vjb25kOworICAgIH0KK30KKworT3B0aW9uYWw8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICB1aW50NjRfdCBkYXRhU2l6ZTsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGFTaXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2Vz
OworICAgIGtleVN0YXR1c2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGF0YVNpemUpOworCisg
ICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyArK2kpIHsKKyAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGtleSkg
fHwgIWtleSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXMgc3RhdHVzOworICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXR1cykpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIGtleVN0YXR1c2VzLnVuY2hlY2tlZEFwcGVuZCh7IGtleS5yZWxl
YXNlTm9uTnVsbCgpLCBzdGF0dXMgfSk7CisgICAgfQorICAgIHJldHVybiBrZXlTdGF0dXNlczsK
K30KKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCiB9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXgg
ZTk1MzU2OTMwNGY3MjE5M2I4ZGEyOGQ4ODZiYjVmODJiMjc1NmIyOS4uODEwMGM5MjQzZmFkYjg3
NjFjNmUzMTdlYTNlZjM0YjA4YTFmMmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTU1LDYgKzU1LDExIEBACiAjaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0FkZGl0aW9ucy5oPgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorI2VuZGlmCisKICNp
ZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsK
QEAgLTgzNSw2ICs4NDAsMTggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBPcHRpb25hbDxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYp
OworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3Nh
Z2U+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3RvciYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gZGVjb2RlKERlY29kZXImKTsKK307
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtOTcx
LDQgKzk4OCwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdURkxvZ0xldmVsPiB7
CiAgICAgPjsKIH07CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordGVtcGxhdGUgPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9h
ZEZhaWx1cmU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwKKyAgICBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSwKKyAgICBXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSwKKyAgICBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6TWlz
bWF0Y2hlZFNlc3Npb25UeXBlLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vz
c2lvbkxvYWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcgorICAgID47Cit9OworCit0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkNETUluc3Rh
bmNlOjpIRENQU3RhdHVzLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpV
bmtub3duLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpWYWxpZCwKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0UmVzdHJpY3RlZCwKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0RG93bnNjYWxlZAorICAg
ID47Cit9OworCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBh
NWQwYmUxNDI3MWY2MzA2ZjgzNmI4ZmRiZDdkNDIwZjI5NTI0NmVhLi5lZjExYjA4MTAyNjc4ODZh
NjZhNjc5MzEwNGIwMTM0YjBhMGRkMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTMxLDYgKzMxLDEwIEBA
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwCkBAIC0zOSw2ICs0Myw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1By
b3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwCiAKKwog
TmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwCkBAIC01MzQsNiArNTM5LDEwIEBAIFdlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRp
b1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKK1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCitXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlN
RVR5cGVDYWNoZS5jcHAgQG5vLXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAyY2NmYjY1YTg0YTI3Y2ZiZTc2NWJmNzViOTE2YzY1MzEyM2Y2
MzI0Li5kZDI4ZWJlMDk0MTE1ZjU2ZGViZWU4MTFkYThhMjM1NDFmNDUxNzg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OTUsNiAr
MTY5NSw3IEBACiAJCUNEMTlEMkVBMjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hT
ZWNoZXVyaXN0aWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMTlEMkU4MjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0
aWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
RDI4NjVFRTIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFQzIyNTU1
NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi87IH07CiAJCUNEMjg2
NUVGMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFRDIyNTU1NjIw
MDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovOyB9OworCQlDRDQ2NjE4
MzI0MDEwQTY3MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwODFFNzBEMDVGMDAwMDkwNjYgLyogVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENENDkxQjA2MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5oICovOyB9OwogCQlDRDQ5MUIwRDFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEIxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0Q0OTFCMEUxRTcz
MkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjBDMUU3MzJFNEQw
MDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CkBAIC0x
NzE3LDYgKzE3MTgsMjAgQEAKIAkJQ0RBMjlBMkIxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJQ0RBOTNEQjAyMkY4QkNGNDAw
NDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTkzREFFMjJGOEJDRjMw
MDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBOTNEQjEyMkY4
QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUYy
MkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMu
Y3BwICovOyB9OworCQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAqLzsg
fTsKKwkJQ0RBQzIwQzMyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
QzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICov
OyB9OworCQlDREFDMjBDNDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEI3MjNG
QzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovOyB9OworCQlDREFDMjBDNTIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUz
IC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKKwkJQ0RBQzIwQzcyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBQzIwQkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETS5oICovOyB9
OworCQlDREFDMjBDOTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5oICovOyB9OworCQlDREFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
QzIwQzAyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLzsgfTsKKwkJQ0RB
QzIwQ0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzEy
M0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovOyB9
OworCQlDREFDMjBDRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzIyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwRjcy
M0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBG
MjIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKKwkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGOTIzRkM3MjZD
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIw
RUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90
ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNEQzI4MzFEMjAxQkQ3OUQwMEU2RTc0
NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3Jl
ZW5TdGFja1ZpZXcuaCAqLzsgfTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyLmggKi87IH07CiAJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBD
b2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi87IH07CkBAIC00
OTQ1LDYgKzQ5NjAsMTAgQEAKIAkJQ0QxOUQyRTkyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91
Y2hTZWNoZXVyaXN0aWMuY3BwOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUMy
MjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
NDY2MTgwMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
c1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2Fn
ZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgxMjQwMTA1
NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODIyNDAxMDU2NDAw
NDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNENDkxQjA1MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkx
QjA2MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDQ5MUIwQTFFNzMyRDEyMDAwMDkwNjYgLyogVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTg2LDYg
KzUwMDUsNDMgQEAKIAkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNEQTkzREFFMjJGOEJDRjMwMDQ5MEE2
OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgcGF0aCA9IGlvcy9m
dWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxz
Y3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHBhdGggPSBpb3MvZnVs
bHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90
ZUNETUZhY3RvcnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUz
IC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVD
RE1GYWN0b3J5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3
QzIzRkIxRUY5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVD
RE1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREFDMjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RN
UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFEMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBQzIwQUUyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEIxMjNGQjU4RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIyMjNGQjU4
RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETUluc3RhbmNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQjMyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEI2MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1D
b25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI5MjNG
QzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBCQjIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCQzIzRkMy
Rjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJEMjNGQzJGNzQw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEJFMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQkYyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUIyM0ZDMzgzODAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
RUQyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFD
MjBFRTIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBs
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFD
MjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMDIz
RkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjEyM0ZDMzgzQTAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYy
MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9y
eVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwRjMyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94
eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY0MjNGQzM4
M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdL
RnVsbHNjcmVlblN0YWNrVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1Zp
ZXcuaDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREMyODMxQzIwMUJENzlEMDBFNkU3NDUgLyogV0tG
dWxsc2NyZWVuU3RhY2tWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tGdWxsc2NyZWVu
U3RhY2tWaWV3Lm1tOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREMzODJGNzE3MjExNTA2MDA4QTJG
QzMgLyogQ0ZOZXR3b3JrLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ0ZOZXR3b3JrLmZy
YW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFt
ZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC01MjY2LDYgKzUzMjIsMjAg
QEAKIAkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmggKi8sCiAJCQkJMDdCMUQwNEIyM0QzOEZDRTAwMzk5QTZFIC8qIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4RTIg
LyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJG
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uY3BwICovLAorCQkJCUNEQUMyMEJBMjNGQzJG
NzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLywKKwkJCQlDREFDMjBCODIzRkMyRjczMDAyMURF
RTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oICovLAorCQkJCUNEQUMyMEI5MjNGQzJGNzMw
MDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmNwcCAqLywKKwkJCQlDREFDMjBDMDIzRkMyRjc1
MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovLAorCQkJCUNEQUMyMEMyMjNGQzJGNzUw
MDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkIyM0ZDMkY3
NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmNwcCAqLywKKwkJCQlDREFDMjBCNzIzRkMy
RjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCAqLywKKwkJCQlDREFDMjBDMTIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi8sCisJCQkJ
Q0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
ICovLAorCQkJCUNEQUMyMEJFMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uY3BwICovLAorCQkJCUNEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uaCAqLywKKwkJCQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEJDMjNGQzJG
NzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8sCiAJ
CQkJMDdCOTNGRjUyM0FGMENCODAwMzZGOEVBIC8qIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJh
dGlvbi5oICovLAogCQkJCTA3OTIzMTMwMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuY3BwICovLAogCQkJCTA3OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLywKQEAgLTUyOTEsNiArNTM2MSwxOCBAQAogCQkJCTFE
MEVDRUE5MjNGQzg0QkIwMEQxNzJGNiAvKiBjb2NvYSAqLywKIAkJCQkwNzFCQzU3RTIzQ0E1REIx
MDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwNzFCQzU3RjIz
Q0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmggKi8sCisJCQkJQ0RBQzIw
NzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgKi8sCisJCQkJ
Q0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5oICovLAor
CQkJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVz
c2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmggKi8sCisJCQkJQ0RBQzIwQjEyM0ZCNThFMjAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQUYyM0ZC
NTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCAqLywKKwkJ
CQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaCAqLywKKwkJCQlDREFDMjBBRDIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwODMyM0ZCMjEzNDAwMjFE
RUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjA4MjIzRkIyMTM0MDAyMURF
RTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLywKKwkJCQlDREFDMjA4NjIzRkIyMTU4MDAyMURFRTMg
LyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcyNUVGQUQyMzlCMDI0NTAw
QTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLywKIAkJCQkwNzI1
RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAq
LywKIAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05NjI1LDYgKzk3MDcsMjEgQEAKIAkJCQkxQTA0
M0I1QzEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLywK
IAkJCQkxQThFRkE2RTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1l
c3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRjMyM0ZDMzgzQTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIw
RUUyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGll
cy5oICovLAorCQkJCUNEQUMyMEY1MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBFQjIzRkMzODM4MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjYy
M0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMu
aCAqLywKKwkJCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NB
MzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLywKKwkJCQlDRDQ2NjE4
MDI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBs
aWVzLmggKi8sCisJCQkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBFRDIzRkMz
ODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICov
LAorCQkJCUNEQUMyMEYxMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVGMjNGQzM4MzkwMDIxREVF
MyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRjQy
M0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFD
MjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAq
LywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZGMjRBMkMxODc5RTRCQzAw
M0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oICovLAog
CQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTA1MjQsNiArMTA2MjEsMTYgQEAKIAkJCQk4MzA0
OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgyMjJCMzUxNUUwMDhEMEU4QiAvKiBSZWRpcmVjdFNP
QXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM3MjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM1MjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0YyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM0MjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0UyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RBQzIwQzMyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQjQyM0ZCNThGMjAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENBMjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUg
LyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1
MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXll
clRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTEyMjIwLDYgKzEyMzI3LDExIEBACiAJ
CQkJQzE1Q0JCMzcyM0YzN0VDQjAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTJENTRDMzFCMjEyRjREQTYwMDQ5QzE3NCAvKiBQcm9jZXNzTGF1bmNo
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2QUM3IC8qIFBy
b2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY3MjNG
QzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q0
NjYxODMyNDAxMEE2NzAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENzJBMUZBMjEyQkY0NkUw
MDUxN0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQzE4RkI0MjE4
QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcAppbmRleCA4ZGZmNTBmMzA4OGVkNDVjNTkwZWM4MWUyYzA5YTEzOGJhN2E1MzVmLi5j
NjAyNGNhZDlhOTU3NDJiZjdkNjJiMTkyNjlhN2NiNjZjZjA3MjNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAt
MzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgogI2luY2x1ZGUgIkxp
YldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC00NCw2ICs0NiwxMCBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwMSw2ICsxMDcsMTIgQEAgdm9pZCBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUNE
TUZhY3Rvcnk+KCktPmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2ZjYzYjIzMGY2MjdkMTJj
YzZlYzNlZjdkZDZjZTZhZDEyOTdhYTZhLi5hOWJhNGExNmJjMmVkYTgyZTM3ZGVkMTRlNDA2NTFh
NjAyNDcwODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC00OSw2ICs0OSwx
MCBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVkaWE7CkBAIC04OTksMTkgKzkwMywy
MiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNlPihp
bnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpDZG1JbnN0YW5jZUF0dGFjaGVkKGRvd25jYXN0PFJlbW90ZUNETUluc3Rh
bmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJikKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNl
JiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVD
RE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFuY2VEZXRhY2hlZChkb3duY2FzdDxS
ZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCi12
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZShDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRv
RGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAg
ICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OkF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+
KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKQEAgLTkxOSw2ICs5MjYsMTIgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKICAg
ICBtX3BsYXllci0+d2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKIH0KIAordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSkKK3sKKyAgICBh
dXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCks
IGluaXREYXRhLnNpemUoKSk7CisgICAgbV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkKGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YUJ1ZmZlcikpOworfQorCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKQEAgLTkyNiw2ICs5MzksMTMgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXkoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKGJvb2wgc2hvdWxkKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpTZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3Vs
ZCksIG1faWQpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCAxMzJmMzBhYjI5YjZlNTA5
ZjExMzk0OTI1ODBhNmUzNjcxY2M3OTA5Li5mZTI5MzE4MGVkYjk1YzIzYTc2MzQ3ZjEzMGE3YzQ2
YzRiOGQwNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTEzMiw2ICsxMzIsNyBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQgd2FpdGlu
Z0ZvcktleUNoYW5nZWQoKTsKKyAgICB2b2lkIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVk
KGNvbnN0IFN0cmluZyYsIElQQzo6RGF0YVJlZmVyZW5jZSYmKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTMxNyw2ICszMTgsMTAgQEAgcHJpdmF0
ZToKICAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgdm9pZCBzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wpIGZpbmFsOwor
I2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgYm9vbCByZXF1aXJlc1RleHRU
cmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbihXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCBlODg5N2I2
YTEwYTEwZDRiNzAwOTI5OGM3YWEyNzI4YmZlMTEyOTdhLi4zM2UyYTk4ZDQ3OTg3OWQyMTViNGQw
NDFhZmU3YWI1MGU4MzYyZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgpAQCAtNzUsNiArNzUsNyBAQCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
ICAgIFdhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKKyAgICBJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50
ZXJlZChTdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UgaW5pdERhdGEpCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGM5MWI0MGYzYjljNzViM2MxMTBiNjM2ZjY4Y2E1NzA1YTI1YjU0OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAt
MCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE0uaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJSZW1v
dGVDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUmVzdHJpY3Rpb25zLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPiBSZW1vdGVDRE06OmNy
ZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSWRlbnRp
ZmllciYmIGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4obmV3IFJlbW90ZUNETShXVEZNb3Zl
KGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitS
ZW1vdGVDRE06OlJlbW90ZUNETShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwg
UmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYgY29uZmln
dXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVu
dGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmln
dXJhdGlvbikpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0
aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBMb2NhbFN0b3Jh
Z2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJl
bW90ZUNETVByb3h5OjpHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJh
dGlvbiksIGFjY2VzcyksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCisK
K2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9u
V2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKK3sK
KyAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoKS4KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworQ0RNUmVxdWlyZW1lbnQgUmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVx
dWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwg
Y29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwor
fQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMm
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBDRE1SZXF1
aXJlbWVudDo6Tm90QWxsb3dlZDsKK30KKworYm9vbCBSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitSZWZQdHI8Q0RNSW5zdGFuY2U+IFJlbW90ZUNETTo6Y3JlYXRl
SW5zdGFuY2UoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1J
bnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVD
RE1Qcm94eTo6Q3JlYXRlSW5zdGFuY2UoKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpDcmVh
dGVJbnN0YW5jZTo6UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24pLCBtX2lkZW50aWZpZXIpOworICAg
IGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1vdGVDRE1J
bnN0YW5jZTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQp
LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJ
bml0aWFsaXplKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVy
KTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjaGVj
ayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnVwZGF0ZUxpY2Vuc2UoKS4KKyAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOworfQorCitP
cHRpb25hbDxTdHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxh
dGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKCku
CisgICAgcmV0dXJuIHNlc3Npb25JZDsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1Y2YzZWEz
ZTJjNTZkNWQ1ZDQ0ZWRkNGE0NTc0ZTM0Y2ViMWEyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1v
dGVDRE0gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJpdmF0ZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYsIFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE0oKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6Cisg
ICAgUmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSWRlbnRp
ZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOworCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25m
aWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxs
YmFjayYmKSBmaW5hbDsKKworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdl
YkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29s
IHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29u
c3QgZmluYWw7CisgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJD
b3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJl
VW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgp
IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgT3B0aW9u
YWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsK
KworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0K
KyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZFJvYnVzdG5lc3NlczsgfQorICAg
IGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7IH0KKyAgICBib29sIHN1
cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3Vw
cG9ydHNTZXNzaW9uczsgfQorCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rv
cnk7CisgICAgUmVtb3RlQ0RNSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RN
Q29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNv
bmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjJjNDY0ZmRmZGNkOGMzNTc1NmIwZTM4ZGFkMGY4
OTM5MDU4ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Ry
dWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24geworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBw
b3J0ZWRJbml0RGF0YVR5cGVzOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1
c3RuZXNzZXM7CisgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICBib29s
IHN1cHBvcnRzU2Vzc2lvbnM7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVy
IDw8IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVk
Um9idXN0bmVzc2VzOworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNh
dGVzOworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZUNETUNv
bmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0
aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAg
ICBkZWNvZGVyID4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGlmICghc3VwcG9y
dGVkSW5pdERhdGFUeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7
CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAgICBpZiAo
IXN1cHBvcnRlZFJvYnVzdG5lc3NlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7Cisg
ICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGlm
ICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAg
ICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXNzaW9uczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1Nl
c3Npb25zKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1
cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUoKnN1cHBvcnRlZEluaXREYXRhVHlwZXMpLAorICAg
ICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVkUm9idXN0bmVzc2VzKSwKKyAgICAgICAgICAgICpz
dXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcywKKyAgICAgICAgICAgICpzdXBwb3J0c1Nlc3Npb25z
LAorICAgICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGFmODNlMzgyOWVlYTM3M2VjYzQ2YzI2ODA1
NWU2OTYyOGE5MzllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5Lmgi
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisK
KyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1GYWN0b3J5
KFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKwor
UmVtb3RlQ0RNRmFjdG9yeTo6flJlbW90ZUNETUZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGlu
Z3MmIHNldHRpbmdzKQoreworICAgIGlmIChzZXR0aW5ncy51c2VHUFVQcm9jZXNzRm9yTWVkaWEo
KSkgeworICAgICAgICBhdXRvJiBmYWN0b3JpZXMgPSBDRE1GYWN0b3J5OjpyZWdpc3RlcmVkRmFj
dG9yaWVzKCk7CisgICAgICAgIGZhY3Rvcmllcy5jbGVhcigpOworICAgICAgICBmYWN0b3JpZXMu
YXBwZW5kKHRoaXMpOworICAgIH0gZWxzZQorICAgICAgICBDRE1GYWN0b3J5OjpyZXNldEZhY3Rv
cmllcygpOworfQorCisKK2NvbnN0IGNoYXIqIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnRO
YW1lKCkKK3sKKyAgICByZXR1cm4gIlJlbW90ZUNETUZhY3RvcnkiOworfQorCitHUFVQcm9jZXNz
Q29ubmVjdGlvbiYgUmVtb3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKQorewor
ICAgIHJldHVybiBtX3Byb2Nlc3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKwor
Ym9vbCBSZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKK3sKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAgIGdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSksIE1lc3NhZ2VzOjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0p
OworICAgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRl
PiBSZW1vdGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7
CisgICAgUmVtb3RlQ0RNSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb247CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNKGtleVN5
c3RlbSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETTo6UmVwbHko
aWQsIGNvbmZpZ3VyYXRpb24pLCB7IH0pOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBSZW1vdGVDRE06OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwg
V1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNE
TUZhY3Rvcnk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBp
ZCwgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uKQoreworICAgIEFTU0VS
VCghbV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZN
b3ZlKHNlc3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9u
KFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1f
c2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgp
KSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2NlYmU4NGMyYjEy
YWQ0MjM4MzhhMzYyN2EwNjRlZWJkNDcwOTUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKQEAgLTAsMCArMSw4
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RN
RmFjdG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFJlbW90
ZUNETTsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjsKK2NsYXNzIFdlYlByb2Nlc3M7
CisKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnkgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpD
RE1GYWN0b3J5CisgICAgLCBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlQ0RNRmFjdG9yeShXZWJQcm9j
ZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeSgpOworCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvY2VzczsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdw
dVByb2Nlc3NDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0
IFdlYkNvcmU6OlNldHRpbmdzJik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lv
bihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkNETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29s
IHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgSGFzaE1hcDxS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uPj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+PiBtX2NkbXM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9j
ZXNzOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVlM2Ez
ODE5YzE3MDdiNTU4YjNmZDlhYWE4ODE2MzE1ODM5MmZhZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNE
TUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUlkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTFhMGUwYjUyZDJkYjVi
MzY2ZThhYjY2OTY4YzU2MTQ2MmVkZDljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTAsMCArMSwx
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSW5zdGFuY2UuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUlu
c3RhbmNlPiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVDRE1JbnN0YW5jZShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlk
KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZTo6UmVt
b3RlQ0RNSW5zdGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRp
b24mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisg
ICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBwZXJzaXN0ZW50U3RhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7Cisg
ICAgICAgIGNhbGxiYWNrKEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNp
c3RlbnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhGYWlsZWQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OlNldFNlcnZlckNlcnRpZmljYXRlKGNlcnRpZmljYXRlLmdldCgpKSwgV1RGTW92
ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6
OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpLCBtX2lkZW50aWZpZXIpOwor
fQorCitSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5j
ZTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZDsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uKCksIE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBseShpZCks
IG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUobWFrZVdl
YWtQdHIobV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCkpOworICAgIG1fZmFjdG9yeS0+YWRk
U2Vzc2lvbihpZCwgc2Vzc2lvbi5jb3B5UmVmKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NWY0OWI5NzM5ZDI0NzlkNTU1
ZGY4ZmIwMjdlZGZlY2E5YzM0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFu
Y2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkNETUluc3RhbmNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5SZW1vdGVDRE1JbnN0YW5jZSgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNE
TUluc3RhbmNlPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOwor
CisgICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNSW5z
dGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOworCisgICAgSW1wbGVt
ZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIElt
cGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CisgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93
RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNl
dFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lz
dGVtOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vz
c2lvbigpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7
CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworfTsKKworfQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NETV9JTlNUQU5DRShXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlLCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGUpCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjUzMmQ3MmU3Y2U0Yjg1M2YyZDNiOTM0NTVlMTkyODFjNDE5ZmE0MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiB7CisgICAgU3RyaW5nIGtleVN5c3RlbTsKKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwga2V5U3lzdGVtOworICAgIH0KKworICAgIHRlbXBs
YXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAg
T3B0aW9uYWw8U3RyaW5nPiBrZXlTeXN0ZW07CisgICAgICAgIGRlY29kZXIgPj4ga2V5U3lzdGVt
OworICAgICAgICBpZiAoIWtleVN5c3RlbSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCprZXlTeXN0ZW0p
LAorICAgICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmZkZTY5MWMz
ZTg5NWI4ODU5ZTYyMDVhNzFlMTE1ZmE5YjRmZTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIu
aApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1v
dGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
VHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVjY2JlMjM5NmY5YjJmODZjOWM2YjI2ZjMzZTFi
YTIzNWIwMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
UmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpj
cmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsK
K30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24o
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQor
ICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQoreworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAg
ICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwg
RmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlwZSwgaW5p
dERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVk
ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVyKCkpIHsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNl
LCBGYWlsZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxi
YWNrKG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgc2Vzc2lvbklkLCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0s
IG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIFdURk1vdmUocmVz
cG9uc2UpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHNlc3Npb25XYXND
bG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8
ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2Us
IGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soc2Vzc2lvbldhc0Ns
b3NlZCwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBX
VEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0s
IG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2Fk
U2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBp
ZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpMb2FkU2Vzc2lvbih0eXBlLCBzZXNzaW9uSWQsIG9yaWdp
biksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoT3B0aW9uYWw8S2V5U3RhdHVzVmVj
dG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24s
IE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQsIFNlc3Npb25Mb2Fk
RmFpbHVyZSBsb2FkRmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
Y2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdl
KSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkLCBsb2FkRmFpbHVyZSk7CisgICAgfSwg
bV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmNsb3Nl
U2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjaygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpDbG9zZVNlc3Npb24oc2Vzc2lvbklkKSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjaygpOwor
ICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUg
dHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICgh
bV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSwgV1RGOjpudWxsb3B0LCBGYWlsZWQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5
cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNo
YW5nZWRLZXlzLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYgbWVz
c2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBPcHRpb25hbDxSZWY8U2hh
cmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlmIChtZXNz
YWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKKyAgICAgICAgICAgIHJlYWxNZXNzYWdl
ID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2Vl
ZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpTdG9yZVJlY29y
ZE9mS2V5VXNhZ2Uoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtl
eVN0YXR1c2VzKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0
ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5cGUs
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1f
Y2xpZW50ICYmIG1lc3NhZ2UuYnVmZmVyKCkpCisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2Fn
ZSh0eXBlLCBtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCkpOworfQorCit2b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9u
SWRDaGFuZ2VkKHNlc3Npb25JZCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kZmZlYzA5YzQ5YWUyNDIxNTBjYjI0YWNhMDk1MWZlZThmNDhm
NTUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBmaW5hbCA6
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbigpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RN
RmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1G
YWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYpOworCisgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAg
ICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKTsKKyAgICB2b2lkIHNl
bmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UmJik7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOwor
CisKKyAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0K
KyAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KKyAg
ICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBsb2FkU2Vzc2lv
bihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgY2xvc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHN0
b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgZmluYWw7CisKKyAg
ICBXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRyPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNz
YWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOGMyMzkyZTdlZjg2MjA0NjIxZDI4NDE0MzhiNWVkZjRkMzgx
NTM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMiBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFVwZGF0ZUtleVN0YXR1c2VzKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKQor
ICAgIFNlbmRNZXNzYWdlKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSB0eXBl
LCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2FnZSkKKyAgICBTZXNzaW9uSWRD
aGFuZ2VkKFN0cmluZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODZhY2QxMjY1YWYwYzg0NjM4
OGUyM2Y5Y2NhMTZkOTAyMzM4ZmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3Rm
L09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCBhZTAxNjFhYWQ5NDc0ZDZi
MGYxZjkwMGIwNTQ0ZjU5ODBkMzY5OGZmLi5iOWY0ZDJhN2UzMjdlYmUzMjBkNTdlNzU4YmFiMDNl
NTdhNmFkNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTI4LDEyICsy
OCwxNSBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAi
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3Nh
Z2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDE2ZDZmOGNhNzMzNTU0YjEyY2JhYTBlY2ZjOTIyZWJkMGY2NTI4ZDEuLjhm
YmM3NDMxYmU3N2EwYzk2MjVhZDMxODQ3ZmFlMzZjYTkwODNjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjAsNiArMzIwLDkgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIuaCIKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZh
Y3RvcnkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzY4NSw2
ICszNjg4LDkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiBzdG9yZSkKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4o
KS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVDRE1GYWN0
b3J5PigpLT51cGRhdGVQcmVmZXJlbmNlcyhzZXR0aW5ncyk7CisjZW5kaWYKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNDdjOWMwOGFkZWU0
NTg1ZDkxMzM0NmIxYWJkZWU4NjdjNWYxY2I1Ny4uYjVkNzJiNGU3ZjYyMDNmZjNjYmM1MjIyNmQ3
NjgzNWZiMjA0ZTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtMTc0LDYgKzE3NCwxMCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnkuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lv
bklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nlc3Npb25JRD0lIiBQUkl1NjQgIl0gV2Vi
UHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQsICMjX19WQV9BUkdT
X18pCiAKQEAgLTI0MCw2ICsyNDQsMTAgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAg
YWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBhZGRT
dXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCk7CisjZW5kaWYKKwogICAgIEdpZ2FjYWdlOjpm
b3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391979</attachid>
            <date>2020-02-28 07:46:02 -0800</date>
            <delta_ts>2020-02-28 08:07:55 -0800</delta_ts>
            <desc>Patch for landing: Part 1: WebCore</desc>
            <filename>bug-208090-20200228074600.patch</filename>
            <type>text/plain</type>
            <size>156417</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM2ZGFjZjZmZWE3MTU3
YzdhNDkyMGFhMzMxNjMwZDkzNWNiMzYwMS4uMGNjYzhjODY5ZTI3ZTE0ODJkNGY2OWQ4ZTBiMDRh
ZWYzYWQwY2UxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0wMi0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50
IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIFRvIGVuYWJsZSBjYWNoaW5nIG9mIGNlcnRhaW4gQ0RN
IHByb3BlcnRpZXMsIGFsbG93IHRoZW0gdG8gYmUgZmV0Y2hlZCByYXRoZXIgdGhhbiBxdWVyaWVz
LiBBcyBzdWNoLAorICAgICAgICBDRE1Qcml2YXRlOjpzdXBwb3J0c0luaXREYXRhVHlwZSAtPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzLCBzdXBwb3J0c1JvYnVzdG5lc3MgLT4gc3VwcG9ydGVkUm9i
dXN0bmVzc2VzLgorCisgICAgICAgIFRvIGVuYWJsZSBDRE0gdHlwZXMgdG8gYmUgcGFzc2VkIGFj
cm9zcyBYUEMsIGFkZCBleHBsaWNpdCBzaXplcyB0byB0aGUgZW51bWVyYXRpb25zLCBhbmQgYWRk
IGVuY29kZSBhbmQKKyAgICAgICAgZGVjb2RlIHRlbXBsYXRlcyB0byB0aGUgZGF0YSB0eXBlcy4K
KworICAgICAgICBUbyBlbmFibGUgYXN5bmMgbWVzc2FnaW5nIGZvcm0gdGhlIEdQVSBwcm9jZXNz
J3MgTWVkaWFQbGF5ZXIsIHNlbmQgdGhlIE1lZGlhUGxheWVyIHRoZSBpbmZvcm1hdGlvbiBpdAor
ICAgICAgICBuZWVkcyB3aGVuIGJvdGggbGVnYWN5LSBhbmQgbW9kZXJuLUVNRSBBUElzIGFyZSBi
b3RoIGVuYWJsZWQsIHJhdGhlciB0aGFuIGFsbG93IHRoZSBNZWRpYVBsYXllclByaXZhdGUKKyAg
ICAgICAgdG8gcXVlcnkgdGhlIE1lZGlhUGxheWVyLgorCisgICAgICAgIE1vdmUgbW9zdCBvZiB0
aGUgYWxnb3JpdGhpbWljIGltcGxlbWVudGF0aW9uIGZyb20gQ0RNIGludG8gQ0RNUHJpdmF0ZSwg
YWxsb3dpbmcgaXQgdG8gYmUgcnVuIGZyb20gd2l0aGluCisgICAgICAgIHRoZSBHUFUgcHJvY2Vz
cy4gU2ltaWxtYXJseSwgbWFrZSBtb3N0IG9mIHRoZSBzeW5jaHJvbm91cyBtZXRob2RzIGluIENE
TUluc3RhbmNlIGluc3RlYWQgdGFrZSBhIGNhbGxiYWNrCisgICAgICAgIHBhcmFtZXRlciwgYWxs
b3dpbmcgdGhlbSB0byBiZSBpbXBsZW1lbnRlZCBpbiBhIHJlbW90ZSBwcm9jZXNzLgorCisgICAg
ICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN5
c3RlbUFjY2Vzczo6Y3JlYXRlTWVkaWFLZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNl
cnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJO
ZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
S2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5n
aW5lV2FzVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1LZXlTdGF0dXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETU1lZGlhQ2Fw
YWJpbGl0eTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETU1lZGlhQ2FwYWJp
bGl0eTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNz
YWdlVHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlOjpkb1N1cHBvcnRlZENvbmZpZ3Vy
YXRpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGU6OmlzUGVyc2lzdGVudFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0
aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0
Q29uc2VudFN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJp
dmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmg6
CisgICAgICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmtleU5lZWRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3Jh
cHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE06OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NETTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzIGNvbnN0KToK
KwogMjAyMC0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBDcmVhdGUgQXVkaW9EZXN0aW5hdGlvbiBpbiB0aGUgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NjkyNTk3NTE1ZjY4NTkwNGRmMTdiYWE2OGZlYTljNzc4MmU3YzgxNy4uMWVlNDllNjkxNjVmOWUz
ZjQyZTlkMDRjNDc2YmJmMTU1ZjUzYmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
UF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkb3B0IGNoYW5nZXMgdG8gTWVk
aWFQbGF5ZXJQcm94eS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJN
ZWRpYVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJhdGVneTo6cmVn
aXN0ZXJDRE1GYWN0b3JpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1l
ZGlhU3RyYXRlZ3kuaDoKKwogMjAyMC0wMi0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQW5ub3RhdGUgbWVkaWFUeXBlIHdpdGggYW4gYXZhaWxhYmlsaXR5
IG1hY3JvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkNGQwZmUzYjZhZDBjYjE2
NjI3YjZmYjRlNWZiOWViNDQxNjVjZTMuLmY4ZWFkNjI5NzQyMGNlMzNlMjEyY2Y4Mzg5YTg3MzFl
Y2M2Zjk3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0wMi0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkb3B0IGNoYW5nZXMgdG8g
UGxhdGZvcm1TdHJhdGVnaWVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBDcmVhdGUgQXVkaW9EZXN0aW5hdGlvbiBpbiB0aGUgR1BV
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGRjMTNhOGMwM2Q4Y2Y0NWYyODIxZmNjNmFl
MjI4N2NiZTBhZmIzNTYuLjZlODNlZWNiZDZkMTE1NDFhNzIyZWRmNDM1ODg1ZDgxOWM3YTQxZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTAzNSw2ICsxMDM1LDIwIEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCiAgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKIAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAor
ICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorICAgIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZVNlc3Npb24uaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0
YXR1cy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgK
KyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisgICAgcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
LmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAorICAgIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKKwogICAgIHBsYXRmb3JtL2dh
bWVwYWQvR2FtZXBhZFByb3ZpZGVyLmgKICAgICBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92
aWRlckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDRiYmIy
YmNlNjE4NzRiN2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAuLmM1NWJlMDY0MjE2NTAwZWQwYjI3
ZDVhOWU5Y2M5NjIxZjdhNGEwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKQEAgLTc5LDUxMCArNzksMTggQEAgdm9pZCBDRE06OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRl
Q29uZmkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNn
ZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRpb24KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkg
Tm92ZW1iZXIgMjAxNgorICAgIC8vIEltcGxlbWVudGVkIGluIENETVByaXZhdGU6OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oKQogCi0gICAgLy8gMy4xLjEuMSBHZXQgU3VwcG9ydGVkIENvbmZp
Z3VyYXRpb24KLSAgICAvLyBHaXZlbiBhIEtleSBTeXN0ZW1zIGltcGxlbWVudGF0aW9uIGltcGxl
bWVudGF0aW9uLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlIGNvbmZpZ3Vy
YXRpb24sIGFuZCBvcmlnaW4sCi0gICAgLy8gdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBv
cnRlZCBjb25maWd1cmF0aW9uIG9yIE5vdFN1cHBvcnRlZCBhcyBhcHByb3ByaWF0ZS4KLQotICAg
IC8vIDEuIExldCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBiZSBDb25zZW50RGVuaWVkLgotICAg
IC8vIDIuIEluaXRpYWxpemUgcmVzdHJpY3Rpb25zIHRvIGluZGljYXRlIHRoYXQgbm8gY29uZmln
dXJhdGlvbnMgaGF2ZSBoYWQgdXNlciBjb25zZW50IGRlbmllZC4KLSAgICBNZWRpYUtleXNSZXN0
cmljdGlvbnMgcmVzdHJpY3Rpb25zIHsgfTsKLSAgICBkb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25T
dGVwKFdURk1vdmUoY2FuZGlkYXRlQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25z
KSwgV1RGTW92ZShjYWxsYmFjaykpOwotfQotCi12b2lkIENETTo6ZG9TdXBwb3J0ZWRDb25maWd1
cmF0aW9uU3RlcChNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1
cmF0aW9uLCBNZWRpYUtleXNSZXN0cmljdGlvbnMmJiByZXN0cmljdGlvbnMsIFN1cHBvcnRlZENv
bmZpZ3VyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbgotICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2LCBjdGQuCi0KLSAgICAvLyAz
LjEuMS4xIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbgotICAgIC8vIDMuIFJlcGVhdCB0aGUg
Zm9sbG93aW5nIHN0ZXAgd2hpbGUgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gaXMgQ29uc2VudERl
bmllZDoKLSAgICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBhbmQsIGlmIHBy
b3ZpZGVkLCByZXN0cmljdGlvbnMgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlCi0gICAg
Ly8gR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50IGFsZ29yaXRobSB3aXRo
IGltcGxlbWVudGF0aW9uLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwKLSAgICAvLyByZXN0cmlj
dGlvbnMgYW5kIG9yaWdpbi4KLSAgICBhdXRvIG9wdGlvbmFsQ29uZmlndXJhdGlvbiA9IGdldFN1
cHBvcnRlZENvbmZpZ3VyYXRpb24oY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KTsKLSAgICBpZiAoIW9wdGlvbmFsQ29uZmlndXJhdGlvbikgeworICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IGlmICghZG9jdW1lbnQgfHwgIW1fcHJpdmF0ZSkgewogICAgICAgICBjYWxsYmFjayhXVEY6Om51
bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb25zZW50Q2FsbGJh
Y2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChDb25zZW50U3RhdHVzIHN0YXR1cywgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiYgY29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYgcmVzdHJpY3Rpb25z
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAgY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICAvLyAzLjEuMS4yIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbiBhbmQgQ29uc2VudCwgY3Rk
LgotICAgICAgICAvLyAyMi4gTGV0IGNvbnNlbnQgc3RhdHVzIGFuZCB1cGRhdGVkIHJlc3RyaWN0
aW9ucyBiZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIEdldCBDb25zZW50IFN0YXR1cyBhbGdv
cml0aG0gb24gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwKLSAgICAgICAgLy8gICAgIHJlc3Ry
aWN0aW9ucyBhbmQgb3JpZ2luIGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2Yg
Y29uc2VudCBzdGF0dXMgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgICAgIHN3aXRjaCAo
c3RhdHVzKSB7Ci0gICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmllZDoKLSAg
ICAgICAgICAgIC8vIOKGsyBDb25zZW50RGVuaWVkOgotICAgICAgICAgICAgLy8gICAgUmV0dXJu
IENvbnNlbnREZW5pZWQgYW5kIHVwZGF0ZWQgcmVzdHJpY3Rpb25zLgotICAgICAgICAgICAgd2Vh
a1RoaXMtPmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoV1RGTW92ZShjb25maWd1cmF0aW9u
KSwgV1RGTW92ZShyZXN0cmljdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSBDb25zZW50U3RhdHVzOjpJbmZvcm1Vc2VyOgotICAg
ICAgICAgICAgLy8g4oazIEluZm9ybVVzZXIKLSAgICAgICAgICAgIC8vICAgIEluZm9ybSB0aGUg
dXNlciB0aGF0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgaW4gdXNlIGluIHRoZSBvcmln
aW4gaW5jbHVkaW5nLCBzcGVjaWZpY2FsbHksIHRoZSBpbmZvcm1hdGlvbiB0aGF0Ci0gICAgICAg
ICAgICAvLyAgICBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9vciBEaXN0aW5jdGl2ZSBQ
ZXJtYW5lbnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZSB3aWxsIGJlIHVzZWQgaWYgdGhl
Ci0gICAgICAgICAgICAvLyAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgInJlcXVpcmVkIi4gQ29udGludWUgdG8gdGhlIG5leHQg
c3RlcC4KLSAgICAgICAgICAgIC8vIE5PVEU6IEltcGxlbWVudC4KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6QWxsb3dlZDoKLSAgICAgICAgICAgIC8v
IOKGsyBBbGxvd2VkOgotICAgICAgICAgICAgLy8gQ29udGludWUgdG8gdGhlIG5leHQgc3RlcC4K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8vIDIzLiBSZXR1cm4gYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjb25maWd1
cmF0aW9uKSk7Ci0gICAgfTsKLSAgICBnZXRDb25zZW50U3RhdHVzKFdURk1vdmUob3B0aW9uYWxD
b25maWd1cmF0aW9uLnZhbHVlKCkpLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucyksIFdURk1vdmUoY29u
c2VudENhbGxiYWNrKSk7Ci19Ci0KLWJvb2wgQ0RNOjppc1BlcnNpc3RlbnRUeXBlKE1lZGlhS2V5
U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUpCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jaXMtcGVyc2lzdGVudC1zZXNzaW9uLXR5cGUKLSAgICAvLyBXM0Mg
RWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotCi0gICAgLy8gNS4xLjEuIElzIHBlcnNp
c3RlbnQgc2Vzc2lvbiB0eXBlPwotICAgIC8vIDEuIExldCB0aGUgc2Vzc2lvbiB0eXBlIGJlIHRo
ZSBzcGVjaWZpZWQgTWVkaWFLZXlTZXNzaW9uVHlwZSB2YWx1ZS4KLSAgICAvLyAyLiBGb2xsb3cg
dGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2Ygc2Vzc2lvbiB0eXBlIGZyb20gdGhlIGZvbGxvd2lu
ZyBsaXN0OgotICAgIHN3aXRjaCAoc2Vzc2lvblR5cGUpIHsKLSAgICBjYXNlIE1lZGlhS2V5U2Vz
c2lvblR5cGU6OlRlbXBvcmFyeToKLSAgICAgICAgLy8g4oazICJ0ZW1wb3JhcnkiCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1lZGlhS2V5U2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRM
aWNlbnNlOgotICAgIGNhc2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVj
b3JkOgotICAgICAgICAvLyDihrMgInBlcnNpc3RlbnQtbGljZW5zZSIKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1PcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETTo6Z2V0
U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYgcmVzdHJpY3Rp
b25zKQotewotICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dl
dC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbi1hbmQtY29uc2VudAotICAgIC8vIFczQyBFZGl0b3In
cyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2Ci0KLSAgICBBU1NFUlQobV9wcml2YXRlKTsKLSAgICBp
ZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIC8vIDMu
MS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50Ci0gICAgLy8gR2l2
ZW4gYSBLZXkgU3lzdGVtcyBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbiwgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLAotICAgIC8vIHJlc3Ry
aWN0aW9ucyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIGEgc3VwcG9ydGVkIGNv
bmZpZ3VyYXRpb24sIE5vdFN1cHBvcnRlZCwgb3IgQ29uc2VudERlbmllZAotICAgIC8vIGFzIGFw
cHJvcHJpYXRlIGFuZCwgaW4gdGhlIENvbnNlbnREZW5pZWQgY2FzZSwgcmVzdHJpY3Rpb25zLgot
Ci0gICAgLy8gMS4gTGV0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBuZXcgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uIGRpY3Rpb25hcnkuCi0gICAgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiB7IH07Ci0KLSAgICAvLyAyLiBTZXQg
dGhlIGxhYmVsIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFsIHRo
ZSBsYWJlbCBtZW1iZXIgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24uCi0gICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmxhYmVsID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5sYWJlbDsKLQot
ICAgIC8vIDMuIElmIHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbiBpcyBub24tZW1wdHksIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgIGlmICgh
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLmlzRW1wdHkoKSkgewotICAgICAg
ICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgdHlwZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgRE9N
U3RyaW5ncy4KLSAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkVHlwZXM7Ci0KLSAgICAg
ICAgLy8gMy4yLiBGb3IgZWFjaCB2YWx1ZSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGlu
aXREYXRhVHlwZXMgbWVtYmVyOgotICAgICAgICBmb3IgKGF1dG8gaW5pdERhdGFUeXBlIDogY2Fu
ZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKSB7Ci0gICAgICAgICAgICAvLyAzLjIu
MS4gTGV0IGluaXREYXRhVHlwZSBiZSB0aGUgdmFsdWUuCi0gICAgICAgICAgICAvLyAzLjIuMi4g
SWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGdlbmVyYXRpbmcgcmVxdWVzdHMgYmFzZWQg
b24gaW5pdERhdGFUeXBlLCBhZGQgaW5pdERhdGFUeXBlCi0gICAgICAgICAgICAvLyAgICAgICAg
dG8gc3VwcG9ydGVkIHR5cGVzLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4g
VGhlIGVtcHR5IHN0cmluZyBpcyBuZXZlciBzdXBwb3J0ZWQuCi0gICAgICAgICAgICBpZiAoaW5p
dERhdGFUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgaWYgKG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBlKGlu
aXREYXRhVHlwZSkpCi0gICAgICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKGluaXRE
YXRhVHlwZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAzLjMuIElmIHN1cHBvcnRlZCB0eXBl
cyBpcyBlbXB0eSwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKHN1cHBvcnRlZFR5
cGVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAg
ICAgLy8gMy40LiBTZXQgdGhlIGluaXREYXRhVHlwZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNv
bmZpZ3VyYXRpb24gdG8gc3VwcG9ydGVkIHR5cGVzLgotICAgICAgICBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24uaW5pdERhdGFUeXBlcyA9IFdURk1vdmUoc3VwcG9ydGVkVHlwZXMpOwotICAgIH0K
LQotICAgIC8vIDQuIExldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVtZW50IGJlIHRo
ZSB2YWx1ZSBvZiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmll
ciBtZW1iZXIuCi0gICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVy
UmVxdWlyZW1lbnQgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
cjsKLQotICAgIC8vIDUuIElmIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQgaXMg
Im9wdGlvbmFsIiBhbmQgRGlzdGluY3RpdmUgSWRlbnRpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGFj
Y29yZGluZyB0bwotICAgIC8vICAgIHJlc3RyaWN0aW9ucywgc2V0IGRpc3RpbmN0aXZlIGlkZW50
aWZpZXIgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICBpZiAoZGlzdGluY3RpdmVJ
ZGVudGlmaWVyUmVxdWlyZW1lbnQgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYm
IHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQpCi0gICAgICAgIGRpc3Rp
bmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFs
bG93ZWQ7Ci0KLSAgICAvLyA2LiBGb2xsb3cgdGhlIHN0ZXBzIGZvciBkaXN0aW5jdGl2ZSBpZGVu
dGlmaWVyIHJlcXVpcmVtZW50IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIHN3aXRjaCAo
ZGlzdGluY3RpdmVJZGVudGlmaWVyUmVxdWlyZW1lbnQpIHsKLSAgICBjYXNlIE1lZGlhS2V5c1Jl
cXVpcmVtZW50OjpSZXF1aXJlZDoKLSAgICAgICAgLy8g4oazICJyZXF1aXJlZCIKLSAgICAgICAg
Ly8gSWYgdGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdXNlIG9mIERpc3RpbmN0
aXZlIElkZW50aWZpZXIocykgaW4gY29tYmluYXRpb24KLSAgICAgICAgLy8gd2l0aCBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQu
Ci0gICAgICAgIGlmIChtX3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVx
dWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
OgotICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgotICAgICAgICAvLyBDb250aW51ZSB3aXRoIHRo
ZSBmb2xsb3dpbmcgc3RlcHMuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNZWRpYUtleXNS
ZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKLSAgICAgICAgLy8g4oazICJub3QtYWxsb3dlZCIKLSAg
ICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJ
ZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVyKHMpCi0gICAg
ICAgIC8vIGluIGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQg
cmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgotICAgICAgICBpZiAobV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0
aW9uLCByZXN0cmljdGlvbnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIC8vIDcuIFNldCB0aGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFsIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWly
ZW1lbnQuCi0gICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
ciA9IGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50OwotCi0gICAgLy8gOC4gTGV0IHBl
cnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGNhbmRp
ZGF0ZSBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIG1lbWJlci4KLSAgICBNZWRpYUtl
eXNSZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCA9IGNhbmRpZGF0ZUNvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlOwotCi0gICAgLy8gOS4gSWYgcGVyc2lzdGVudCBzdGF0
ZSByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwiIGFuZCBwZXJzaXN0aW5nIHN0YXRlIGlzIG5vdCBh
bGxvd2VkIGFjY29yZGluZyB0byByZXN0cmljdGlvbnMsCi0gICAgLy8gICAgc2V0IHBlcnNpc3Rl
bnQgc3RhdGUgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICBpZiAocGVyc2lzdGVu
dFN0YXRlUmVxdWlyZW1lbnQgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYmIHJl
c3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQpCi0gICAgICAgIHBlcnNpc3RlbnRTdGF0
ZVJlcXVpcmVtZW50ID0gIE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwotCi0gICAg
Ly8gMTAuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQg
ZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgc3dpdGNoIChwZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudCkgewotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOgotICAg
ICAgICAvLyDihrMgInJlcXVpcmVkIgotICAgICAgICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBwZXJzaXN0aW5nIHN0YXRlIGluIGNvbWJpbmF0aW9uIHdpdGggYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbgotICAgICAgICAvLyBhbmQgcmVzdHJpY3Rpb25zLCByZXR1
cm4gTm90U3VwcG9ydGVkLgotICAgICAgICBpZiAobV9wcml2YXRlLT5wZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVk
aWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6
Ok9wdGlvbmFsOgotICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgotICAgICAgICAvLyBDb250aW51
ZSB3aXRoIHRoZSBmb2xsb3dpbmcgc3RlcHMuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKLSAgICAgICAgLy8g4oazICJub3QtYWxs
b3dlZCIKLSAgICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHBlcnNpc3Rp
bmcgc3RhdGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0g
ICAgICAgIC8vIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQKLSAgICAgICAg
aWYgKG1fcHJpdmF0ZS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLCByZXN0cmljdGlvbnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJl
ZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIC8vIDExLiBTZXQgdGhlIHBlcnNpc3RlbnRTdGF0ZSBtZW1iZXIgb2YgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiB0byBlcXVhbCB0aGUgdmFsdWUgb2YgcGVyc2lzdGVudCBzdGF0
ZSByZXF1aXJlbWVudC4KLSAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0
YXRlID0gcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQ7Ci0KLSAgICAvLyAxMi4gRm9sbG93IHRo
ZSBzdGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dp
bmcgbGlzdDoKLSAgICBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4gc2Vzc2lvblR5cGVzOwot
Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnNlc3Npb25UeXBlcy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgLy8g4oazIElmIHRoZSBzZXNzaW9uVHlwZXMgbWVtYmVyIGlzIHByZXNlbnQg
W1dlYklETF0gaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgLy8gTGV0IHNlc3Np
b24gdHlwZXMgYmUgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBzZXNzaW9uVHlwZXMgbWVtYmVy
LgotICAgICAgICBzZXNzaW9uVHlwZXMgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLnNlc3Npb25U
eXBlczsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCi0gICAgICAgIC8v
IExldCBzZXNzaW9uIHR5cGVzIGJlIFsgInRlbXBvcmFyeSIgXS4KLSAgICAgICAgc2Vzc2lvblR5
cGVzID0geyBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkgfTsKLSAgICB9Ci0KLSAgICAv
LyAxMy4gRm9yIGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0eXBlczoKLSAgICBmb3IgKGF1dG8mIHNl
c3Npb25UeXBlIDogc2Vzc2lvblR5cGVzKSB7Ci0gICAgICAgIC8vIDEzLjEuIExldCBzZXNzaW9u
IHR5cGUgYmUgdGhlIHZhbHVlLgotICAgICAgICAvLyAxMy4yLiBJZiBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVlIGlzICJub3QtYWxsb3dlZCIgYW5kIHRo
ZQotICAgICAgICAvLyAgICAgICBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8gYWxnb3JpdGht
IHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAg
ICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IE1lZGlh
S2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5
cGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICAvLyAxMy4z
LiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzZXNzaW9uIHR5cGUgaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIC8vICAg
ICAgIGFuZCByZXN0cmljdGlvbnMgZm9yIG90aGVyIHJlYXNvbnMsIHJldHVybiBOb3RTdXBwb3J0
ZWQuCi0gICAgICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oc2Vzc2lvblR5cGUsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDEzLjQgSWYgYWNjdW11bGF0
ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSBpcyAib3B0aW9uYWwiIGFu
ZCB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIElzCi0gICAgICAgIC8vICAgICAgcGVyc2lzdGVu
dCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSBvbiBzZXNzaW9uIHR5cGUgaXMgdHJ1ZSwgY2hhbmdl
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUKLSAgICAgICAgLy8g
ICAgICB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1
cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwg
JiYgaXNQZXJzaXN0ZW50VHlwZShzZXNzaW9uVHlwZSkpCi0gICAgICAgICAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJl
cXVpcmVkOwotICAgIH0KLQotICAgIC8vIDE0LiBTZXQgdGhlIHNlc3Npb25UeXBlcyBtZW1iZXIg
b2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBzZXNzaW9uIHR5cGVzLgotICAgIGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMgPSBzZXNzaW9uVHlwZXM7Ci0KLSAgICAv
LyAxNS4gSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIGFuZCBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXJzIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uIGFyZSBib3RoIGVtcHR5LCByZXR1cm4gTm90
U3VwcG9ydGVkLgotICAgIGlmIChjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVvQ2FwYWJpbGl0
aWVzLmlzRW1wdHkoKSAmJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIC8vIDE2LiDi
hrMgSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJh
dGlvbiBpcyBub24tZW1wdHk6Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVv
Q2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICAvLyAxNi4xLiBMZXQgdmlkZW8gY2Fw
YWJpbGl0aWVzIGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBHZXQgU3VwcG9ydGVkIENh
cGFiaWxpdGllcyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0gb24KLSAgICAgICAgLy8g
ICAgICAgVmlkZW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgdmlkZW9DYXBhYmlsaXRpZXMg
bWVtYmVyLCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVzdHJpY3Rpb25zLgotICAg
ICAgICBhdXRvIHZpZGVvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9y
QXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5cGU6OlZpZGVvLCBjYW5kaWRhdGVDb25maWd1cmF0
aW9uLnZpZGVvQ2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0
aW9ucyk7Ci0KLSAgICAgICAgLy8gMTYuMi4gSWYgdmlkZW8gY2FwYWJpbGl0aWVzIGlzIG51bGws
IHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDE2LjMgU2V0IHRo
ZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0
byB2aWRlbyBjYXBhYmlsaXRpZXMuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi52
aWRlb0NhcGFiaWxpdGllcyA9IFdURk1vdmUodmlkZW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLy8gMTYuIOKGsyBPdGhlcndpc2U6Ci0gICAgICAgIC8vICAg
ICBTZXQgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1
cmF0aW9uIHRvIGFuIGVtcHR5IHNlcXVlbmNlLgotICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24udmlkZW9DYXBhYmlsaXRpZXMgPSB7IH07Ci0gICAgfQotCi0gICAgLy8gMTcuIOKGsyBJ
ZiB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9u
IGlzIG5vbi1lbXB0eToKLSAgICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24uYXVkaW9DYXBh
YmlsaXRpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIDE3LjEuIExldCBhdWRpbyBjYXBhYmls
aXRpZXMgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIEdldCBTdXBwb3J0ZWQgQ2FwYWJp
bGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlIGFsZ29yaXRobSBvbgotICAgICAgICAvLyAgICAg
ICBBdWRpbywgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXIsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMuCi0gICAgICAg
IGF1dG8gYXVkaW9DYXBhYmlsaXRpZXMgPSBnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRp
b1ZpZGVvVHlwZShBdWRpb1ZpZGVvVHlwZTo6QXVkaW8sIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24u
YXVkaW9DYXBhYmlsaXRpZXMsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KTsKLQotICAgICAgICAvLyAxNy4yLiBJZiBhdWRpbyBjYXBhYmlsaXRpZXMgaXMgbnVsbCwgcmV0
dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgLy8gMTcuMyBTZXQgdGhlIGF1
ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGF1
ZGlvIGNhcGFiaWxpdGllcy4KLSAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmF1ZGlv
Q2FwYWJpbGl0aWVzID0gV1RGTW92ZShhdWRpb0NhcGFiaWxpdGllcy52YWx1ZSgpKTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyAxNy4g4oazIE90aGVyd2lzZToKLSAgICAgICAgLy8gICAgIFNl
dCB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRp
b24gdG8gYW4gZW1wdHkgc2VxdWVuY2UuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlv
bi5hdWRpb0NhcGFiaWxpdGllcyA9IHsgfTsKLSAgICB9Ci0KLSAgICAvLyAxOC4gSWYgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmllciB2YWx1ZSBpcyAib3B0
aW9uYWwiLCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcKLSAgICAvLyAg
ICAgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIGlmIChhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpPcHRpb25hbCkgewotICAgICAgICAvLyDihrMgSWYgdGhlIGltcGxlbWVudGF0aW9uIHJl
cXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1h
bmVudCBJZGVudGlmaWVyKHMpIGZvciBhbnkgb2YgdGhlCi0gICAgICAgIC8vICAgIGNvbWJpbmF0
aW9ucyBpbiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIGlmIChtX3ByaXZhdGUt
PmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRp
b24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSB7Ci0g
ICAgICAgICAgICAvLyBDaGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0
aXZlSWRlbnRpZmllciB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpSZXF1aXJlZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIOKGsyBPdGhl
cndpc2UKLSAgICAgICAgICAgIC8vICAgIENoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9u
J3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRvICJub3QtYWxsb3dlZCIuCi0gICAgICAg
ICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID0gTWVk
aWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyAxOS4gSWYgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1
ZSBpcyAib3B0aW9uYWwiLCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcK
LSAgICAvLyAgICAgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIGlmIChh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IE1lZGlhS2V5c1JlcXVp
cmVtZW50OjpPcHRpb25hbCkgewotICAgICAgICAvLyDihrMgSWYgdGhlIGltcGxlbWVudGF0aW9u
IHJlcXVpcmVzIHBlcnNpc3Rpbmcgc3RhdGUgZm9yIGFueSBvZiB0aGUgY29tYmluYXRpb25zIGlu
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgaWYgKG1fcHJpdmF0ZS0+cGVyc2lz
dGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkgewotICAgICAgICAgICAgLy8g
Q2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUg
dG8gInJlcXVpcmVkIi4KLSAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQ7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCi0gICAgICAgICAgICAvLyAgICBD
aGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0
byAibm90LWFsbG93ZWQiLgotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBl
cnNpc3RlbnRTdGF0ZSA9IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25maWd1
cmF0aW9uIHNwZWNpZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhY2N1
bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90
IGFsbG93ZWQgaW4gdGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICBpZiAoIW1f
cHJpdmF0ZS0+c3VwcG9ydHNDb25maWd1cmF0aW9uKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBpZiAo
IWRvY3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCiAgICAgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwogICAgIFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4gPSBkb2N1bWVudC0+dG9wT3JpZ2luKCk7Ci0KLSAgICBpZiAoKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkIHx8IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0
ZW50U3RhdGUgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSAmJiAhb3JpZ2luLmNh
bkFjY2Vzc0xvY2FsU3RvcmFnZSgmdG9wT3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247Ci0gICAgLy8gTk9U
RTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0dXMoKS4KLX0KLQotT3B0aW9uYWw8VmVjdG9y
PE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmls
aXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShDRE06OkF1ZGlvVmlkZW9UeXBlIHR5cGUsIGNvbnN0IFZl
Y3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4mIHJlcXVlc3RlZENhcGFiaWxpdGll
cywgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlv
biwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCi17Ci0gICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jYXBhYmlsaXRp
ZXMtZm9yLWF1ZGlvLXZpZGVvLXR5cGUKLSAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92
ZW1iZXIgMjAxNgotCi0gICAgQVNTRVJUKG1fcHJpdmF0ZSk7Ci0gICAgaWYgKCFtX3ByaXZhdGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAvLyAzLjEuMS4zIEdldCBTdXBw
b3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlCi0KLSAgICAvLyBHaXZlbiBh
biBhdWRpby92aWRlbyB0eXBlLCBNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eSBzZXF1ZW5j
ZSByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24KLSAgICAvLyBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMsIHRoaXMg
YWxnb3JpdGhtIHJldHVybnMgYSBzZXF1ZW5jZSBvZiBzdXBwb3J0ZWQgTWVkaWFLZXlTeXN0ZW1N
ZWRpYUNhcGFiaWxpdHkgdmFsdWVzCi0gICAgLy8gZm9yIHRoaXMgYXVkaW8vdmlkZW8gdHlwZSBv
ciBudWxsIGFzIGFwcHJvcHJpYXRlLgotCi0gICAgLy8gMS4gTGV0IGxvY2FsIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBjb3B5IG9mIHBhcnRpYWwgY29uZmlndXJhdGlvbi4K
LSAgICBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
ID0gcGFydGlhbENvbmZpZ3VyYXRpb247Ci0KLSAgICAvLyAyLiBMZXQgc3VwcG9ydGVkIG1lZGlh
IGNhcGFiaWxpdGllcyBiZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBNZWRpYUtleVN5c3RlbU1lZGlh
Q2FwYWJpbGl0eSBkaWN0aW9uYXJpZXMuCi0gICAgVmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFD
YXBhYmlsaXR5PiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07Ci0KLSAgICAvLyAzLiBG
b3IgZWFjaCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVkaWEgY2Fw
YWJpbGl0aWVzOgotICAgIGZvciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJlcXVlc3Rl
ZENhcGFiaWxpdGllcykgewotICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUgYmUgcmVx
dWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCi0gICAgICAgIC8v
IDMuMi4gTGV0IHJvYnVzdG5lc3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyByb2J1
c3RuZXNzIG1lbWJlci4KLSAgICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0ZWRDYXBh
YmlsaXR5LnJvYnVzdG5lc3M7Ci0KLSAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMg
dGhlIGVtcHR5IHN0cmluZywgcmV0dXJuIG51bGwuCi0gICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBh
YmlsaXR5LmNvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICAgICAgLy8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52YWxpZCBv
ciB1bnJlY29nbml6ZWQgTUlNRSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24u
Ci0gICAgICAgIE9wdGlvbmFsPFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNl
ZENvbnRlbnRUeXBlOjpjcmVhdGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9k
ZTo6UmZjMjA0NSk7Ci0gICAgICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAvLyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRhaW5lciB0
eXBlIHNwZWNpZmllZCBieSBjb250ZW50IHR5cGUuCi0gICAgICAgIFN0cmluZyBjb250YWluZXIg
PSBjb250ZW50VHlwZS0+bWltZVR5cGUoKTsKLQotICAgICAgICAvLyAzLjYuIElmIHRoZSB1c2Vy
IGFnZW50IGRvZXMgbm90IHN1cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUgbmV4dCBp
dGVyYXRpb24uIFRoZSBjYXNlLXNlbnNpdGl2aXR5Ci0gICAgICAgIC8vICAgICAgb2Ygc3RyaW5n
IGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4KLSAgICAg
ICAgLy8gMy43LiBMZXQgcGFyYW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFdIHBhcmFt
ZXRlcnMsIGlmIGFueSwgc3BlY2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KLSAgICAgICAgLy8gMy44
LiBJZiB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1l
dGVycywgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgotICAgICAgICAvLyAzLjkuIExl
dCBtZWRpYSB0eXBlcyBiZSB0aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMg
c3BlY2lmaWVkIGJ5IHBhcmFtZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5Ci0gICAgICAgIC8v
ICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJp
YXRlIFJGQyBvciBvdGhlciBzcGVjaWZpY2F0aW9uLgotICAgICAgICBTdHJpbmcgY29kZWNzID0g
Y29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7Ci0gICAgICAgIGlm
IChjb250ZW50VHlwZS0+cGFyYW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgpID8gMCA6
IDEpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gMy4xMC4gSWYgbWVkaWEg
dHlwZXMgaXMgZW1wdHk6Ci0gICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAvLyDihrMgSWYgY29udGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVjaWZpYyBz
ZXQgb2YgY29kZWNzIGFuZCBjb2RlYyBjb25zdHJhaW50czoKLSAgICAgICAgICAgIC8vIOKGsyBP
dGhlcndpc2U6Ci0gICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gMy4xMS4gSWYgY29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1ZGlvL3Zp
ZGVvIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAgICAgICAgLy8gMy4x
Mi4gSWYgcm9idXN0bmVzcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFpbnMgYW4g
dW5yZWNvZ25pemVkIHZhbHVlIG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQotICAgICAgICAv
LyAgICAgICBpbXBsZW1lbnRhdGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBT
dHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAgICAgICAgaWYgKCFyb2J1c3Ru
ZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRlLT5zdXBwb3J0c1JvYnVzdG5lc3Mocm9idXN0bmVz
cykpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNl
ciBhZ2VudCBhbmQgaW1wbGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9m
IGVuY3J5cHRlZCBtZWRpYSBkYXRhIGZvciB0aGUKLSAgICAgICAgLy8gICAgICAgY29tYmluYXRp
b24gb2YgY29udGFpbmVyLCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9jYWwgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiBpbiBjb21iaW5hdGlvbgotICAgICAgICAvLyAgICAgICB3aXRo
IHJlc3RyaWN0aW9uczoKLSAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShjb250ZW50VHlw
ZS0+bWltZVR5cGUoKSk7Ci0gICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBh
cmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7
Ci0KLSAgICAgICAgICAgIC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKLSAgICAgICAgICAgIHBh
cmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJp
Y3Rpb25zKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIDMuMTMuMS4gQWRkIHJlcXVlc3RlZCBtZWRpYSBj
YXBhYmlsaXR5IHRvIHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMuCi0gICAgICAgIHN1cHBv
cnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsKLQotICAg
ICAgICAvLyAzLjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlzIFZpZGVvOgotICAgICAg
ICAvLyAgICAgICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byB0aGUgdmlkZW9D
YXBhYmlsaXRpZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24uCi0g
ICAgICAgIGlmICh0eXBlID09IEF1ZGlvVmlkZW9UeXBlOjpWaWRlbykKLSAgICAgICAgICAgIGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5hcHBlbmQocmVxdWVzdGVk
Q2FwYWJpbGl0eSk7Ci0gICAgICAgIC8vIDMuMTMuMi4g4oazIElmIGF1ZGlvL3ZpZGVvIHR5cGUg
aXMgQXVkaW86Ci0gICAgICAgIC8vICAgICAgICAgQWRkIHJlcXVlc3RlZCBtZWRpYSBjYXBhYmls
aXR5IHRvIHRoZSBhdWRpb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgbG9jYWwgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbi4KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsK
LSAgICB9Ci0KLSAgICAvLyA0LiBJZiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzIGlzIGVt
cHR5LCByZXR1cm4gbnVsbC4KLSAgICBpZiAoc3VwcG9ydGVkTWVkaWFDYXBhYmlsaXRpZXMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgLy8gNS4gUmV0dXJu
IHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMuCi0gICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlh
Q2FwYWJpbGl0aWVzOwotfQotCi12b2lkIENETTo6Z2V0Q29uc2VudFN0YXR1cyhNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jl
c3RyaWN0aW9ucyYmIHJlc3RyaWN0aW9ucywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJh
Y2spCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0
LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25zZW50Ci0gICAgLy8gVzNDIEVkaXRvcidz
IERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgewotICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZN
b3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBOT1RFOiBJbiB0aGUgZnV0dXJlLCB0aGVz
ZSBjaGVja3MgYmVsb3dlIHdpbGwgaW52b2x2ZSBhc2tpbmcgdGhlIHBhZ2UgY2xpZW50LCBwb3Nz
aWJseSBhY3Jvc3MgYSBwcm9jZXNzIGJvdW5kYXJ5LgotICAgIC8vIFRoZXkgd2lsbCBieSBuZWNl
c3NpdHkgYmUgYXN5bmNocm9ub3VzIHdpdGggY2FsbGJhY2tzLiBGb3Igbm93LCBpbXBseSB0aGlz
IGJlaGF2aW9yIGJ5IHBlcmZvcm1pbmcgaXQgaW4gYW4gYXN5bmMgdGFzay4KLQotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbiksIHJlc3RyaWN0aW9ucyA9IFdURk1vdmUocmVzdHJpY3Rpb25zKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhbV9wcml2YXRlKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3VtdWxh
dGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgaWYgKCFkb2N1
bWVudCkgewotICAgICAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmll
ZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwotICAgICAgICBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luID0gZG9jdW1lbnQtPnRvcE9yaWdpbigpOwotCi0gICAgICAg
IC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQu
Ci0gICAgICAgIC8vIDIxLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3Rp
dmVJZGVudGlmaWVyIHZhbHVlIGlzICJyZXF1aXJlZCIgYW5kIHRoZSBEaXN0aW5jdGl2ZSBJZGVu
dGlmaWVyKHMpIGFzc29jaWF0ZWQKLSAgICAgICAgLy8gICAgIHdpdGggYWNjdW11bGF0ZWQgY29u
ZmlndXJhdGlvbiBhcmUgbm90IHVuaXF1ZSBwZXIgb3JpZ2luIGFuZCBwcm9maWxlIGFuZCBjbGVh
cmFibGU6Ci0gICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAhbV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbikpIHsKLSAgICAgICAgICAgIC8vIDIxLjEuIFVwZGF0ZSBy
ZXN0cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBkZXNjcmliZWQg
YnkgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3QgaGF2ZSB1c2VyIGNvbnNlbnQuCi0g
ICAgICAgICAgICByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5pZWQsIFdU
Rk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RGTW92ZShyZXN0cmljdGlvbnMpKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1jb25zZW50LXN0YXR1cwotICAgICAgICAv
LyAzLjEuMS40IEdldCBDb25zZW50IFN0YXR1cwotICAgICAgICAvLyBHaXZlbiBhbiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiwgdGhpcyBhbGdvcml0
aG0gcmV0dXJucyB0aGUgY29uc2VudCBzdGF0dXMgZm9yIGFjY3VtdWxhdGVkCi0gICAgICAgIC8v
IGNvbmZpZ3VyYXRpb24gYW5kIG9yaWdpbiBhcyBvbmUgb2YgQ29uc2VudERlbmllZCwgSW5mb3Jt
VXNlciBvciBBbGxvd2VkLCB0b2dldGhlciB3aXRoIGFuIHVwZGF0ZWQgdmFsdWUgZm9yIHJlc3Ry
aWN0aW9ucwotICAgICAgICAvLyBpbiB0aGUgQ29uc2VudERlbmllZCBjYXNlLgotCi0gICAgICAg
IC8vIDEuIElmIHRoZXJlIGlzIHBlcnNpc3RlZCBkZW5pYWwgZm9yIG9yaWdpbiBpbmRpY2F0aW5n
IHRoYXQgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBub3QgYWxsb3dlZCwgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIC8vIDEuMS4gVXBkYXRlIHJlc3RyaWN0aW9ucyB0byBy
ZWZsZWN0IHRoZSBjb25maWd1cmF0aW9ucyBmb3Igd2hpY2ggY29uc2VudCBoYXMgYmVlbiBkZW5p
ZWQuCi0gICAgICAgIC8vIDEuMi4gUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3RyaWN0aW9u
cy4KLSAgICAgICAgLy8gMi4gSWYgdGhlcmUgaXMgcGVyc2lzdGVkIGNvbnNlbnQgZm9yIG9yaWdp
biBpbmRpY2F0aW5nIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgYWxsb3dlZCwgcmV0dXJu
IEFsbG93ZWQuCi0gICAgICAgIC8vIE5PVEU6IHBlcnNpc3RlZCBkZW5pYWwgLyBjb25zZW50IHVu
aW1wbGVtZW50ZWQuCi0KLSAgICAgICAgLy8gMy4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJl
IHRydWU6Ci0gICAgICAgIC8vICAgIOKGsyBUaGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJl
ciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCAibm90LWFsbG93ZWQiIGFuZCB0
aGUgY29tYmluYXRpb24gb2YgdGhlIFVzZXIgQWdlbnQsCi0gICAgICAgIC8vICAgICAgIGltcGxl
bWVudGF0aW9uIGFuZCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGRvZXMgbm90IGZvbGxvdyBh
bGwgdGhlIHJlY29tbWVuZGF0aW9ucyBvZiBBbGxvdyBQZXJzaXN0ZW50IERhdGEgdG8gQmUgQ2xl
YXJlZAotICAgICAgICAvLyAgICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUgSWRlbnRp
ZmllcihzKS4KLSAgICAgICAgLy8gTk9URTogYXNzdW1lIHRoYXQgaW1wbGVtZW50YXRpb25zIGZv
bGxvdyBhbGwgcmVjb21tZW5kYXRpb25zLgotCi0gICAgICAgIC8vICAgIOKGsyBUaGUgdXNlciBh
Z2VudCByZXF1aXJlcyBleHBsaWNpdCB1c2VyIGNvbnNlbnQgZm9yIHRoZSBhY2N1bXVsYXRlZCBj
b25maWd1cmF0aW9uIGZvciBvdGhlciByZWFzb25zLgotICAgICAgICAvLyBOT1RFOiBhc3N1bWUg
dGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCi0K
LSAgICAgICAgLy8gMy4xLiBSZXF1ZXN0IHVzZXIgY29uc2VudCB0byB1c2UgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbiBpbiB0aGUgb3JpZ2luIGFuZCB3YWl0IGZvciB0aGUgdXNlciByZXNwb25z
ZS4KLSAgICAgICAgLy8gICAgICBUaGUgY29uc2VudCBtdXN0IGluY2x1ZGUgY29uc2VudCB0byB1
c2UgYSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9vciBEaXN0aW5jdGl2ZSBQZXJtYW5l
bnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZQotICAgICAgICAvLyAgICAgIGlmIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIGlzICJy
ZXF1aXJlZCIuCi0gICAgICAgIC8vIDMuMi4gSWYgY29uc2VudCB3YXMgZGVuaWVkLCBydW4gdGhl
IGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgLy8gMy4yLjEuIFVwZGF0ZSByZXN0cmljdGlvbnMg
dG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHdoaWNoIGNvbnNlbnQgd2FzIGRlbmll
ZC4KLSAgICAgICAgLy8gMy4yLjEuIFJldHVybiBDb25zZW50RGVuaWVkIGFuZCByZXN0cmljdGlv
bnMuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSBpbXBsaWVkIGNvbnNlbnQgaWYgdGhlIGNvbWJp
bmF0aW9uIG9mIG9yaWdpbiBhbmQgdG9wT3JpZ2luIGFsbG93cyBpdC4KLSAgICAgICAgaWYgKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkICYmICFvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0
b3BPcmlnaW4pKSB7Ci0gICAgICAgICAgICByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlm
aWVyRGVuaWVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0dXM6OkNv
bnNlbnREZW5pZWQsIFdURk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RGTW92ZShy
ZXN0cmljdGlvbnMpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIDQuIElmIHRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIsIHJldHVybiBJbmZvcm1Vc2VyLgot
ICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
ciAhPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkgewotICAgICAgICAgICAgY2Fs
bGJhY2soQ29uc2VudFN0YXR1czo6SW5mb3JtVXNlciwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucykpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gNS4gSWYgdGhlIHVzZXIgYWdlbnQgcmVxdWlyZXMgaW5m
b3JtaW5nIHRoZSB1c2VyIGZvciB0aGUgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBmb3Igb3Ro
ZXIgcmVhc29ucywgcmV0dXJuIEluZm9ybVVzZXIuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSB0
aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZXF1aXJlIGluZm9ybWluZyB0aGUgdXNlci4KLQotICAg
ICAgICAvLyA2LiBSZXR1cm4gQWxsb3dlZC4KLSAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1
czo6QWxsb3dlZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJl
c3RyaWN0aW9ucykpOwotICAgIH0pOworICAgIENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vz
cyBhY2Nlc3MgPSBvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0b3BPcmlnaW4pID8gQ0RN
UHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpBbGxvd2VkIDogQ0RNUHJpdmF0ZTo6TG9jYWxT
dG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkOworICAgIG1fcHJpdmF0ZS0+Z2V0U3VwcG9ydGVkQ29u
ZmlndXJhdGlvbihXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBhY2Nlc3MsIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKQEAgLTYx
Miw3ICsxMjAsNyBAQCBib29sIENETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wg
Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5p
dERhdGFUeXBlKGluaXREYXRhVHlwZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZh
dGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggYWU5ODMyNWY2YWQx
MWZmNzlhYzZkMTc0YzZlZGFhOGJkNDVjOWQzMC4uZDU4Y2IwZmVlMzMzMWE4NWE4MjkzZGFmMWRm
N2MwYzQwYTEzY2RmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCkBAIC04MCwyOSArODAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENETShEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIAotICAgIGVudW0gY2xhc3MgQ29uZmln
dXJhdGlvblN0YXR1cyB7Ci0gICAgICAgIFN1cHBvcnRlZCwKLSAgICAgICAgTm90U3VwcG9ydGVk
LAotICAgICAgICBDb25zZW50RGVuaWVkLAotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIENvbnNl
bnRTdGF0dXMgewotICAgICAgICBDb25zZW50RGVuaWVkLAotICAgICAgICBJbmZvcm1Vc2VyLAot
ICAgICAgICBBbGxvd2VkLAotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIEF1ZGlvVmlkZW9UeXBl
IHsKLSAgICAgICAgQXVkaW8sCi0gICAgICAgIFZpZGVvLAotICAgIH07Ci0KLSAgICB2b2lkIGRv
U3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYg
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYsIFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKLSAgICBPcHRpb25hbDxNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24+ICBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJik7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmls
aXR5Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRl
b1R5cGUsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4mIHJlcXVl
c3RlZENhcGFiaWxpdGllcywgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0
aWFsQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJik7Ci0KLSAgICB1c2luZyBD
b25zZW50U3RhdHVzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ29uc2VudFN0YXR1cywg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYmKT47
Ci0gICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYm
IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYsIENvbnNl
bnRTdGF0dXNDYWxsYmFjayYmKTsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+IG1fcHJpdmF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5k
ZXggZGExOWJiZmYyYzdjZTgyYmVmYTgwMzVhZDc1NDJlM2U5ZjIyYTY5ZC4uMjlmYWI0OTkwNjgy
NTgzMmE1YWRkZDk5YTgwZThmMzRkOGQzMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDAx
LDcgKzQwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291
cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0
IHNlc3Npb24gY2xvc2VkIGJlIGZhbHNlLgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhl
IENETSBpbnN0YW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2
YWx1ZS4KICAgICAgICAgLy8gNi43LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dp
bmcgc3RlcHM6Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vz
c2lvbklkLCBtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29s
IHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRp
b24sIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9u
VHlwZSwgc2FuaXRpemVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wg
c2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3lzdGVtQWNjZXNzLmNwcAppbmRleCAzMGMzNGNkYzQ0ZWI4ZDY3Y2QyMjFlYzg5OWNjMGQ2YmEz
MTcyNGU4Li43ZWI3YjIwMjM1ZTE1YTU5MTAzYmIxOGEwM2VmM2ZhMTJiZDM3YzM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVt
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3lzdGVtQWNjZXNzLmNwcApAQCAtODEsMzQgKzgxLDI5IEBAIHZvaWQgTWVkaWFLZXlT
eXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiAgICAgICAgIH0KIAogICAgICAgICAvLyAyLjYuIEluaXRpYWxpemUgaW5zdGFuY2UgdG8g
ZW5hYmxlLCBkaXNhYmxlIGFuZC9vciBzZWxlY3QgS2V5IFN5c3RlbSBmZWF0dXJlcyB1c2luZyBj
b25maWd1cmF0aW9uLgotICAgICAgICBpZiAoaW5zdGFuY2UtPmluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbigqbV9jb25maWd1cmF0aW9uKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7Ci0gICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIDIuNy4gSWYgdXNlIGRpc3RpbmN0aXZlIGlk
ZW50aWZpZXIgaXMgZmFsc2UsIHByZXZlbnQgaW5zdGFuY2UgZnJvbSB1c2luZyBEaXN0aW5jdGl2
ZSBJZGVudGlmaWVyKHMpIGFuZCBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKS4K
LSAgICAgICAgaWYgKCF1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIgJiYgaW5zdGFuY2UtPnNldERp
c3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGZhbHNlKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVk
KSB7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIDIuOC4gSWYgcGVyc2lzdGVu
dCBzdGF0ZSBhbGxvd2VkIGlzIGZhbHNlLCBwcmV2ZW50IGluc3RhbmNlIGZyb20gcGVyc2lzdGlu
ZyBhbnkgc3RhdGUgcmVsYXRlZCB0byB0aGUgYXBwbGljYXRpb24gb3Igb3JpZ2luIG9mIHRoaXMg
b2JqZWN0J3MgRG9jdW1lbnQuCi0gICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlQWxsb3dlZCAm
JiBpbnN0YW5jZS0+c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChmYWxzZSkgPT0gQ0RNSW5zdGFu
Y2U6OkZhaWxlZCkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJv
cik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAyLjkuIElm
IGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBh
IG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFt
ZS4KLSAgICAgICAgLy8gMi4xMC4gTGV0IG1lZGlhIGtleXMgYmUgYSBuZXcgTWVkaWFLZXlzIG9i
amVjdCwgYW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKLSAgICAgICAgLy8gMi4xMC4xLiBM
ZXQgdGhlIHVzZSBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHZhbHVlIGJlIHVzZSBkaXN0aW5jdGl2
ZSBpZGVudGlmaWVyLgotICAgICAgICAvLyAyLjEwLjIuIExldCB0aGUgcGVyc2lzdGVudCBzdGF0
ZSBhbGxvd2VkIHZhbHVlIGJlIHBlcnNpc3RlbnQgc3RhdGUgYWxsb3dlZC4KLSAgICAgICAgLy8g
Mi4xMC4zLiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJlIHRoZSB2
YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KLSAgICAgICAgLy8g
Mi4xMC40LiBMZXQgdGhlIGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBiZSB0aGlzIG9iamVjdCdz
IGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZS4KLSAgICAgICAgLy8gMi4xMC41LiBMZXQgdGhlIGNk
bSBpbnN0YW5jZSB2YWx1ZSBiZSBpbnN0YW5jZS4KLSAgICAgICAgYXV0byBtZWRpYUtleXMgPSBN
ZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQsIG1fY29uZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBtX2ltcGxlbWVudGF0aW9u
LmNvcHlSZWYoKSwgaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0KLSAgICAgICAgLy8gMi4x
MS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KLSAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1lZGlhS2V5cz4+KFdURk1vdmUobWVk
aWFLZXlzKSk7CisgICAgICAgIGF1dG8gYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzID0gdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyID8gQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVu
dGlmaWVyczo6WWVzIDogQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVyczo6
Tm87CisgICAgICAgIGF1dG8gYWxsb3dQZXJzaXN0ZW50U3RhdGUgPSBwZXJzaXN0ZW50U3RhdGVB
bGxvd2VkID8gQ0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOjpZZXMgOiBDRE1JbnN0
YW5jZTo6QWxsb3dQZXJzaXN0ZW50U3RhdGU6Ok5vOworCisgICAgICAgIGluc3RhbmNlLT5pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oKm1fY29uZmlndXJhdGlvbiwgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgW3Nlc3Npb25UeXBlcyA9IG1fY29u
ZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBpbXBsZW1lbnRhdGlvbiA9IG1faW1wbGVtZW50YXRp
b24uY29weVJlZigpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQsIGluc3RhbmNlID0gaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChhdXRvIHN1Y2Nlc3NWYWx1ZSkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoc3VjY2Vzc1ZhbHVlID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIDIuOS4gSWYgYW55IG9mIHRo
ZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4
Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgorICAgICAg
ICAgICAgLy8gMi4xMC4gTGV0IG1lZGlhIGtleXMgYmUgYSBuZXcgTWVkaWFLZXlzIG9iamVjdCwg
YW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgIC8vIDIuMTAuMS4gTGV0
IHRoZSB1c2UgZGlzdGluY3RpdmUgaWRlbnRpZmllciB2YWx1ZSBiZSB1c2UgZGlzdGluY3RpdmUg
aWRlbnRpZmllci4KKyAgICAgICAgICAgIC8vIDIuMTAuMi4gTGV0IHRoZSBwZXJzaXN0ZW50IHN0
YXRlIGFsbG93ZWQgdmFsdWUgYmUgcGVyc2lzdGVudCBzdGF0ZSBhbGxvd2VkLgorICAgICAgICAg
ICAgLy8gMi4xMC4zLiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJl
IHRoZSB2YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KKyAgICAg
ICAgICAgIC8vIDIuMTAuNC4gTGV0IHRoZSBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgYmUgdGhp
cyBvYmplY3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUuCisgICAgICAgICAgICAvLyAyLjEw
LjUuIExldCB0aGUgY2RtIGluc3RhbmNlIHZhbHVlIGJlIGluc3RhbmNlLgorICAgICAgICAgICAg
YXV0byBtZWRpYUtleXMgPSBNZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIHNlc3Npb25UeXBlcywgV1RGTW92ZShpbXBsZW1l
bnRhdGlvbiksIFdURk1vdmUoaW5zdGFuY2UpKTsKKworICAgICAgICAgICAgLy8gMi4xMS4gUmVz
b2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KKyAgICAgICAgICAgIHByb21pc2UtPnJlc29s
dmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxNZWRpYUtleXM+PihXVEZNb3ZlKG1lZGlh
S2V5cykpOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIC8vIDMuIFJldHVybiBwcm9taXNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwCmluZGV4IGM2MjRlNTMyOWU1OTY4ODJmMGQ0MWY1NzQ1ODg1ZmMyM2QzOWE2ZTQuLjE4
N2Q1OWRlZjM0MDU1ZjhjYzVjZDU5YmQ3ZjBhYTc1YTVlOTY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IE1lZGlhS2V5czo6Y3Jl
YXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0K
IAotdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5cy1zZXRzZXJ2ZXJjZXJ0aWZpY2F0ZQogICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CkBAIC0xMDYsMTYgKzEwNiwx
NCBAQCB2b2lkIE1lZGlhS2V5czo6c2V0U2VydmVyQ2VydGlmaWNhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgQnVmZgogICAgIC8vIDQuIExldCBwcm9taXNlIGJlIGEg
bmV3IHByb21pc2UuCiAgICAgLy8gNS4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxs
ZWw6CiAKLSAgICBjb250ZXh0LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgY2VydGlmaWNhdGUgPSBXVEZNb3ZlKGNlcnRpZmljYXRlKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgewotICAgICAgICAvLyA1LjEuIFVzZSB0
aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB0byBwcm9jZXNzIGNlcnRpZmljYXRlLgotICAgICAg
ICBpZiAobV9pbnN0YW5jZS0+c2V0U2VydmVyQ2VydGlmaWNhdGUoV1RGTW92ZShjZXJ0aWZpY2F0
ZSkpID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgIC8vIDUuMi4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhj
ZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCisgICAgLy8g
NS4xLiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZpY2F0
ZS4KKyAgICBtX2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmlj
YXRlKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byBzdWNjZXNzKSB7CisgICAg
ICAgIC8vIDUuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNl
IHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVy
cm9yIG5hbWUuCisgICAgICAgIC8vIDUuMS4gW0Vsc2UsXSBSZXNvbHZlIHByb21pc2Ugd2l0aCB0
cnVlLgorICAgICAgICBpZiAoc3VjY2VzcyA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKQogICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDUuMS4gUmVzb2x2ZSBwcm9taXNlIHdpdGgg
dHJ1ZS4KLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsK
ICAgICB9KTsKIAogICAgIC8vIDYuIFJldHVybiBwcm9taXNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggMWUyZTFhMjc3MTM0
MGU2ZGYxZTBhOThhNTQyY2NkNWY4MmFlMjhkZi4uYjZiNzJhMjcyMjIyYjVjOWJkYzIyNTQwNjZi
ZThkZTI5MWJhNjg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB+TWVkaWFL
ZXlzKCk7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9uPj4gY3JlYXRlU2Vz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFLZXlTZXNzaW9uVHlwZSk7Ci0gICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
QnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
KTsKIAogICAgIHZvaWQgYXR0YWNoQ0RNQ2xpZW50KENETUNsaWVudCYpOwogICAgIHZvaWQgZGV0
YWNoQ0RNQ2xpZW50KENETUNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCmluZGV4IGQ2ZjA0Y2RkYmU1MGQzMTQ4Mzk1
ZjY1ZWM2YmY5MDU3ZmZiZjRkY2UuLmRiMWIwNTM0M2JjMjEzOGM5YjZiYzUyMjVmNzkyOTczMzZm
ZGIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5pZGwKQEAgLTMzLDUgKzMzLDUgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgTWVkaWFLZXlzIHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVT
ZXNzaW9uKG9wdGlvbmFsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUgPSAidGVtcG9y
YXJ5Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8Ym9v
bD4gc2V0U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNlcnZlckNlcnRpZmljYXRlKTsK
KyAgICBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2
ZXJDZXJ0aWZpY2F0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZjQ1YzUxOTcxNWI1YmY4OGEz
MTEzMjMxNzlmYzNhNGJlNmVhYjA2Li5iNThhODFhYWMzZjQ0YWZiZjJkMmQ5YjRhNWFmYjg1MDM2
N2Q3YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTgyMyw2ICsxODIzLDcgQEAgcGxhdGZvcm0vYXVk
aW8vVmVjdG9yTWF0aC5jcHAKIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcAogCiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAorcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5jcHAKIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAogCiBw
bGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5N2UwMGRiMDNhZDBk
NWI0N2NmMmI0YWE4MTQyMjYyYTIwMmRhMWMyLi5iMzE2OTliYWI2OTkzMTk2YTI2ODBkNDE1OTRh
ODFhYjk0MTY0ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC00MDY2LDYgKzQwNjYsMTkgQEAKIAkJQ0QzQTQ5NUYxN0E5RDAx
QjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1NjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2Uu
aCAqLzsgfTsKIAkJQ0QzQTQ5NjIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5
RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFC
MDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlckxpc3QuaCAqLzsgfTsKKwkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJBMDFEIC8qIENETUVuY3J5
cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERjc1NjlCMjE1QzIzQTQwMEVGQ0I1MCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRjky
NDAxQUFEOTAwNEJBMDFEIC8qIENETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQyMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0
b3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QzQ0UwRkEyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUg
LyogQ0RNSW5zdGFuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlDRDNDRTBGQjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VTZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlEMzc1
QTIxNTE2M0U0MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJB
MDFEIC8qIENETUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZE
MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRDFGNzFDQjY5MDBG
NTI1QzUgLyogQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZFMjQwMUFBRDkwMDRCQTAxRCAv
KiBDRE1NZWRpYUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEOTRBNUQzMUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNhcGFiaWxp
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
RDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ2MUY3MUNCNkQwMEY1MjVD
NSAvKiBDRE1NZXNzYWdlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFG
NzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Q
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5
NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1IC8qIENETVByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDIyNDAxQUFEQTAwNEJBMDFEIC8q
IENETVJlcXVpcmVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVxdWlyZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMzI0
MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEMDFGNzFDQjZCMDBGNTI1QzUgLyogQ0RN
UmVzdHJpY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQ0QzQ0UxMDQyNDAxQUFEQTAwNEJBMDFEIC8qIENETVNlc3Npb25UeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVENTFGNzFD
QjZEMDBGNTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1h
Z2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QzRTIxREIyMTgzM0Y1MTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0
aWVzQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRDNFMjUxQzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAv
KiBHcmlkQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNEM0UyNTI0MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNF
MjUyMjE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oICovOyB9
OwpAQCAtNDE5Nyw3ICs0MjEwLDcgQEAKIAkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1v
Y2tUcmFja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERjJCMDBGMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggKi87IH07CiAJCUNERjRC
NzEyMUUwMDg3QUUwMEUyMzVBMiAvKiBMZWdhY3lDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEg
LyogTGVnYWN5Q0RNU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTMxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5jcHAgKi87IH07Ci0JCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAv
KiBDRE0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RjRCNzE0MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCAqLzsgfTsKKwkJQ0RGNEI3MTYxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjRCNzE4MUUwMUNCOTEwMEUy
MzVBMiAvKiBNZWRpYUtleXNSZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE3MUUwMUNCOTEwMEUyMzVBMiAvKiBNZWRpYUtl
eXNSZXN0cmljdGlvbnMuaCAqLzsgfTsKIAkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1l
ZGlhS2V5U2Vzc2lvblR5cGUuaWRsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RGNEI3MTkxRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5
cGUuaWRsICovOyB9OwogCQlDREY0QjcxRTFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNl
c3Npb25UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREY0QjcxQzFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBlLmggKi87
IH07CkBAIC0xMzc3MCw2ICsxMzc4Myw3IEBACiAJCUNEM0E0OTVCMTdBOUQwMUIwMDI3NEU0MiAv
KiBTb3VyY2VCdWZmZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNvdXJjZUJ1ZmZlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEM0E0OTVEMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJM
aXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VCdWZmZXJMaXN0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzQ0UxMUMyNDA0NTFBRjAwNEJBMDFEIC8qIENE
TVByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNUHJpdmF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyMURCMjE4MzNGNTEwMEU2NkY1NSAvKiBJbWFnZUJ1
ZmZlclV0aWxpdGllc0NHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2
IC8qIEdyaWRBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyaWRBcmVh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyNTIxMTgwNDZCQ0QwMEUyN0Y1
NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjYyOTAsNiArMjYzMDQsNyBAQAogCQkJCUNEOTRBNUNEMUY3
MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi8sCiAJCQkJQ0Q5
NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICovLAogCQkJCUNE
OTRBNUQ2MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1NZXNzYWdlVHlwZS5oICovLAorCQkJCUNEM0NF
MTFDMjQwNDUxQUYwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmNwcCAqLywKIAkJCQlDRDk0QTVDRjFG
NzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovLAogCQkJCUNEOTRBNUNGMUY3MUNCNjEw
MEY1MjVENSAvKiBDRE1Qcm94eS5jcHAgKi8sCiAJCQkJQ0Q5NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1
IC8qIENETVByb3h5LmggKi8sCkBAIC0yOTI2Niw5ICsyOTI4MSwyMiBAQAogCQkJCTY1NTBCNjlF
MDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOTRB
NURFMUY3MkY1N0IwMEY1MjVDNSAvKiBDRE1DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
M0NFMEY4MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRDNDRTBGOTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RCNzA0NUExRjc0NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQbGF5U3Ry
ZWFtaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGQTI0MDFBQUQ5MDA0QkEwMUQgLyog
Q0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAx
RCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZDMjQw
MUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NF
MEZEMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmls
aXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RN
TWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAx
RCAvKiBDRE1Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMxODYyMzE5OUYxRTJBMDAz
MEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByb3h5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVxdWlyZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEM0NFMTAzMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1SZXN0cmljdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwNDI0MDFB
QURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVGQTkw
NENBMTc4RTYxRjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTkxQjhGMEI1MjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZUluZm9CYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggOTY5YzUwZDgzMDYxOGE4NzQ5NWI1ZGQxMjkwM2RjNjNlYTQ4YzU3MC4uMjE1
ODQ5YWI5YzgwM2QwMWQzYTMzNjQyNzdlZmQ4MjJmNmM0Mzk2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNTYxLDE1ICsyNTYxLDI1IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0
ZSkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRp
bnVlQWZ0ZXJOZWVkS2V5KCkKK3sKKyAgICBpZiAoIW1fcGxheWVyKQorICAgICAgICByZXR1cm47
CisgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVk
a2V5IikgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZW5jcnlw
dGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRvY3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2VuRW5j
cnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmsoKSk7CisgICAgbV9wbGF5ZXItPnNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkQ29udGludWUpOworfQorI2VuZGlmCisKIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYktpdE1l
ZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBu
dWxscHRyOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFi
bGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKQEAgLTI1ODAsMTQgKzI1OTAsMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgKSB7CiAg
ICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJS
X0VOQ1JZUFRFRCk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZl
bnQpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVu
dCkpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAtNTEyOSw2ICs1
MTM3LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKCkK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRl
TWVkaWFTdGF0ZSgpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB1cGRhdGVTaG91bGRDb250aW51ZUFm
dGVyTmVlZEtleSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJFbmdpbmVVcGRhdGVkKCkKQEAgLTU4OTEsNiArNTkwMywxMSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogCiBib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMm
IG9wdGlvbnMpCiB7CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Vi
a2l0bmVlZGtleUV2ZW50KQorICAgICAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtl
eSgpOworI2VuZGlmCisKICAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRw
bGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9u
cyk7CiAKQEAgLTU5MTIsNiArNTkyOSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaQogCiBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRp
b25zJiBvcHRpb25zKQogeworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
LndlYmtpdG5lZWRrZXlFdmVudCkKKyAgICAgICAgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5l
ZWRLZXkoKTsKKyNlbmRpZgorCiAgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Vi
a2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVy
biBOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDVkZTBkMTExODUx
YWM3ZmE4YzNlOTVkYjZlZWQ5YWYzMWNmNTE1OGQuLmY2OTIwZjY1NDc2ZjI4ZDdlN2IxOTRlNTkx
ZTJjNTk1MmY0NGU5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC02ODAsNyArNjgwLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlhUGxh
eWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5
TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApAQCAtNjk0LDYgKzY5
NCwxMCBAQCBwcml2YXRlOgogICAgIC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0
ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCisKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICB2b2lkIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKICAg
ICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgbWVkaWFQ
bGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29sKSBmaW5hbDsK
QEAgLTExNjYsNiArMTE3MCw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFQcm92aWRlciBtX21lZGlh
UHJvdmlkZXI7CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBib29s
IG1faGFzTmVlZGtleUxpc3RlbmVyIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFL
ZXlzPiBtX3dlYktpdE1lZGlhS2V5czsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVN0cmF0ZWd5LmgKaW5kZXggNWVkMDRjNGNjOGU4ZWNjODQ0OGZlMDUzYTRiNjZiYzY3YTgx
MTdkZC4uNjBhNTg0N2M4Y2VjMTBiNzliNzQ5YTZmYWY4NTAzZDE2YTE5OWI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBBdWRpb0lPQ2Fs
bGJhY2s7CitjbGFzcyBDRE1GYWN0b3J5OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVN0
cmF0ZWd5IHsKIHB1YmxpYzoKQEAgLTM4LDYgKzM5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24o
CiAgICAgICAgIEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSA9IDA7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8
Q0RNRmFjdG9yeSo+JikgPSAwOworI2VuZGlmCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TWVk
aWFTdHJhdGVneSgpID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKaW5kZXgg
NzRiM2FhN2Q3YmRiMDBhMjY3NTZhMDIzNjU2NmYzNjg4MTJiY2UzYi4uMWE3YTU2MjdkYmNhNjQx
YjQ5Y2U3ZTU2ZTY3MTZlMzE4YTk4OGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaApAQCAt
MjcsMTMgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENE
TUVuY3J5cHRpb25TY2hlbWUgeworZW51bSBjbGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIDogdWlu
dDhfdCB7CiAgICAgY2VuYywKICAgICBjYmNzLAogfTsKIAogfQogCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2No
ZW1lPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNRW5jcnlwdGlvblNjaGVtZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVt
ZTo6Y2VuYywKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2JjcworICAg
ID47Cit9OworCit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAppbmRleCA0YmI1OTlmYTgwNzNkM2I4NTVk
ODQ2MTc4NjE5ZGJjMDI2MTA1OGYyLi45OTJkNDlhZWVlZTVhNWYxZjQxMjVlNmYwYjMyMjI3Njkw
MjIxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmNwcApAQCAtMzAsNiArMzAsOCBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MCw3ICs0Miw5IEBAIFZl
Y3RvcjxDRE1GYWN0b3J5Kj4mIENETUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8Q0RNRmFjdG9yeSo+PiBmYWN0b3JpZXM7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25j
ZSwgWyZdIHsgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOyB9KTsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlLCBbJl0geworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bWVkaWFTdHJhdGVneSgpLnJlZ2lzdGVyQ0RNRmFjdG9yaWVzKGZhY3Rvcmllcyk7CisgICAgfSk7
CiAKICAgICByZXR1cm4gZmFjdG9yaWVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDQ0ZWFhYjA3ZTc1N2FmZTU4
YjUzNjFmNWFmMTJiMjQ3NzZhMDM1MmUuLjUyNWM4NGVjYmU3OTFmNDBiNTQ3ZmI3ZmFmZGU5ZDAz
YmE4MTBiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgLy8gUGxh
dGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdGhhdCdzIGNhbGxlZCB3aGVuIHRoZSBsaXN0IG9mCiAg
ICAgLy8gcmVnaXN0ZXJlZCBDRE1GYWN0b3J5IG9iamVjdHMgaXMgcXVlcmllZCBmb3IgdGhlIGZp
cnN0IHRpbWUuCi0gICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0
b3I8Q0RNRmFjdG9yeSo+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGxhdGZv
cm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+Jik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCA4ZjlmM2ViODc0NWMzNTIwMjgzMTRjNjA2ZDI4
OWQ0ZTNmNzFhMDQ4Li43MzRjOTM1MDc1NmQ3OWY3NGQ5MDY1ZTI0MDFjMmVlOGFiYzEzMDc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDRE1NZXNzYWdlVHlwZS5oIgog
I2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CkBAIC01MiwyMyArNTMsMzMgQEAgcHVibGljOgogICAgICAgICBNb2NrLAogICAgICAg
ICBDbGVhcktleSwKICAgICAgICAgRmFpclBsYXlTdHJlYW1pbmcsCisgICAgICAgIFJlbW90ZSwK
ICAgICB9OwogICAgIHZpcnR1YWwgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlw
ZSgpIGNvbnN0ID0gMDsKIAotICAgIGVudW0gU3VjY2Vzc1ZhbHVlIHsKKyAgICBlbnVtIFN1Y2Nl
c3NWYWx1ZSA6IGJvb2wgewogICAgICAgICBGYWlsZWQsCiAgICAgICAgIFN1Y2NlZWRlZCwKICAg
ICB9OworICAgIHVzaW5nIFN1Y2Nlc3NDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3VjY2Vzc1ZhbHVlKT47CiAKLSAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChi
b29sKSA9IDA7Ci0gICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxs
b3dlZChib29sKSA9IDA7Ci0gICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwotICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVl
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgPSAwOworICAgIGVudW0gY2xhc3Mg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAg
ICBZZXMsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQWxsb3dQZXJzaXN0ZW50U3RhdGUgOiBi
b29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcywKKyAgICB9OworCisgICAgdmlydHVhbCB2
b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CiAKLSAg
ICBlbnVtIGNsYXNzIEhEQ1BTdGF0dXMgeworICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyA6IHVp
bnQ4X3QgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWYWxpZCwKICAgICAgICAgT3V0cHV0
UmVzdHJpY3RlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggODcyNWEzMWQ4YmIzZTIyYmUy
MWRmMDdlMzIwYjM2ZTc1MDM4NmUxYS4uZDQ2NGI3NGQxYzcyMDJhOWEzMzlkZmY2NWQwNmUwODIw
ODk2OWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTcyLDkgKzcyLDkgQEAgcHVibGlj
OgogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6
S2V5U3RhdHVzVmVjdG9yOwogICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8
S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdl
ZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKLSAgICBlbnVtIGNs
YXNzIFNlc3Npb25Mb2FkRmFpbHVyZSB7CisgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1
cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKICAgICAgICAgTm9TZXNzaW9uRGF0YSwKICAg
ICAgICAgTWlzbWF0Y2hlZFNlc3Npb25UeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAppbmRleCBhZDk2OTYyMzYwNGNk
MTQ3MDU1YTI3YjczMzZmNjc3YzBiM2FmMmM0Li5jYzVlNzE4NmY3NGVmOGU4MTRjYjNhZjc1NWUx
NjFhNjVjMjA4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNS2V5U3RhdHVzIHsKK2VudW0gY2xhc3MgQ0RN
S2V5U3RhdHVzIDogdWludDhfdCB7CiAgICAgVXNhYmxlLAogICAgIEV4cGlyZWQsCiAgICAgUmVs
ZWFzZWQsCkBAIC00NCw0ICs0NiwyMCBAQCBlbnVtIGNsYXNzIENETUtleVN0YXR1cyB7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXMsCisgICAgV2ViQ29yZTo6
Q0RNS2V5U3RhdHVzOjpVc2FibGUsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpFeHBpcmVk
LAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6UmVsZWFzZWQsCisgICAgV2ViQ29yZTo6Q0RN
S2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6
T3V0cHV0RG93bnNjYWxlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlN0YXR1c1BlbmRp
bmcsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yCisgICAgPjsKK307
CisKK30KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDYxMmQ2NDVmYWE1MjQ4ZjcxZjFjMTU2N2Y0NTA3ZTg5
ZjNiMzFjZTUuLjg1MjU4N2NlZGEwNTEyMTQ0Nzk1MjJmYWMzOGU0YzBmYjk4NzQ5ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTQ4LDYgKzQ4LDY3IEBAIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIHsKICAgICBDRE1SZXF1aXJlbWVudCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXIgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBDRE1SZXF1
aXJlbWVudCBwZXJzaXN0ZW50U3RhdGUgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAg
ICBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+IHNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CisgICAgICAgIGVuY29kZXIgPDwgaW5pdERh
dGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAg
ZW5jb2RlciA8PCB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlOworICAg
ICAgICBlbmNvZGVyIDw8IHNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGxhYmVsOworICAgICAgICBkZWNvZGVyID4+IGxhYmVsOworICAgICAgICBpZiAoIWxhYmVs
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0
YVR5cGVzOworICAgICAgICBpZiAoIWluaXREYXRhVHlwZXMpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxp
dHk+PiBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgZGVjb2RlciA+PiBhdWRpb0NhcGFiaWxp
dGllczsKKyAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJp
bGl0eT4+IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAgICBkZWNvZGVyID4+IHZpZGVvQ2FwYWJp
bGl0aWVzOworICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4gZGlz
dGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRlbnRp
ZmllcjsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXIpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAKKyAgICAgICAgT3B0aW9uYWw8Q0RNUmVxdWly
ZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3Rh
dGU7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+PiBz
ZXNzaW9uVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc2Vzc2lvblR5cGVzOworICAgICAgICBp
ZiAoIXNlc3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCisgICAgICAgICAg
ICBXVEZNb3ZlKCppbml0RGF0YVR5cGVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmF1ZGlvQ2Fw
YWJpbGl0aWVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnZpZGVvQ2FwYWJpbGl0aWVzKSwKKyAg
ICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAqcGVyc2lzdGVu
dFN0YXRlLAorICAgICAgICAgICAgV1RGTW92ZSgqc2Vzc2lvblR5cGVzKSwKKyAgICAgICAgfX07
CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHku
aAppbmRleCA5MDFiNTRmZjA1MDhlZGE5YmJiODhjNWMxZGI4NjUzOGRjZTE0MjgyLi5mODRhMGQx
MmFiNGNkNTIwZTNmMGUwNGQ2NGViZWZjNjMxNjI1ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHku
aApAQCAtMzksNiArMzksMzkgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAgU3Ry
aW5nIGNvbnRlbnRUeXBlOwogICAgIFN0cmluZyByb2J1c3RuZXNzOwogICAgIE9wdGlvbmFsPENE
TUVuY3J5cHRpb25TY2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAg
eworICAgICAgICBlbmNvZGVyIDw8IGNvbnRlbnRUeXBlOworICAgICAgICBlbmNvZGVyIDw8IHJv
YnVzdG5lc3M7CisgICAgICAgIGVuY29kZXIgPDwgZW5jcnlwdGlvblNjaGVtZTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNTWVk
aWFDYXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVudFR5
cGU7CisgICAgICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcm9idXN0bmVzczsKKyAgICAgICAg
ZGVjb2RlciA+PiByb2J1c3RuZXNzOworICAgICAgICBpZiAoIXJvYnVzdG5lc3MpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPENE
TUVuY3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBkZWNvZGVyID4+
IGVuY3J5cHRpb25TY2hlbWU7CisgICAgICAgIGlmICghZW5jcnlwdGlvblNjaGVtZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAg
ICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCisgICAgICAgICAgICBXVEZNb3ZlKCpyb2J1c3Ru
ZXNzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmVuY3J5cHRpb25TY2hlbWUpLAorICAgICAgICB9
fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaAppbmRl
eCBlNWY3OTZhOWUwZTA3NTFhYTAyNzgyYjliNjY2Y2EyMzFlZjdlNjA5Li45NWJmMjhjMmFhOTRh
M2RhNTA0NWI1ZWMwMGYzNThjZDI2ZDk1Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKQEAgLTMwLDkgKzMw
LDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETU1lc3NhZ2VU
eXBlIHsKK2VudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBMaWNlbnNl
UmVxdWVzdCwKICAgICBMaWNlbnNlUmVuZXdhbCwKICAgICBMaWNlbnNlUmVsZWFzZSwKQEAgLTQx
LDQgKzQzLDE4IEBAIGVudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgewogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsCisgICAgICAgIFdlYkNvcmU6
OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVz
c2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZTo6TGljZW5zZVJlbGVhc2UsCisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpJbmRp
dmlkdWFsaXphdGlvblJlcXVlc3QKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY0YmE0OWU0MDYwYWZkNzll
OGMyMDIwNDEyOGQ3YzQ0YjlhYmY1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCkBAIC0wLDAgKzEsNTIwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNETVByaXZhdGUu
aCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiQ0RNTWVkaWFDYXBhYmlsaXR5LmgiCisjaW5j
bHVkZSAiQ0RNUmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlICJDRE1SZXN0cmljdGlvbnMuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NETVByaXZhdGU6OkNETVByaXZhdGUoKSA9IGRlZmF1bHQ7
CitDRE1Qcml2YXRlOjp+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKKwordm9pZCBDRE1Qcml2YXRl
OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBj
YW5kaWRhdGVDb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0
ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRpb24K
KyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gMy4x
LjEuMSBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24KKyAgICAvLyBHaXZlbiBhIEtleSBTeXN0
ZW1zIGltcGxlbWVudGF0aW9uIGltcGxlbWVudGF0aW9uLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLCBhbmQgb3JpZ2luLAorICAgIC8vIHRoaXMgYWxn
b3JpdGhtIHJldHVybnMgYSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBvciBOb3RTdXBwb3J0ZWQg
YXMgYXBwcm9wcmlhdGUuCisKKyAgICAvLyAxLiBMZXQgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24g
YmUgQ29uc2VudERlbmllZC4KKyAgICAvLyAyLiBJbml0aWFsaXplIHJlc3RyaWN0aW9ucyB0byBp
bmRpY2F0ZSB0aGF0IG5vIGNvbmZpZ3VyYXRpb25zIGhhdmUgaGFkIHVzZXIgY29uc2VudCBkZW5p
ZWQuCisgICAgQ0RNUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyB7IH07CisgICAgZG9TdXBwb3J0
ZWRDb25maWd1cmF0aW9uU3RlcChXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBXVEZN
b3ZlKHJlc3RyaWN0aW9ucyksIGFjY2VzcywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lk
IENETVByaXZhdGU6OmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJl
c3RyaWN0aW9ucywgTG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgU3VwcG9ydGVkQ29uZmlndXJh
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uCisgICAgLy8gVzND
IEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYsIGN0ZC4KKworICAgIC8vIDMuMS4xLjEg
R2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uCisgICAgLy8gMy4gUmVwZWF0IHRoZSBmb2xsb3dp
bmcgc3RlcCB3aGlsZSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBpcyBDb25zZW50RGVuaWVkOgor
ICAgIC8vIDMuMS4gTGV0IHN1cHBvcnRlZCBjb25maWd1cmF0aW9uIGFuZCwgaWYgcHJvdmlkZWQs
IHJlc3RyaWN0aW9ucyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUKKyAgICAvLyBHZXQg
U3VwcG9ydGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNlbnQgYWxnb3JpdGhtIHdpdGggaW1wbGVt
ZW50YXRpb24sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLAorICAgIC8vIHJlc3RyaWN0aW9ucyBh
bmQgb3JpZ2luLgorICAgIGF1dG8gb3B0aW9uYWxDb25maWd1cmF0aW9uID0gZ2V0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbihjYW5kaWRhdGVDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMsIGFjY2Vz
cyk7CisgICAgaWYgKCFvcHRpb25hbENvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29uc2Vu
dENhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBhY2Nlc3NdIChDb25zZW50U3RhdHVzIHN0YXR1cywgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJlc3Ry
aWN0aW9ucykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgLy8gMy4xLjEuMiBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNl
bnQsIGN0ZC4KKyAgICAgICAgLy8gMjIuIExldCBjb25zZW50IHN0YXR1cyBhbmQgdXBkYXRlZCBy
ZXN0cmljdGlvbnMgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBHZXQgQ29uc2VudCBTdGF0
dXMgYWxnb3JpdGhtIG9uIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sCisgICAgICAgIC8vICAg
ICByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiBhbmQgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIHZh
bHVlIG9mIGNvbnNlbnQgc3RhdHVzIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgICAgICBz
d2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5p
ZWQ6CisgICAgICAgICAgICAvLyDihrMgQ29uc2VudERlbmllZDoKKyAgICAgICAgICAgIC8vICAg
IFJldHVybiBDb25zZW50RGVuaWVkIGFuZCB1cGRhdGVkIHJlc3RyaWN0aW9ucy4KKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5kb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25TdGVwKFdURk1vdmUoY29uZmln
dXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBDb25zZW50U3RhdHVzOjpJ
bmZvcm1Vc2VyOgorICAgICAgICAgICAgLy8g4oazIEluZm9ybVVzZXIKKyAgICAgICAgICAgIC8v
ICAgIEluZm9ybSB0aGUgdXNlciB0aGF0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgaW4g
dXNlIGluIHRoZSBvcmlnaW4gaW5jbHVkaW5nLCBzcGVjaWZpY2FsbHksIHRoZSBpbmZvcm1hdGlv
biB0aGF0CisgICAgICAgICAgICAvLyAgICBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9v
ciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZSB3aWxs
IGJlIHVzZWQgaWYgdGhlCisgICAgICAgICAgICAvLyAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXIg
bWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgInJlcXVpcmVkIi4gQ29udGlu
dWUgdG8gdGhlIG5leHQgc3RlcC4KKyAgICAgICAgICAgIC8vIE5PVEU6IEltcGxlbWVudC4KKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6QWxsb3dlZDoK
KyAgICAgICAgICAgIC8vIOKGsyBBbGxvd2VkOgorICAgICAgICAgICAgLy8gQ29udGludWUgdG8g
dGhlIG5leHQgc3RlcC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8v
IDIzLiBSZXR1cm4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgfTsKKyAgICBnZXRDb25zZW50U3RhdHVzKFdU
Rk1vdmUob3B0aW9uYWxDb25maWd1cmF0aW9uLnZhbHVlKCkpLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cyksIGFjY2VzcywgV1RGTW92ZShjb25zZW50Q2FsbGJhY2spKTsKK30KKworYm9vbCBDRE1Qcml2
YXRlOjppc1BlcnNpc3RlbnRUeXBlKENETVNlc3Npb25UeXBlIHNlc3Npb25UeXBlKQoreworICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2lzLXBlcnNpc3RlbnQt
c2Vzc2lvbi10eXBlCisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYK
KworICAgIC8vIDUuMS4xLiBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8KKyAgICAvLyAxLiBM
ZXQgdGhlIHNlc3Npb24gdHlwZSBiZSB0aGUgc3BlY2lmaWVkIENETVNlc3Npb25UeXBlIHZhbHVl
LgorICAgIC8vIDIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSB2YWx1ZSBvZiBzZXNzaW9uIHR5
cGUgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgc3dpdGNoIChzZXNzaW9uVHlwZSkgewor
ICAgIGNhc2UgQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeToKKyAgICAgICAgLy8g4oazICJ0ZW1w
b3JhcnkiCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQ
ZXJzaXN0ZW50TGljZW5zZToKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNh
Z2VSZWNvcmQ6CisgICAgICAgIC8vIOKGsyAicGVyc2lzdGVudC1saWNlbnNlIgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETVBy
aXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmlj
dGlvbnMsIExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MpCit7CisgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFu
ZC1jb25zZW50CisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKwor
ICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50Cisg
ICAgLy8gR2l2ZW4gYSBLZXkgU3lzdGVtcyBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbiwg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwKKyAgICAv
LyByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiwgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBv
cnRlZCBjb25maWd1cmF0aW9uLCBOb3RTdXBwb3J0ZWQsIG9yIENvbnNlbnREZW5pZWQKKyAgICAv
LyBhcyBhcHByb3ByaWF0ZSBhbmQsIGluIHRoZSBDb25zZW50RGVuaWVkIGNhc2UsIHJlc3RyaWN0
aW9ucy4KKworICAgIC8vIDEuIExldCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGJlIGEgbmV3
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gZGljdGlvbmFyeS4KKyAgICBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiB7IH07CisKKyAgICAvLyAyLiBT
ZXQgdGhlIGxhYmVsIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFs
IHRoZSBsYWJlbCBtZW1iZXIgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24uCisgICAgYWNjdW11
bGF0ZWRDb25maWd1cmF0aW9uLmxhYmVsID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5sYWJlbDsK
KworICAgIC8vIDMuIElmIHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBjYW5kaWRhdGUgY29u
ZmlndXJhdGlvbiBpcyBub24tZW1wdHksIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIGlm
ICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLmlzRW1wdHkoKSkgeworICAg
ICAgICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgdHlwZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2Yg
RE9NU3RyaW5ncy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkVHlwZXM7CisKKyAg
ICAgICAgLy8gMy4yLiBGb3IgZWFjaCB2YWx1ZSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidz
IGluaXREYXRhVHlwZXMgbWVtYmVyOgorICAgICAgICBmb3IgKGF1dG8gaW5pdERhdGFUeXBlIDog
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKSB7CisgICAgICAgICAgICAvLyAz
LjIuMS4gTGV0IGluaXREYXRhVHlwZSBiZSB0aGUgdmFsdWUuCisgICAgICAgICAgICAvLyAzLjIu
Mi4gSWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGdlbmVyYXRpbmcgcmVxdWVzdHMgYmFz
ZWQgb24gaW5pdERhdGFUeXBlLCBhZGQgaW5pdERhdGFUeXBlCisgICAgICAgICAgICAvLyAgICAg
ICAgdG8gc3VwcG9ydGVkIHR5cGVzLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2
ZS4gVGhlIGVtcHR5IHN0cmluZyBpcyBuZXZlciBzdXBwb3J0ZWQuCisgICAgICAgICAgICBpZiAo
aW5pdERhdGFUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgaWYgKHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5
cGUpKQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChpbml0RGF0YVR5cGUp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4zLiBJZiBzdXBwb3J0ZWQgdHlwZXMgaXMgZW1w
dHksIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChzdXBwb3J0ZWRUeXBlcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIDMu
NC4gU2V0IHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uIHRvIHN1cHBvcnRlZCB0eXBlcy4KKyAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmluaXREYXRhVHlwZXMgPSBXVEZNb3ZlKHN1cHBvcnRlZFR5cGVzKTsKKyAgICB9CisKKyAgICAv
LyA0LiBMZXQgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBiZSB0aGUgdmFsdWUg
b2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVy
LgorICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0g
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisKKyAgICAvLyA1
LiBJZiBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVtZW50IGlzICJvcHRpb25hbCIgYW5k
IERpc3RpbmN0aXZlIElkZW50aWZpZXJzIGFyZSBub3QgYWxsb3dlZCBhY2NvcmRpbmcgdG8KKyAg
ICAvLyAgICByZXN0cmljdGlvbnMsIHNldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVt
ZW50IHRvICJub3QtYWxsb3dlZCIuCisgICAgaWYgKGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVp
cmVtZW50ID09IENETVJlcXVpcmVtZW50OjpPcHRpb25hbCAmJiByZXN0cmljdGlvbnMuZGlzdGlu
Y3RpdmVJZGVudGlmaWVyRGVuaWVkKQorICAgICAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXJSZXF1
aXJlbWVudCA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworCisgICAgLy8gNi4gRm9sbG93
IHRoZSBzdGVwcyBmb3IgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBmcm9tIHRo
ZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBzd2l0Y2ggKGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVp
cmVtZW50KSB7CisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ6CisgICAgICAgIC8v
IOKGsyAicmVxdWlyZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5v
dCBzdXBwb3J0IHVzZSBvZiBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGluIGNvbWJpbmF0aW9u
CisgICAgICAgIC8vIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdHJpY3Rp
b25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9
PSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6T3B0aW9u
YWw6CisgICAgICAgIC8vIOKGsyAib3B0aW9uYWwiCisgICAgICAgIC8vIENvbnRpbnVlIHdpdGgg
dGhlIGZvbGxvd2luZyBzdGVwcy4KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENETVJlcXVp
cmVtZW50OjpOb3RBbGxvd2VkOgorICAgICAgICAvLyDihrMgIm5vdC1hbGxvd2VkIgorICAgICAg
ICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdXNlIERpc3RpbmN0aXZlIElkZW50
aWZpZXIocykgb3IgRGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykKKyAgICAgICAg
Ly8gaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0
cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIDcuIFNldCB0aGUgZGlz
dGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGVxdWFsIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQuCisgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9IGRpc3RpbmN0aXZlSWRlbnRp
ZmllclJlcXVpcmVtZW50OworCisgICAgLy8gOC4gTGV0IHBlcnNpc3RlbnQgc3RhdGUgcmVxdWly
ZW1lbnQgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3Mg
cGVyc2lzdGVudFN0YXRlIG1lbWJlci4KKyAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudCA9IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlOwor
CisgICAgLy8gOS4gSWYgcGVyc2lzdGVudCBzdGF0ZSByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwi
IGFuZCBwZXJzaXN0aW5nIHN0YXRlIGlzIG5vdCBhbGxvd2VkIGFjY29yZGluZyB0byByZXN0cmlj
dGlvbnMsCisgICAgLy8gICAgc2V0IHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQgdG8gIm5v
dC1hbGxvd2VkIi4KKyAgICBpZiAocGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgPT0gQ0RNUmVx
dWlyZW1lbnQ6Ok9wdGlvbmFsICYmIHJlc3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQp
CisgICAgICAgIHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50ID0gQ0RNUmVxdWlyZW1lbnQ6Ok5v
dEFsbG93ZWQ7CisKKyAgICAvLyAxMC4gRm9sbG93IHRoZSBzdGVwcyBmb3IgcGVyc2lzdGVudCBz
dGF0ZSByZXF1aXJlbWVudCBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBzd2l0Y2ggKHBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KSB7CisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6UmVx
dWlyZWQ6CisgICAgICAgIC8vIOKGsyAicmVxdWlyZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBs
ZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBlcnNpc3Rpbmcgc3RhdGUgaW4gY29tYmluYXRp
b24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGFuZCByZXN0cmlj
dGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICh0aGlzLT5wZXJzaXN0ZW50
U3RhdGVSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykg
PT0gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlv
bmFsOgorICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgorICAgICAgICAvLyBDb250aW51ZSB3aXRo
IHRoZSBmb2xsb3dpbmcgc3RlcHMuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDRE1SZXF1
aXJlbWVudDo6Tm90QWxsb3dlZDoKKyAgICAgICAgLy8g4oazICJub3QtYWxsb3dlZCIKKyAgICAg
ICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHBlcnNpc3Rpbmcgc3RhdGUgaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGFu
ZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQKKyAgICAgICAgaWYgKHRoaXMtPnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJp
Y3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyAxMS4gU2V0IHRo
ZSBwZXJzaXN0ZW50U3RhdGUgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8g
ZXF1YWwgdGhlIHZhbHVlIG9mIHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQuCisgICAgYWNj
dW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IHBlcnNpc3RlbnRTdGF0ZVJl
cXVpcmVtZW50OworCisgICAgLy8gMTIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSBmaXJzdCBt
YXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgVmVjdG9yPENE
TVNlc3Npb25UeXBlPiBzZXNzaW9uVHlwZXM7CisKKyAgICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3Vy
YXRpb24uc2Vzc2lvblR5cGVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyDihrMgSWYgdGhlIHNl
c3Npb25UeXBlcyBtZW1iZXIgaXMgcHJlc2VudCBbV2ViSURMXSBpbiBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbgorICAgICAgICAvLyBMZXQgc2Vzc2lvbiB0eXBlcyBiZSBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbidzIHNlc3Npb25UeXBlcyBtZW1iZXIuCisgICAgICAgIHNlc3Npb25UeXBlcyA9IGNh
bmRpZGF0ZUNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIOKGsyBPdGhlcndpc2UKKyAgICAgICAgLy8gTGV0IHNlc3Npb24gdHlwZXMgYmUgWyAidGVt
cG9yYXJ5IiBdLgorICAgICAgICBzZXNzaW9uVHlwZXMgPSB7IENETVNlc3Npb25UeXBlOjpUZW1w
b3JhcnkgfTsKKyAgICB9CisKKyAgICAvLyAxMy4gRm9yIGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0
eXBlczoKKyAgICBmb3IgKGF1dG8mIHNlc3Npb25UeXBlIDogc2Vzc2lvblR5cGVzKSB7CisgICAg
ICAgIC8vIDEzLjEuIExldCBzZXNzaW9uIHR5cGUgYmUgdGhlIHZhbHVlLgorICAgICAgICAvLyAx
My4yLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVl
IGlzICJub3QtYWxsb3dlZCIgYW5kIHRoZQorICAgICAgICAvLyAgICAgICBJcyBwZXJzaXN0ZW50
IHNlc3Npb24gdHlwZT8gYWxnb3JpdGhtIHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJl
dHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24u
cGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lz
dGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICAvLyAxMy4zLiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9y
dCBzZXNzaW9uIHR5cGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uCisgICAgICAgIC8vICAgICAgIGFuZCByZXN0cmljdGlvbnMgZm9yIG90aGVyIHJlYXNvbnMs
IHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKHNlc3Npb25UeXBlLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxMy40IElmIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUgaXMgIm9wdGlv
bmFsIiBhbmQgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBJcworICAgICAgICAvLyAgICAgIHBl
cnNpc3RlbnQgc2Vzc2lvbiB0eXBlPyBhbGdvcml0aG0gb24gc2Vzc2lvbiB0eXBlIGlzIHRydWUs
IGNoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlCisgICAg
ICAgIC8vICAgICAgdmFsdWUgdG8gInJlcXVpcmVkIi4KKyAgICAgICAgaWYgKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
ICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpSZXF1aXJl
ZDsKKyAgICB9CisKKyAgICAvLyAxNC4gU2V0IHRoZSBzZXNzaW9uVHlwZXMgbWVtYmVyIG9mIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gc2Vzc2lvbiB0eXBlcy4KKyAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzID0gc2Vzc2lvblR5cGVzOworCisgICAgLy8gMTUu
IElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBhbmQgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVycyBp
biBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBhcmUgYm90aCBlbXB0eSwgcmV0dXJuIE5vdFN1cHBv
cnRlZC4KKyAgICBpZiAoY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5p
c0VtcHR5KCkgJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyAxNi4g4oazIElm
IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24g
aXMgbm9uLWVtcHR5OgorICAgIGlmICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFi
aWxpdGllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gMTYuMS4gTGV0IHZpZGVvIGNhcGFiaWxp
dGllcyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgR2V0IFN1cHBvcnRlZCBDYXBhYmls
aXRpZXMgZm9yIEF1ZGlvL1ZpZGVvIFR5cGUgYWxnb3JpdGhtIG9uCisgICAgICAgIC8vICAgICAg
IFZpZGVvLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJl
ciwgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwgYW5kIHJlc3RyaWN0aW9ucy4KKyAgICAgICAg
YXV0byB2aWRlb0NhcGFiaWxpdGllcyA9IGdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvckF1ZGlv
VmlkZW9UeXBlKEF1ZGlvVmlkZW9UeXBlOjpWaWRlbywgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52
aWRlb0NhcGFiaWxpdGllcywgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMp
OworCisgICAgICAgIC8vIDE2LjIuIElmIHZpZGVvIGNhcGFiaWxpdGllcyBpcyBudWxsLCByZXR1
cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxNi4zIFNldCB0aGUgdmlk
ZW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gdmlk
ZW8gY2FwYWJpbGl0aWVzLgorICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlkZW9D
YXBhYmlsaXRpZXMgPSBXVEZNb3ZlKHZpZGVvQ2FwYWJpbGl0aWVzLnZhbHVlKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIDE2LiDihrMgT3RoZXJ3aXNlOgorICAgICAgICAvLyAgICAgU2V0
IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlv
biB0byBhbiBlbXB0eSBzZXF1ZW5jZS4KKyAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LnZpZGVvQ2FwYWJpbGl0aWVzID0geyB9OworICAgIH0KKworICAgIC8vIDE3LiDihrMgSWYgdGhl
IGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBpcyBu
b24tZW1wdHk6CisgICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0
aWVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyAxNy4xLiBMZXQgYXVkaW8gY2FwYWJpbGl0aWVz
IGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBHZXQgU3VwcG9ydGVkIENhcGFiaWxpdGll
cyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0gb24KKyAgICAgICAgLy8gICAgICAgQXVk
aW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyLCBh
Y2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVzdHJpY3Rpb25zLgorICAgICAgICBhdXRv
IGF1ZGlvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRl
b1R5cGUoQXVkaW9WaWRlb1R5cGU6OkF1ZGlvLCBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlv
Q2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyk7CisK
KyAgICAgICAgLy8gMTcuMi4gSWYgYXVkaW8gY2FwYWJpbGl0aWVzIGlzIG51bGwsIHJldHVybiBO
b3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIDE3LjMgU2V0IHRoZSBhdWRpb0Nh
cGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBhdWRpbyBj
YXBhYmlsaXRpZXMuCisgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFi
aWxpdGllcyA9IFdURk1vdmUoYXVkaW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgLy8gMTcuIOKGsyBPdGhlcndpc2U6CisgICAgICAgIC8vICAgICBTZXQgdGhl
IGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGFuIGVtcHR5IHNlcXVlbmNlLgorICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uYXVk
aW9DYXBhYmlsaXRpZXMgPSB7IH07CisgICAgfQorCisgICAgLy8gMTguIElmIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMgIm9wdGlvbmFs
IiwgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nCisgICAgLy8gICAgIGNv
bmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBpZiAoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVudDo6T3B0aW9u
YWwpIHsKKyAgICAgICAgLy8g4oazIElmIHRoZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyB1c2Ug
RGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBvciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRp
ZmllcihzKSBmb3IgYW55IG9mIHRoZQorICAgICAgICAvLyAgICBjb21iaW5hdGlvbnMgaW4gYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlmaWVy
c1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBD
RE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpIHsKKyAgICAgICAgICAgIC8vIENoYW5nZSBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRvICJyZXF1
aXJlZCIuCisgICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8g4oazIE90aGVyd2lzZQorICAgICAgICAgICAgLy8gICAgQ2hhbmdlIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgdG8g
Im5vdC1hbGxvd2VkIi4KKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0
aW5jdGl2ZUlkZW50aWZpZXIgPSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIDE5LiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVy
c2lzdGVudFN0YXRlIHZhbHVlIGlzICJvcHRpb25hbCIsIGZvbGxvdyB0aGUgc3RlcHMgZm9yIHRo
ZSBmaXJzdCBtYXRjaGluZworICAgIC8vICAgICBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5n
IGxpc3Q6CisgICAgaWYgKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUg
PT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsKSB7CisgICAgICAgIC8vIOKGsyBJZiB0aGUgaW1w
bGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBzdGF0ZSBmb3IgYW55IG9mIHRoZSBjb21i
aW5hdGlvbnMgaW4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAodGhpcy0+
cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0
cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgeworICAgICAgICAgICAgLy8g
Q2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUg
dG8gInJlcXVpcmVkIi4KKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCisgICAgICAgICAgICAvLyAgICBDaGFuZ2Ug
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0byAibm90
LWFsbG93ZWQiLgorICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3Rl
bnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25maWd1cmF0aW9uIHNwZWNp
ZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uCisgICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90IGFsbG93ZWQgaW4g
dGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KKyAgICBpZiAoIXN1cHBvcnRzQ29uZmln
dXJhdGlvbihhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgaWYgKChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCB8fCBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgJiYg
YWNjZXNzID09IExvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247Cisg
ICAgLy8gTk9URTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0dXMoKS4KK30KKworT3B0aW9u
YWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENh
cGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKENETVByaXZhdGU6OkF1ZGlvVmlkZW9UeXBlIHR5
cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRp
ZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9u
LCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykKK3sKKyAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNhcGFiaWxpdGllcy1mb3It
YXVkaW8tdmlkZW8tdHlwZQorICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAy
MDE2CisKKyAgICAvLyAzLjEuMS4zIEdldCBTdXBwb3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRp
by9WaWRlbyBUeXBlCisKKyAgICAvLyBHaXZlbiBhbiBhdWRpby92aWRlbyB0eXBlLCBDRE1NZWRp
YUNhcGFiaWxpdHkgc2VxdWVuY2UgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdGllcywgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbgorICAgIC8vIHBhcnRpYWwgY29uZmlndXJhdGlvbiwgYW5kIHJl
c3RyaWN0aW9ucywgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIHN1cHBvcnRl
ZCBDRE1NZWRpYUNhcGFiaWxpdHkgdmFsdWVzCisgICAgLy8gZm9yIHRoaXMgYXVkaW8vdmlkZW8g
dHlwZSBvciBudWxsIGFzIGFwcHJvcHJpYXRlLgorCisgICAgLy8gMS4gTGV0IGxvY2FsIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBjb3B5IG9mIHBhcnRpYWwgY29uZmlndXJh
dGlvbi4KKyAgICBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJh
dGlvbiA9IHBhcnRpYWxDb25maWd1cmF0aW9uOworCisgICAgLy8gMi4gTGV0IHN1cHBvcnRlZCBt
ZWRpYSBjYXBhYmlsaXRpZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgQ0RNTWVkaWFDYXBhYmls
aXR5IGRpY3Rpb25hcmllcy4KKyAgICBWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiBzdXBwb3J0
ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07CisKKyAgICAvLyAzLiBGb3IgZWFjaCByZXF1ZXN0ZWQg
bWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzOgorICAgIGZv
ciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJlcXVlc3RlZENhcGFiaWxpdGllcykgewor
ICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFi
aWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCisgICAgICAgIC8vIDMuMi4gTGV0IHJvYnVzdG5l
c3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyByb2J1c3RuZXNzIG1lbWJlci4KKyAg
ICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0ZWRDYXBhYmlsaXR5LnJvYnVzdG5lc3M7
CisKKyAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMgdGhlIGVtcHR5IHN0cmluZywg
cmV0dXJuIG51bGwuCisgICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBhYmlsaXR5LmNvbnRlbnRUeXBl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
Ly8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52YWxpZCBvciB1bnJlY29nbml6ZWQgTUlN
RSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAgICAgIE9wdGlvbmFs
PFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNlZENvbnRlbnRUeXBlOjpjcmVh
dGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9kZTo6UmZjMjA0NSk7CisgICAg
ICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRhaW5lciB0eXBlIHNwZWNpZmllZCBieSBj
b250ZW50IHR5cGUuCisgICAgICAgIFN0cmluZyBjb250YWluZXIgPSBjb250ZW50VHlwZS0+bWlt
ZVR5cGUoKTsKKworICAgICAgICAvLyAzLjYuIElmIHRoZSB1c2VyIGFnZW50IGRvZXMgbm90IHN1
cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uIFRoZSBjYXNl
LXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRl
dGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4KKyAgICAgICAgLy8gMy43LiBMZXQgcGFy
YW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFdIHBhcmFtZXRlcnMsIGlmIGFueSwgc3Bl
Y2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KKyAgICAgICAgLy8gMy44LiBJZiB0aGUgdXNlciBhZ2Vu
dCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1ldGVycywgY29udGludWUgdG8g
dGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAvLyAzLjkuIExldCBtZWRpYSB0eXBlcyBiZSB0
aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMgc3BlY2lmaWVkIGJ5IHBhcmFt
ZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNv
bXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQyBvciBvdGhlciBz
cGVjaWZpY2F0aW9uLgorICAgICAgICBTdHJpbmcgY29kZWNzID0gY29udGVudFR5cGUtPnBhcmFt
ZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7CisgICAgICAgIGlmIChjb250ZW50VHlwZS0+cGFy
YW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgpID8gMCA6IDEpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgLy8gMy4xMC4gSWYgbWVkaWEgdHlwZXMgaXMgZW1wdHk6Cisg
ICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyDihrMgSWYgY29u
dGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVjaWZpYyBzZXQgb2YgY29kZWNzIGFuZCBj
b2RlYyBjb25zdHJhaW50czoKKyAgICAgICAgICAgIC8vIOKGsyBPdGhlcndpc2U6CisgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4xMS4gSWYg
Y29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1ZGlvL3ZpZGVvIHR5cGUsIGNvbnRpbnVl
IHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKyAgICAgICAgLy8gMy4xMi4gSWYgcm9idXN0bmVzcyBp
cyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFpbnMgYW4gdW5yZWNvZ25pemVkIHZhbHVl
IG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQorICAgICAgICAvLyAgICAgICBpbXBsZW1lbnRh
dGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBTdHJpbmcgY29tcGFyaXNvbiBp
cyBjYXNlLXNlbnNpdGl2ZS4KKyAgICAgICAgaWYgKCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAh
c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkuY29udGFpbnMocm9idXN0bmVzcykpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNlciBhZ2VudCBhbmQgaW1w
bGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9mIGVuY3J5cHRlZCBtZWRp
YSBkYXRhIGZvciB0aGUKKyAgICAgICAgLy8gICAgICAgY29tYmluYXRpb24gb2YgY29udGFpbmVy
LCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9jYWwgYWNjdW11bGF0ZWQgY29uZmlndXJh
dGlvbiBpbiBjb21iaW5hdGlvbgorICAgICAgICAvLyAgICAgICB3aXRoIHJlc3RyaWN0aW9uczoK
KyAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAg
ICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShjb250ZW50VHlwZS0+bWltZVR5cGUoKSk7
CisgICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7CisKKyAgICAgICAgICAg
IC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRp
YVNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlw
ZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRl
ZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24sIHJlc3RyaWN0aW9ucykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyAzLjEzLjEuIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byBzdXBwb3J0ZWQgbWVk
aWEgY2FwYWJpbGl0aWVzLgorICAgICAgICBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcy5hcHBl
bmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisKKyAgICAgICAgLy8gMy4xMy4yLiDihrMgSWYgYXVk
aW8vdmlkZW8gdHlwZSBpcyBWaWRlbzoKKyAgICAgICAgLy8gICAgICAgICBBZGQgcmVxdWVzdGVk
IG1lZGlhIGNhcGFiaWxpdHkgdG8gdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBsb2Nh
bCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLgorICAgICAgICBpZiAodHlwZSA9PSBBdWRpb1Zp
ZGVvVHlwZTo6VmlkZW8pCisgICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlk
ZW9DYXBhYmlsaXRpZXMuYXBwZW5kKHJlcXVlc3RlZENhcGFiaWxpdHkpOworICAgICAgICAvLyAz
LjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlzIEF1ZGlvOgorICAgICAgICAvLyAgICAg
ICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byB0aGUgYXVkaW9DYXBhYmlsaXRp
ZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGll
cy5hcHBlbmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisgICAgfQorCisgICAgLy8gNC4gSWYgc3Vw
cG9ydGVkIG1lZGlhIGNhcGFiaWxpdGllcyBpcyBlbXB0eSwgcmV0dXJuIG51bGwuCisgICAgaWYg
KHN1cHBvcnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIC8vIDUuIFJldHVybiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0
aWVzLgorICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllczsKK30KKwordm9pZCBD
RE1Qcml2YXRlOjpnZXRDb25zZW50U3RhdHVzKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJlc3RyaWN0aW9ucywg
TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0
LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25zZW50CisgICAgLy8gVzNDIEVkaXRvcidz
IERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKworICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBD
b25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQuCisgICAgLy8gMjEuIElmIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMgInJlcXVpcmVk
IiBhbmQgdGhlIERpc3RpbmN0aXZlIElkZW50aWZpZXIocykgYXNzb2NpYXRlZAorICAgIC8vICAg
ICB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYXJlIG5vdCB1bmlxdWUgcGVyIG9yaWdp
biBhbmQgcHJvZmlsZSBhbmQgY2xlYXJhYmxlOgorICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAm
JiAhZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKSB7CisgICAgICAgIC8vIDIxLjEuIFVwZGF0ZSByZXN0
cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBkZXNjcmliZWQgYnkg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3QgaGF2ZSB1c2VyIGNvbnNlbnQuCisgICAg
ICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVlOworICAg
ICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhLyNnZXQtY29uc2VudC1zdGF0dXMKKyAgICAvLyAzLjEuMS40IEdldCBDb25zZW50IFN0YXR1
cworICAgIC8vIEdpdmVuIGFuIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9u
cyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIHRoZSBjb25zZW50IHN0YXR1cyBm
b3IgYWNjdW11bGF0ZWQKKyAgICAvLyBjb25maWd1cmF0aW9uIGFuZCBvcmlnaW4gYXMgb25lIG9m
IENvbnNlbnREZW5pZWQsIEluZm9ybVVzZXIgb3IgQWxsb3dlZCwgdG9nZXRoZXIgd2l0aCBhbiB1
cGRhdGVkIHZhbHVlIGZvciByZXN0cmljdGlvbnMKKyAgICAvLyBpbiB0aGUgQ29uc2VudERlbmll
ZCBjYXNlLgorCisgICAgLy8gMS4gSWYgdGhlcmUgaXMgcGVyc2lzdGVkIGRlbmlhbCBmb3Igb3Jp
Z2luIGluZGljYXRpbmcgdGhhdCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCBhbGxv
d2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLjEuIFVwZGF0ZSByZXN0cmlj
dGlvbnMgdG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHdoaWNoIGNvbnNlbnQgaGFz
IGJlZW4gZGVuaWVkLgorICAgIC8vIDEuMi4gUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3Ry
aWN0aW9ucy4KKyAgICAvLyAyLiBJZiB0aGVyZSBpcyBwZXJzaXN0ZWQgY29uc2VudCBmb3Igb3Jp
Z2luIGluZGljYXRpbmcgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBhbGxvd2VkLCByZXR1
cm4gQWxsb3dlZC4KKyAgICAvLyBOT1RFOiBwZXJzaXN0ZWQgZGVuaWFsIC8gY29uc2VudCB1bmlt
cGxlbWVudGVkLgorCisgICAgLy8gMy4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6
CisgICAgLy8gICAg4oazIFRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIgYW5kIHRoZSBjb21iaW5h
dGlvbiBvZiB0aGUgVXNlciBBZ2VudCwKKyAgICAvLyAgICAgICBpbXBsZW1lbnRhdGlvbiBhbmQg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBmb2xsb3cgYWxsIHRoZSByZWNvbW1l
bmRhdGlvbnMgb2YgQWxsb3cgUGVyc2lzdGVudCBEYXRhIHRvIEJlIENsZWFyZWQKKyAgICAvLyAg
ICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKS4KKyAgICAvLyBO
T1RFOiBhc3N1bWUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgZm9sbG93IGFsbCByZWNvbW1lbmRhdGlv
bnMuCisKKyAgICAvLyAgICDihrMgVGhlIHVzZXIgYWdlbnQgcmVxdWlyZXMgZXhwbGljaXQgdXNl
ciBjb25zZW50IGZvciB0aGUgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBmb3Igb3RoZXIgcmVh
c29ucy4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWly
ZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCisKKyAgICAvLyAzLjEuIFJlcXVlc3QgdXNlciBjb25z
ZW50IHRvIHVzZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGluIHRoZSBvcmlnaW4gYW5kIHdh
aXQgZm9yIHRoZSB1c2VyIHJlc3BvbnNlLgorICAgIC8vICAgICAgVGhlIGNvbnNlbnQgbXVzdCBp
bmNsdWRlIGNvbnNlbnQgdG8gdXNlIGEgRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBhbmQvb3Ig
RGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykgYXMgYXBwcm9wcmlhdGUKKyAgICAv
LyAgICAgIGlmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXIgbWVtYmVyIGlzICJyZXF1aXJlZCIuCisgICAgLy8gMy4yLiBJZiBjb25zZW50IHdhcyBkZW5p
ZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDMuMi4xLiBVcGRhdGUgcmVzdHJp
Y3Rpb25zIHRvIHJlZmxlY3QgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB3aGljaCBjb25zZW50IHdh
cyBkZW5pZWQuCisgICAgLy8gMy4yLjEuIFJldHVybiBDb25zZW50RGVuaWVkIGFuZCByZXN0cmlj
dGlvbnMuCisgICAgLy8gTk9URTogYXNzdW1lIGltcGxpZWQgY29uc2VudCBpZiB0aGUgY29tYmlu
YXRpb24gb2Ygb3JpZ2luIGFuZCB0b3BPcmlnaW4gYWxsb3dzIGl0LgorICAgIGlmIChhY2N1bXVs
YXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50
OjpSZXF1aXJlZCAmJiBhY2Nlc3MgPT0gTG9jYWxTdG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkKSB7
CisgICAgICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVl
OworICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3Zl
KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0LiBJZiB0aGUgZGlzdGluY3RpdmVJZGVudGlm
aWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCAibm90LWFsbG93
ZWQiLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmRpc3RpbmN0aXZlSWRlbnRpZmllciAhPSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkgewor
ICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpJbmZvcm1Vc2VyLCBXVEZNb3ZlKGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyA1LiBJZiB0aGUgdXNlciBhZ2VudCByZXF1aXJlcyBpbmZv
cm1pbmcgdGhlIHVzZXIgZm9yIHRoZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGZvciBvdGhl
ciByZWFzb25zLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVz
ZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBpbmZvcm1pbmcgdGhlIHVzZXIuCisKKyAgICAvLyA2
LiBSZXR1cm4gQWxsb3dlZC4KKyAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpBbGxvd2VkLCBX
VEZNb3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7
Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCAyNWY3ODE2YTJmZTFkYTZmOTBjMmZlZjc3
NzU1MTQwNmFhMGY0YTAzLi5mOGQyYzEzOWIwN2EzM2M3YmIzZDMyMzhjNjE4ZTE3ZmI4ZjQzYTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCkBAIC0zMSwyMSArMzEsMzEgQEAKICNpbmNsdWRlICJDRE1SZXF1aXJlbWVudC5o
IgogI2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eTsK
IHN0cnVjdCBDRE1SZXN0cmljdGlvbnM7CiAKLWNsYXNzIENETVByaXZhdGUgeworY2xhc3MgQ0RN
UHJpdmF0ZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1Qcml2YXRlPiB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5DRE1Qcml2YXRlKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0ID0gMDsKKyAgICBlbnVtIGNsYXNzIExvY2Fs
U3RvcmFnZUFjY2VzcyA6IGJvb2wgeworICAgICAgICBOb3RBbGxvd2VkLAorICAgICAgICBBbGxv
d2VkLAorICAgIH07CisKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4p
PjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbihDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwg
TG9jYWxTdG9yYWdlQWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CisK
KyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lv
blR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVz
dG5lc3NlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENETVJlcXVpcmVtZW50IGRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ0RNUmVx
dWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFy
YWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwpAQCAtNTYs
NiArNjYsMzQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VC
Q09SRV9FWFBPUlQgQ0RNUHJpdmF0ZSgpOworICAgIHN0YXRpYyBib29sIGlzUGVyc2lzdGVudFR5
cGUoQ0RNU2Vzc2lvblR5cGUpOworCisgICAgZW51bSBjbGFzcyBDb25maWd1cmF0aW9uU3RhdHVz
IHsKKyAgICAgICAgU3VwcG9ydGVkLAorICAgICAgICBOb3RTdXBwb3J0ZWQsCisgICAgICAgIENv
bnNlbnREZW5pZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQ29uc2VudFN0YXR1cyB7Cisg
ICAgICAgIENvbnNlbnREZW5pZWQsCisgICAgICAgIEluZm9ybVVzZXIsCisgICAgICAgIEFsbG93
ZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQXVkaW9WaWRlb1R5cGUgeworICAgICAgICBB
dWRpbywKKyAgICAgICAgVmlkZW8sCisgICAgfTsKKworICAgIHZvaWQgZG9TdXBwb3J0ZWRDb25m
aWd1cmF0aW9uU3RlcChDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmln
dXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiYsIExvY2FsU3RvcmFnZUFjY2VzcywgU3VwcG9ydGVk
Q29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOworICAgIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24+IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiwgTG9j
YWxTdG9yYWdlQWNjZXNzKTsKKyAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5
Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5
cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRp
ZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9u
LCBDRE1SZXN0cmljdGlvbnMmKTsKKworICAgIHVzaW5nIENvbnNlbnRTdGF0dXNDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChDb25zZW50U3RhdHVzLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiYsIENETVJlc3RyaWN0aW9ucyYmKT47CisgICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJl
c3RyaWN0aW9ucyYmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIENvbnNlbnRTdGF0dXNDYWxsYmFjayYm
KTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVJlcXVpcmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCmluZGV4IDY5YWMxMmQzMTZiZjY2NTdiYjBhMjRkYWY3
YWU0ZmEwZmQ0ZjFjOTguLjViMGI3NzgwZDI3ZGZlYjE5M2RjZTZlY2RhNzE3ODUyOGY3Y2Q1OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJl
cXVpcmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUmVxdWlyZW1lbnQuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgeworZW51bSBjbGFzcyBDRE1SZXF1aXJl
bWVudCA6IHVpbnQ4X3QgewogICAgIFJlcXVpcmVkLAogICAgIE9wdGlvbmFsLAogICAgIE5vdEFs
bG93ZWQKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgewogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQsCisgICAg
ICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpSZXF1aXJlZCwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsLAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVu
dDo6Tm90QWxsb3dlZAorICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAppbmRleCBjNTJlMjgyYTEyZTkxYTQ4ODEwYmQxOGI4
N2ViNmFkNjM4ZjIxMGE4Li45Y2EyYWM1OWU4YjEzNTQ2M2E1MmRiNDVlODA3MzFmNTBjNjk0ZjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1S
ZXN0cmljdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1SZXN0cmljdGlvbnMuaApAQCAtMzYsNiArMzYsMzkgQEAgc3RydWN0IENETVJlc3RyaWN0
aW9ucyB7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlRGVuaWVkIHsgZmFsc2UgfTsKICAgICBIYXNoU2V0PENE
TVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJE
ZW5pZWQ7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlRGVuaWVkOworICAgICAg
ICBlbmNvZGVyIDw8IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNUmVzdHJpY3Rpb25zPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3Rp
bmN0aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJEZW5pZWQ7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVk
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxi
b29sPiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVu
dFN0YXRlRGVuaWVkOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZURlbmllZCkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8SGFzaFNldDxD
RE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRIYXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdF
bnVtSGFzaFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAg
ICAgIGRlY29kZXIgPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworICAgICAgICBpZiAoIWRlbmllZFNl
c3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
cmV0dXJuIHt7CisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkLAorICAg
ICAgICAgICAgKnBlcnNpc3RlbnRTdGF0ZURlbmllZCwKKyAgICAgICAgICAgIFdURk1vdmUoKmRl
bmllZFNlc3Npb25UeXBlcyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVNlc3Npb25UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oCmluZGV4IDYwNTc0YTVhNjkzYTk2YzQ5ZjQ5ZmI3MzQ5
NmVkNzViN2UxZTZmYmIuLmUwN2MzMDAyNzkzMDVmNzc0M2YyMmZjZjU0MDZmMmNmYTY4MWRlMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNl
c3Npb25UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNU2Vzc2lvblR5cGUuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgeworZW51bSBjbGFzcyBDRE1TZXNzaW9u
VHlwZSA6IHVpbnQ4X3QgewogICAgIFRlbXBvcmFyeSwKICAgICBQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQsCiAgICAgUGVyc2lzdGVudExpY2Vuc2UKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3Mg
Q0RNU2Vzc2lvblR5cGUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNU2Vzc2lvblR5cGUsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpUZW1wb3Jh
cnksCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZQor
ICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDQ1MTExZGM3NWI1NTA4MGNlZjRlNWZiMzhh
ZTI2MzNiMzllYTcyMzMuLmRhYTNjZWMyNTMwNjcxNDBhMmZlM2I1MjIyOTQ1MGQwODg5MjNmYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ0RNUmVzdHJpY3Rp
b25zLmgiCiAjaW5jbHVkZSAiQ0RNU2Vzc2lvblR5cGUuaCIKKyNpbmNsdWRlICJJbml0RGF0YVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI5MCwxMCArMjkxLDEzIEBAIGJvb2wgQ0RNRmFj
dG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkK
IENETVByaXZhdGVDbGVhcktleTo6Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogQ0RN
UHJpdmF0ZUNsZWFyS2V5Ojp+Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1ib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7Ci0gICAgLy8gYGtleWlkc2Ag
YW5kICdjZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgotICAgIHJl
dHVybiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRz
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgIndlYm0iKSk7
CisgICAgcmV0dXJuIHsKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6a2V5aWRzTmFtZSgpLAor
ICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpLAorICAgICAgICBJbml0RGF0YVJl
Z2lzdHJ5Ojp3ZWJtTmFtZSgpLAorICAgIH07CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zUGVy
c2lzdGVudExpY2Vuc2VUeXBlKGNvbnN0IFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4mIHR5cGVzKQpA
QCAtMzM3LDcgKzM0MSw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0NvbmZp
Z3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAorYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1T
ZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgLy8gT25seSBzdXBwb3J0IHRoZSAndGVtcG9y
YXJ5JyBhbmQgJ3BlcnNpc3RlbnQtbGljZW5zZScgc2Vzc2lvbiB0eXBlcy4KICAgICBpZiAoc2Vz
c2lvblR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSAmJiBzZXNzaW9uVHlwZSAhPSBD
RE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2UpCkBAIC0zNDUsMTAgKzM0OSwxMCBAQCBi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKENETVNlc3Npb25UeXBlJiBzZQogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Jv
YnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJp
bmc+IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsK
ICAgICAvLyBPbmx5IGVtcHR5IGByb2J1c3RuZXNzYCBzdHJpbmcgaXMgc3VwcG9ydGVkLgotICAg
IHJldHVybiByb2J1c3RuZXNzLmlzRW1wdHkoKTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSB9
OwogfQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlQ2xlYXJLZXk6OmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0CkBAIC00MzIsMzQgKzQzNiwy
MCBAQCBPcHRpb25hbDxTdHJpbmc+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVTZXNzaW9u
SWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCiAKIENETUluc3RhbmNlQ2xlYXJLZXk6On5DRE1J
bnN0YW5jZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1DRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgZGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxs
b3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICAvLyBOby1vcC4KLSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQotCi1DRE1J
bnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldERpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGlu
ZyBkaXN0aW5jdGl2ZSBpZGVudGlmaWVycyBhcyBhbGxvd2VkLgotICAgIHJldHVybiAhYWxsb3dl
ZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKLX0KLQotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBD
RE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dl
ZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGluZyBwZXJzaXN0ZW50IHN0YXRlIGFzIGFsbG93ZWQu
Ci0gICAgcmV0dXJuICFhbGxvd2VkID8gU3VjY2VlZGVkIDogRmFpbGVkOworICAgIFN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0
aXZlSWRlbnRpZmllcnM6Ok5vICYmIHBlcnNpc3RlbnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3RlbnRT
dGF0ZTo6Tm8pID8gU3VjY2VlZGVkIDogRmFpbGVkOworICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7
CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ0RNSW5zdGFuY2VD
bGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZl
ciBjZXJ0aWZpY2F0ZS4KLSAgICByZXR1cm4gRmFpbGVkOworICAgIGNhbGxiYWNrKEZhaWxlZCk7
CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCit2b2lkIENE
TUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikKIHsK
LSAgICAvLyBSZWplY3QgYW55IHBlcnNpc3RlbnQgc3RhdGUgc3RvcmFnZS4KLSAgICByZXR1cm4g
c3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7CiB9CiAKIGNv
bnN0IFN0cmluZyYgQ0RNSW5zdGFuY2VDbGVhcktleTo6a2V5U3lzdGVtKCkgY29uc3QKQEAgLTQ5
OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRo
ZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBj
aGVja3MgYXJlIGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDY3MDRhZTdh
OTU3ZjMyZmUxZjg0OTgzZWQzYjNmNjUwMmE1MzE1YTIuLjY2OTdhMDQ1NWJlZjI5MTU1YmY1OTAz
ODRmNTJmMDQyOTFhZGMwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNzQsMTEg
Kzc0LDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUo
Y29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOwogICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJl
c3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3QgZmluYWw7CkBAIC05NywxMSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICAv
LyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkNsZWFyS2V5OyB9Ci0g
ICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQ
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKLSAgICBTdWNjZXNz
VmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIH07CkBAIC0xMTEsNyArMTA5LDcgQEAgcHVibGlj
OgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBh
cmVudCkKICAgICAgICAgOiBtX3BhcmVudEluc3RhbmNlKHBhcmVudCkgeyB9CiAgICAgdm9pZCBy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCmluZGV4IDU3ZGZjYmY0YmM3YzQ4ODQ0ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIu
LmRiMGIyZjhhN2UwZjI2OTZhMWQ4ZGI2ZjRkNGY0N2FhZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2
NTcsMTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShD
RE1JbnN0YW5jZSYgaW5zdGFuY2UpCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVy
OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1f
c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCA9IHNob3VsZDsKKyAgICBtX3ByaXZhdGUtPnNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRpZgorCiBNZWRp
YVRpbWUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2
YXRlLT5kdXJhdGlvbk1lZGlhVGltZSgpOwpAQCAtMTMxMiw5ICsxMzIwLDkgQEAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBNZWRpYVBsYXllcjo6Y2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBr
ZXlJZCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChrZXlJZCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5
KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSkKIHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERh
dGEpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKIH0KIAog
U3RyaW5nIE1lZGlhUGxheWVyOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdl
NmNiOGEzOTBkZjdmZTFhN2FhZTAxNzM5ZGM5NDhmNzc2NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBj
NTY5ZTY3YTQxZTEyMGI3NjQwZWZhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5
QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoVWludDhBcnJheSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0
cmluZygpOyB9CiAjZW5kaWYKIApAQCAtMzY2LDYgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJik7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyAg
ICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQ7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBwYXVzZWQo
KSBjb25zdDsKICAgICBib29sIHNlZWtpbmcoKSBjb25zdDsKIApAQCAtNTE5LDcgKzUyNCw3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29u
c3Q7Ci0gICAgYm9vbCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQg
a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4gbV9tZWRpYVN0cmVhbTsKICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggOWY3ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0
YjBkY2ExY2MxNzVhOC4uN2E4MjA0NzBmOTk5YWM5OWE2YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKQEAgLTI0Myw2ICsyNDMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkg
eyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAppbmRleCA0ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJh
YmZjZGU1YTBkNGI4MTE4ZDAzY2M5MmYxZDYxOWQ2MWQ3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI0Nyw5ICsyNDcsOSBAQCBib29sIENETUZh
Y3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZygpID0gZGVmYXVsdDsKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewotICAgIHJldHVy
biB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOworICAgIHJldHVy
biBjb3B5VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5cGVzKCkpOwogfQogCiBib29sIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0zMDUsNyArMzA1LDcg
QEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzQ29uZmlndXJhdGlv
bldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0QKICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBz
ZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBl
LCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAog
ewogICAgIGlmIChzZXNzaW9uVHlwZSA9PSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAg
ICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVu
dDo6UmVxdWlyZWQpCkBAIC0zMTYsMTMgKzMxNiwxMCBAQCBib29sIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Np
bwogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAK
LWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29u
c3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAg
ICBpZiAocm9idXN0bmVzcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAg
Ly8gRklYTUU6IERldGVybWluZSBhbiBlbnVtZXJhdGVkIGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1
ZXMgc3VwcG9ydGVkIGJ5IEZQUy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHsgZW1w
dHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyAr
MzYzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdAogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0
RGF0YVR5cGUpKQorICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERh
dGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9
PSBzaW5mTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmlu
ZGV4IDUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZkMTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFk
N2FmYmFlMmQyYzU2MTJmODRiNDM0YzBmMTBmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oCkBAIC01NSwxMSArNTUsMTEgQEAgcHVibGljOgogICAgIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZygpOwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3Ry
aW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZElu
aXREYXRhVHlwZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1T
ZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBj
b25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVz
c2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBw
ZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IDcwZWFjMzZhNDc5NzgxNWExYWYyNGUyZDU3YjAyMjZmYjQ5NzljNDYuLjVkOWE5YTBh
ZjU3NTNhMTBiMmRkMTdjMWU5NWI3OTQyYTE0MTgyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAt
MTkzMSw5ICsxOTMxLDcgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKIAogICAgICAgICB1bnNp
Z25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAgICAg
YXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVy
KSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPmtleU5l
ZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAg
ICAgbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CiAgICAgICAg
IHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJLCBhdlJlcXVlc3QpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCBiMTFmNzFhOWI1ZTM4YmY2OThi
MTM5NDlkZGRlODZmM2RkOTk0Y2MxLi4wMGI2ZmI4MjIwY2E3ZjA1YzA5MWYyNjUzODZlMjk5MmY0
MGU2M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTc0LDExICs3NCw5IEBAIHB1Ymxp
YzoKIAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAK
LSAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNl
dFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwotICAgIFN1Y2Nl
c3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZv
aWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRl
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxD
RE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIAogICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CkBAIC0xMjAsNyArMTE4LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3MzI2Nzc1ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0
NjQ3Y2I4ZDMxLi4yYThiYjM4YzcwMzMwN2E3MmE3MTM1MTNmYTZiMjM4NDE0M2FhMWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjY4LDcyICsyNjgsNjMgQEAgYm9vbCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNNZWRpYUNhcGFiaWxpdHkoY29u
c3QgQ0RNTWVkaWEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NW
YWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSBwZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8v
IEZJWE1FOiB2ZXJpZnkgdGhhdCBGYWlyUGxheVN0cmVhbWluZyBkb2VzIG5vdCAoYW5kIGNhbm5v
dCkgZXhwb3NlIGEgZGlzdGluY3RpdmUgaWRlbnRpZmllciB0byB0aGUgY2xpZW50Ci0gICAgaWYg
KGNvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpS
ZXF1aXJlZCkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKLQotICAgIGlmIChjb25maWd1cmF0aW9u
LnBlcnNpc3RlbnRTdGF0ZSAhPSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQgJiYgKGNvbmZpZ3Vy
YXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNh
Z2VSZWNvcmQpIHx8IGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Np
b25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkpKQotICAgICAgICByZXR1cm4gRmFpbGVkOwotCi0g
ICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpS
ZXF1aXJlZCAmJiAhbV9zdG9yYWdlVVJMKQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgIGF1
dG8gaW5pdGlhbGl6ZSA9IFsmXSAoKSB7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLmRpc3Rp
bmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAgICAg
ICByZXR1cm4gRmFpbGVkOwogCi0gICAgaWYgKGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNv
bnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkgJiYgIXN1cHBvcnRzUGVy
c2lzdGVudEtleXMoKSkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKKyAgICAgICAgaWYgKGNvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlICE9IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAo
Y29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNp
c3RlbnRVc2FnZVJlY29yZCkgfHwgY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMo
Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKSkpCisgICAgICAgICAgICByZXR1cm4g
RmFpbGVkOwogCi0gICAgaWYgKCFQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWQ29udGVudEtl
eVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCkpCi0gICAgICAgIHJldHVybiBGYWlsZWQ7CisgICAg
ICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6
UmVxdWlyZWQgJiYgIW1fc3RvcmFnZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7CiAK
LSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQorICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5zZXNz
aW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKSAmJiAh
c3VwcG9ydHNQZXJzaXN0ZW50S2V5cygpKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAot
Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkKLXsKLSAgICAvLyBG
SVhNRTogdmVyaWZ5IHRoYXQgRmFpclBsYXlTdHJlYW1pbmcgZG9lcyBub3QgKGFuZCBjYW5ub3Qp
IGV4cG9zZSBhIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgdG8gdGhlIGNsaWVudAotICAgIHJldHVy
biBTdWNjZWVkZWQ7Ci19CisgICAgICAgIGlmICghUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9B
VkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpKQorICAgICAgICAgICAgcmV0dXJu
IEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sIHBlcnNpc3Rl
bnRTdGF0ZUFsbG93ZWQpCi17Ci0gICAgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVyc2lz
dGVudFN0YXRlQWxsb3dlZDsKLSAgICByZXR1cm4gU3VjY2VlZGVkOworICAgICAgICBtX3BlcnNp
c3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3RhdGUgPT0gQWxsb3dQZXJzaXN0ZW50U3Rh
dGU6OlllczsKKyAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICB9OworICAgIGNhbGxiYWNr
KGluaXRpYWxpemUoKSk7CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUpCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBt
X3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0
dXJuIFN1Y2NlZWRlZDsKKyAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi1DRE1JbnN0YW5j
ZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRT
dG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSkKK3ZvaWQgQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KQogewogICAgIGlmIChzdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkgewogICAgICAgICBtX3N0b3JhZ2VVUkwgPSBuaWw7Ci0gICAgICAgIHJldHVy
biBTdWNjZWVkZWQ7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHN0b3JhZ2VQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rv
cnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVk
OworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJ
c0RpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5LCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1i
b2xpY0xpbmtzOjpZZXMpKSB7CiAgICAgICAgIGF1dG8gdGVtcERpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIk1lZGlhS2V5cyIpOwogICAgICAgICBpZiAo
IXRlbXBEaXJlY3RvcnkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGF1dG8gdGVtcFN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBEaXJlY3RvcnksIEZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShzdG9yYWdlUGF0aCkpOwogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1vdmVGaWxl
KHN0b3JhZ2VEaXJlY3RvcnksIHRlbXBTdG9yYWdlUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4g
RmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
bW92ZUZpbGUodGVtcERpcmVjdG9yeSwgc3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICBy
ZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fc3RvcmFn
ZVVSTCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpzdG9yYWdl
UGF0aCBpc0RpcmVjdG9yeTpOT10pOwotICAgIHJldHVybiBTdWNjZWVkZWQ7CiB9CiAKIFJlZlB0
cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpjcmVhdGVTZXNzaW9uKCkKQEAgLTU4MCw3ICs1NzEsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFs
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1
cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VE
YXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9u
cy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7
CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CkBAIC03MTEsNyArNzAyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBbbV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJl
cXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsK
IAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxi
YWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNj
ZXNzIGNhbGxiYWNrLgogICAgIHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiBtZXRob2Qg
PSBwcm90b2NvbF9nZXRNZXRob2REZXNjcmlwdGlvbihAcHJvdG9jb2woQVZDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNzaW9uOmNvbnRlbnRLZXlSZXF1
ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVTKTsKQEAgLTExNDAsNyArMTEzMSw4IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmll
ckNoYW5nZWQoTlNEYXRhCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2Vzc2lvbklkID0gc2Vz
c2lvbklkOwotICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vz
c2lvbklkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKEFWQ29udGVudEtleVJlcG9ydEdy
b3VwKiBncm91cCwgTlNEYXRhICpzZXNzaW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IGYyYTg2Y2FiZjY4Yzg4NjgxY2MyZGZkMWVlYmY1YmJjOWQ0ZGZhYmIuLjZkZmMw
MTMzN2ZmODQ5YTc3NDJjMTFhMDAxYjYxNzkxOTFjY2NjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMTY3OCw4ICsxNjc4LDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAg
ICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7
CiAKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGlu
aXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghcGxheWVyKCktPmtl
eU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikK
QEAgLTE3MTMsNyArMTcxNiw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXRE
YXRhLnB0cigpKTsKKworICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVy
S2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9rZXlV
UklUb1JlcXVlc3RNYXAuc2V0KGtleUlELCBhdlJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCBjZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2
ZDcxYjM2OTY2MzJkLi44OTE5NjRiYWQ1NTA0OTNkY2Q3YjgxOGY3MDBhZWViZjdjYmYyYzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtOTgsNiArOTgs
MTEgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxT
dHJpbmc+JiYgdHlwZXMpCiAgICAgICAgIG1fc3VwcG9ydGVkRGF0YVR5cGVzLmFwcGVuZCh0eXBl
KTsKIH0KIAordm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3NlcykKK3sKKyAgICBtX3N1cHBvcnRlZFJvYnVzdG5lc3Mg
PSByb2J1c3RuZXNzZXMubWFwKFtdIChhdXRvJiByb2J1c3RuZXNzKSAtPiBBdG9tU3RyaW5nIHsg
cmV0dXJuIHJvYnVzdG5lc3M7IH0pOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
TW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBt
YWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CkBAIC0xMDgsMTEgKzExMywx
OCBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCiB7
CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06OnN1cHBv
cnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpOworICAgIHJldHVybiB7IH07
Cit9CisKK1ZlY3RvcjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMo
KSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCi0gICAgICAgIHJldHVybiBtX2ZhY3Rvcnkt
PnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCk7
CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25z
dApAQCAtMTM5LDcgKzE1MSw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9u
V2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5
cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkuY29udGFp
bnMoc2Vzc2lvblR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDgsMTMgKzE2MCw2
IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1l
ZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
TW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29u
c3QKLXsKLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBw
b3J0ZWRSb2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0bmVzcyk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
TWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QKIHsKICAgICBpZiAobV9mYWN0b3J5KQpAQCAt
MTk5LDcgKzIwNCw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAK
IGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFz
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghc3VwcG9ydGVkSW5p
dERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YSk7CkBAIC0yMzEsNTUgKzIzNiw0OCBAQCBN
b2NrQ0RNSW5zdGFuY2U6Ok1vY2tDRE1JbnN0YW5jZShXZWFrUHRyPE1vY2tDRE0+IGNkbSkKIHsK
IH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93
UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7Ci0gICAgaWYgKCFtX2NkbSB8fCAhbV9jZG0tPnN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKKyAgICBhdXRvIGluaXRpYWxp
emUgPSBbJl0geworICAgICAgICBpZiAoIW1fY2RtIHx8ICFtX2NkbS0+c3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbmZpZ3VyYXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAg
IHJldHVybiBTdWNjZWVkZWQ7Ci19CisgICAgICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKCFmYWN0b3J5
KQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1
ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi17Ci0gICAgaWYgKG1fZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FsbG93ZWQgPT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi0gICAg
ICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FsbG93ZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnM6Olllcyk7CiAKLSAgICBhdXRvKiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFj
dG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fs
bG93ZWQgIT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpIHsKKyAgICAgICAgICAgIGlm
ICghZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgJiYgZmFjdG9yeS0+ZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc1JlcXVpcmVtZW50KCkgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVk
KQorICAgICAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7CiAKLSAgICBpZiAoIWZhY3RvcnkgfHwg
KCFkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCAmJiBmYWN0b3J5LT5kaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQp
KQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9kaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQWxsb3dlZCA9IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkOworICAgICAgICB9
CiAKLSAgICBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkID0gZGlzdGluY3RpdmVJZGVu
dGlmaWVyc0FsbG93ZWQ7Ci0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKLX0KKyAgICAgICAgYm9vbCBw
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gKHBlcnNpc3RlbnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3Rl
bnRTdGF0ZTo6WWVzKTsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFu
Y2U6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
KQotewotICAgIGlmIChtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPT0gcGVyc2lzdGVudFN0YXRl
QWxsb3dlZCkKLSAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICAgICAgaWYgKG1fcGVyc2lz
dGVudFN0YXRlQWxsb3dlZCAhPSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKSB7CisgICAgICAgICAg
ICBpZiAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKLQotICAgIGlmICghZmFjdG9yeSB8
fCAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpKQotICAgICAgICBy
ZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVy
c2lzdGVudFN0YXRlQWxsb3dlZDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gU3VjY2VlZGVk
OworICAgIH07CiAKLSAgICBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkOwotICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgY2FsbGJhY2soaW5pdGlhbGl6
ZSgpKTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUpCit2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgU3RyaW5n
VmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNh
dGUtPnNpemUoKSk7CiAKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpKQotICAgICAgICByZXR1cm4gU3VjY2VlZGVkOwotICAgIHJl
dHVybiBGYWlsZWQ7CisgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KIAotQ0RN
SW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJikKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgLy8gT24gZGlzayBzdG9yYWdlIGlzIHVudXNlZDsg
bm8tb3AuCi0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKIH0KIAogY29uc3QgU3RyaW5nJiBNb2NrQ0RN
SW5zdGFuY2U6OmtleVN5c3RlbSgpIGNvbnN0CkBAIC0zMjUsNyArMzIzLDcgQEAgdm9pZCBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNl
LmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1
ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9y
eSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlm
ICghZmFjdG9yeSkgewpAQCAtMzMzLDcgKzMzMSw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUs
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZl
Y3RvciA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAn
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+
ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNl
VmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCmluZGV4IDM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5ZjEuLjM3MGI2
ZTI4MGQ5MWRiYTY3OWFiNDBjNWM2NDY0Y2NiYzM5MDI2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIGNvbnN0
IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkgY29u
c3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7IH0KICAgICB2b2lkIHNldFN1cHBv
cnRlZFNlc3Npb25UeXBlcyhWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mJiB0eXBlcykgeyBt
X3N1cHBvcnRlZFNlc3Npb25UeXBlcyA9IFdURk1vdmUodHlwZXMpOyB9CiAKLSAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vw
cG9ydGVkUm9idXN0bmVzczsgfQotICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3MpIHsgbV9zdXBwb3J0ZWRSb2J1c3RuZXNzID0gV1RGTW92
ZShyb2J1c3RuZXNzKTsgfQorICAgIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgc3VwcG9ydGVk
Um9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsgfQorICAg
IHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmKTsKIAogICAgIE1l
ZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50OyB9CiAgICAg
dm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoTWVkaWFLZXlzUmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQpIHsgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQg
PSByZXF1aXJlbWVudDsgfQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5
c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBNZWRpYUtleXNSZXF1
aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRE
YXRhVHlwZXM7CiAgICAgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+IG1fc3VwcG9ydGVkU2Vz
c2lvblR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkUm9idXN0bmVzczsKKyAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwogICAgIFZlY3RvcjxN
ZWRpYUtleUVuY3J5cHRpb25TY2hlbWU+IG1fc3VwcG9ydGVkRW5jcnlwdGlvblNjaGVtZXM7CiAg
ICAgYm9vbCBtX3JlZ2lzdGVyZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3Rh
bmNlcyB7IHRydWUgfTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKLWNsYXNz
IE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1vY2tD
RE0+IHsKK2NsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0
b3J5Pik7CkBAIC0xMDksMTEgKzEwOSwxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBNb2NrQ0RNSW5zdGFuY2U7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBl
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMo
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJl
bWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmlu
YWw7CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQo
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJl
VW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0IGZpbmFsOwpAQCAtMTM4LDExICsxMzgsOSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQotICAgIFN1Y2Nlc3NWYWx1
ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmll
cnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0U3Rv
cmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTdG9yYWdl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOwogCkBAIC0xNTcsNyArMTU1LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA1ZWZlNjYyNWQ2
ZjJmOTBhZGVkNzdkOGM1NTk3ZGYzYzc4OGYzMWRiLi41YjBmYTE5Y2UyZWIyZTNlODM5MDE0OGUx
NTY2NDg3ZGMwODkzYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC00OTAsMTAgKzQ5MCw5IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJD
YWNoZWRLZXlGb3JLZXlJZChjb25zdCBTCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSop
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE2YmIyZGRmYTIxNDc0NzBlODYwMGFiNzEzOTZh
NTljZGY1NDQ5ZmEuLjRhNzM5ZmI0ZjliNWQ2NzNkNGU5ZjJiNWFmNTM5NTFlM2VlZGQwY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxh
eWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9pZCBtZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKQEAg
LTI1Miw2ICsyNTIsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpMYXlvdXRSZWN0IG1fdmlk
ZW9Db250ZW50Qm94UmVjdDsKICAgICBmbG9hdCBtX3ZpZGVvQ29udGVudFNjYWxlIHsgMS4wIH07
CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICBib29sIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCB7IGZhbHNl
IH07CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbV9sb2dnZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IDM5MTJiNDAxNGExMTAxYjNm
MjE0MDQ3ODIwMWI1M2IxYzczYTE0NDguLmRhMTA4MjQyYTY5YmIwMzQ0NGY0ZGZiNjdjMDZmNGU2
MDA4OTEwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0
aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00Nyw0
ICs0OCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gV2Vi
TWVkaWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdAogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQordm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZh
Y3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpCit7CisgICAgcmV0dXJuIFdl
Q29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAppbmRleCBlMTlhNTNh
ZmZjOGFiZTQzMjFkZWVkYWU1MWI4MjIzYmExMmI3MTNiLi41MzQwMTQxOTBhY2M2NzlmNGFhYjhl
YjJhZmU4NTZlMzgxNDAwY2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaApAQCAtNDIsNiArNDIsOSBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGVB
dWRpb0Rlc3RpbmF0aW9uKFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjayYsCiAgICAgICAgIGNvbnN0
IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSBvdmVycmlk
ZTsKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCByZWdpc3Rl
ckNETUZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+Jikgb3ZlcnJpZGU7CisjZW5kaWYKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBib29sIG1fdXNlR1BVUHJvY2VzcyB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggNjBmMzQ1MTc5ZjQ5MTRiNzc5
YTBhMmI3YWE3NWVmNDNkYjZlMWYzZS4uMjMzMGM0YTk5MDdjOTUwNjYwMWZjNjhhZDNiYmQ5MmIz
NzUwMDA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtNzMsNiArNzMsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShjYWxs
YmFjaywgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPENETUZhY3Rv
cnkqPiYgZmFjdG9yaWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlQ29yZTo6Q0RNRmFjdG9y
eTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOworICAgIH0KKyNlbmRpZgog
fTsKIAogTWVkaWFTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0
cmF0ZWd5KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391980</attachid>
            <date>2020-02-28 08:08:05 -0800</date>
            <delta_ts>2020-02-28 08:19:17 -0800</delta_ts>
            <desc>Patch for landing: Part 1: WebCore</desc>
            <filename>bug-208090-20200228080804.patch</filename>
            <type>text/plain</type>
            <size>156418</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM2ZGFjZjZmZWE3MTU3
YzdhNDkyMGFhMzMxNjMwZDkzNWNiMzYwMS4uMGNjYzhjODY5ZTI3ZTE0ODJkNGY2OWQ4ZTBiMDRh
ZWYzYWQwY2UxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0wMi0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50
IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIFRvIGVuYWJsZSBjYWNoaW5nIG9mIGNlcnRhaW4gQ0RN
IHByb3BlcnRpZXMsIGFsbG93IHRoZW0gdG8gYmUgZmV0Y2hlZCByYXRoZXIgdGhhbiBxdWVyaWVz
LiBBcyBzdWNoLAorICAgICAgICBDRE1Qcml2YXRlOjpzdXBwb3J0c0luaXREYXRhVHlwZSAtPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzLCBzdXBwb3J0c1JvYnVzdG5lc3MgLT4gc3VwcG9ydGVkUm9i
dXN0bmVzc2VzLgorCisgICAgICAgIFRvIGVuYWJsZSBDRE0gdHlwZXMgdG8gYmUgcGFzc2VkIGFj
cm9zcyBYUEMsIGFkZCBleHBsaWNpdCBzaXplcyB0byB0aGUgZW51bWVyYXRpb25zLCBhbmQgYWRk
IGVuY29kZSBhbmQKKyAgICAgICAgZGVjb2RlIHRlbXBsYXRlcyB0byB0aGUgZGF0YSB0eXBlcy4K
KworICAgICAgICBUbyBlbmFibGUgYXN5bmMgbWVzc2FnaW5nIGZvcm0gdGhlIEdQVSBwcm9jZXNz
J3MgTWVkaWFQbGF5ZXIsIHNlbmQgdGhlIE1lZGlhUGxheWVyIHRoZSBpbmZvcm1hdGlvbiBpdAor
ICAgICAgICBuZWVkcyB3aGVuIGJvdGggbGVnYWN5LSBhbmQgbW9kZXJuLUVNRSBBUElzIGFyZSBi
b3RoIGVuYWJsZWQsIHJhdGhlciB0aGFuIGFsbG93IHRoZSBNZWRpYVBsYXllclByaXZhdGUKKyAg
ICAgICAgdG8gcXVlcnkgdGhlIE1lZGlhUGxheWVyLgorCisgICAgICAgIE1vdmUgbW9zdCBvZiB0
aGUgYWxnb3JpdGhpbWljIGltcGxlbWVudGF0aW9uIGZyb20gQ0RNIGludG8gQ0RNUHJpdmF0ZSwg
YWxsb3dpbmcgaXQgdG8gYmUgcnVuIGZyb20gd2l0aGluCisgICAgICAgIHRoZSBHUFUgcHJvY2Vz
cy4gU2ltaWxtYXJseSwgbWFrZSBtb3N0IG9mIHRoZSBzeW5jaHJvbm91cyBtZXRob2RzIGluIENE
TUluc3RhbmNlIGluc3RlYWQgdGFrZSBhIGNhbGxiYWNrCisgICAgICAgIHBhcmFtZXRlciwgYWxs
b3dpbmcgdGhlbSB0byBiZSBpbXBsZW1lbnRlZCBpbiBhIHJlbW90ZSBwcm9jZXNzLgorCisgICAg
ICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN5
c3RlbUFjY2Vzczo6Y3JlYXRlTWVkaWFLZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNl
cnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJO
ZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
S2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5n
aW5lV2FzVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1LZXlTdGF0dXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETU1lZGlhQ2Fw
YWJpbGl0eTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETU1lZGlhQ2FwYWJp
bGl0eTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNz
YWdlVHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlOjpkb1N1cHBvcnRlZENvbmZpZ3Vy
YXRpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGU6OmlzUGVyc2lzdGVudFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0
aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0
Q29uc2VudFN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJp
dmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmg6
CisgICAgICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmtleU5lZWRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3Jh
cHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE06OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NETTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzIGNvbnN0KToK
KwogMjAyMC0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBDcmVhdGUgQXVkaW9EZXN0aW5hdGlvbiBpbiB0aGUgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NjkyNTk3NTE1ZjY4NTkwNGRmMTdiYWE2OGZlYTljNzc4MmU3YzgxNy4uMWVlNDllNjkxNjVmOWUz
ZjQyZTlkMDRjNDc2YmJmMTU1ZjUzYmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
UF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkb3B0IGNoYW5nZXMgdG8gTWVk
aWFQbGF5ZXJQcm94eS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJN
ZWRpYVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJhdGVneTo6cmVn
aXN0ZXJDRE1GYWN0b3JpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1l
ZGlhU3RyYXRlZ3kuaDoKKwogMjAyMC0wMi0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQW5ub3RhdGUgbWVkaWFUeXBlIHdpdGggYW4gYXZhaWxhYmlsaXR5
IG1hY3JvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkNGQwZmUzYjZhZDBjYjE2
NjI3YjZmYjRlNWZiOWViNDQxNjVjZTMuLmY4ZWFkNjI5NzQyMGNlMzNlMjEyY2Y4Mzg5YTg3MzFl
Y2M2Zjk3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0wMi0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkb3B0IGNoYW5nZXMgdG8g
UGxhdGZvcm1TdHJhdGVnaWVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBDcmVhdGUgQXVkaW9EZXN0aW5hdGlvbiBpbiB0aGUgR1BV
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGRjMTNhOGMwM2Q4Y2Y0NWYyODIxZmNjNmFl
MjI4N2NiZTBhZmIzNTYuLjZlODNlZWNiZDZkMTE1NDFhNzIyZWRmNDM1ODg1ZDgxOWM3YTQxZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTAzNSw2ICsxMDM1LDIwIEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCiAgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKIAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAor
ICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorICAgIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZVNlc3Npb24uaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0
YXR1cy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgK
KyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisgICAgcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
LmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAorICAgIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKKwogICAgIHBsYXRmb3JtL2dh
bWVwYWQvR2FtZXBhZFByb3ZpZGVyLmgKICAgICBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92
aWRlckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDRiYmIy
YmNlNjE4NzRiN2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAuLmM1NWJlMDY0MjE2NTAwZWQwYjI3
ZDVhOWU5Y2M5NjIxZjdhNGEwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKQEAgLTc5LDUxMCArNzksMTggQEAgdm9pZCBDRE06OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRl
Q29uZmkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNn
ZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRpb24KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkg
Tm92ZW1iZXIgMjAxNgorICAgIC8vIEltcGxlbWVudGVkIGluIENETVByaXZhdGU6OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oKQogCi0gICAgLy8gMy4xLjEuMSBHZXQgU3VwcG9ydGVkIENvbmZp
Z3VyYXRpb24KLSAgICAvLyBHaXZlbiBhIEtleSBTeXN0ZW1zIGltcGxlbWVudGF0aW9uIGltcGxl
bWVudGF0aW9uLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlIGNvbmZpZ3Vy
YXRpb24sIGFuZCBvcmlnaW4sCi0gICAgLy8gdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBv
cnRlZCBjb25maWd1cmF0aW9uIG9yIE5vdFN1cHBvcnRlZCBhcyBhcHByb3ByaWF0ZS4KLQotICAg
IC8vIDEuIExldCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBiZSBDb25zZW50RGVuaWVkLgotICAg
IC8vIDIuIEluaXRpYWxpemUgcmVzdHJpY3Rpb25zIHRvIGluZGljYXRlIHRoYXQgbm8gY29uZmln
dXJhdGlvbnMgaGF2ZSBoYWQgdXNlciBjb25zZW50IGRlbmllZC4KLSAgICBNZWRpYUtleXNSZXN0
cmljdGlvbnMgcmVzdHJpY3Rpb25zIHsgfTsKLSAgICBkb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25T
dGVwKFdURk1vdmUoY2FuZGlkYXRlQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25z
KSwgV1RGTW92ZShjYWxsYmFjaykpOwotfQotCi12b2lkIENETTo6ZG9TdXBwb3J0ZWRDb25maWd1
cmF0aW9uU3RlcChNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1
cmF0aW9uLCBNZWRpYUtleXNSZXN0cmljdGlvbnMmJiByZXN0cmljdGlvbnMsIFN1cHBvcnRlZENv
bmZpZ3VyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbgotICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2LCBjdGQuCi0KLSAgICAvLyAz
LjEuMS4xIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbgotICAgIC8vIDMuIFJlcGVhdCB0aGUg
Zm9sbG93aW5nIHN0ZXAgd2hpbGUgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gaXMgQ29uc2VudERl
bmllZDoKLSAgICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBhbmQsIGlmIHBy
b3ZpZGVkLCByZXN0cmljdGlvbnMgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlCi0gICAg
Ly8gR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50IGFsZ29yaXRobSB3aXRo
IGltcGxlbWVudGF0aW9uLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwKLSAgICAvLyByZXN0cmlj
dGlvbnMgYW5kIG9yaWdpbi4KLSAgICBhdXRvIG9wdGlvbmFsQ29uZmlndXJhdGlvbiA9IGdldFN1
cHBvcnRlZENvbmZpZ3VyYXRpb24oY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KTsKLSAgICBpZiAoIW9wdGlvbmFsQ29uZmlndXJhdGlvbikgeworICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IGlmICghZG9jdW1lbnQgfHwgIW1fcHJpdmF0ZSkgewogICAgICAgICBjYWxsYmFjayhXVEY6Om51
bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb25zZW50Q2FsbGJh
Y2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChDb25zZW50U3RhdHVzIHN0YXR1cywgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiYgY29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYgcmVzdHJpY3Rpb25z
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAgY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICAvLyAzLjEuMS4yIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbiBhbmQgQ29uc2VudCwgY3Rk
LgotICAgICAgICAvLyAyMi4gTGV0IGNvbnNlbnQgc3RhdHVzIGFuZCB1cGRhdGVkIHJlc3RyaWN0
aW9ucyBiZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIEdldCBDb25zZW50IFN0YXR1cyBhbGdv
cml0aG0gb24gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwKLSAgICAgICAgLy8gICAgIHJlc3Ry
aWN0aW9ucyBhbmQgb3JpZ2luIGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2Yg
Y29uc2VudCBzdGF0dXMgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgICAgIHN3aXRjaCAo
c3RhdHVzKSB7Ci0gICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmllZDoKLSAg
ICAgICAgICAgIC8vIOKGsyBDb25zZW50RGVuaWVkOgotICAgICAgICAgICAgLy8gICAgUmV0dXJu
IENvbnNlbnREZW5pZWQgYW5kIHVwZGF0ZWQgcmVzdHJpY3Rpb25zLgotICAgICAgICAgICAgd2Vh
a1RoaXMtPmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoV1RGTW92ZShjb25maWd1cmF0aW9u
KSwgV1RGTW92ZShyZXN0cmljdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSBDb25zZW50U3RhdHVzOjpJbmZvcm1Vc2VyOgotICAg
ICAgICAgICAgLy8g4oazIEluZm9ybVVzZXIKLSAgICAgICAgICAgIC8vICAgIEluZm9ybSB0aGUg
dXNlciB0aGF0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgaW4gdXNlIGluIHRoZSBvcmln
aW4gaW5jbHVkaW5nLCBzcGVjaWZpY2FsbHksIHRoZSBpbmZvcm1hdGlvbiB0aGF0Ci0gICAgICAg
ICAgICAvLyAgICBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9vciBEaXN0aW5jdGl2ZSBQ
ZXJtYW5lbnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZSB3aWxsIGJlIHVzZWQgaWYgdGhl
Ci0gICAgICAgICAgICAvLyAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgInJlcXVpcmVkIi4gQ29udGludWUgdG8gdGhlIG5leHQg
c3RlcC4KLSAgICAgICAgICAgIC8vIE5PVEU6IEltcGxlbWVudC4KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6QWxsb3dlZDoKLSAgICAgICAgICAgIC8v
IOKGsyBBbGxvd2VkOgotICAgICAgICAgICAgLy8gQ29udGludWUgdG8gdGhlIG5leHQgc3RlcC4K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8vIDIzLiBSZXR1cm4gYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjb25maWd1
cmF0aW9uKSk7Ci0gICAgfTsKLSAgICBnZXRDb25zZW50U3RhdHVzKFdURk1vdmUob3B0aW9uYWxD
b25maWd1cmF0aW9uLnZhbHVlKCkpLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucyksIFdURk1vdmUoY29u
c2VudENhbGxiYWNrKSk7Ci19Ci0KLWJvb2wgQ0RNOjppc1BlcnNpc3RlbnRUeXBlKE1lZGlhS2V5
U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUpCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jaXMtcGVyc2lzdGVudC1zZXNzaW9uLXR5cGUKLSAgICAvLyBXM0Mg
RWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotCi0gICAgLy8gNS4xLjEuIElzIHBlcnNp
c3RlbnQgc2Vzc2lvbiB0eXBlPwotICAgIC8vIDEuIExldCB0aGUgc2Vzc2lvbiB0eXBlIGJlIHRo
ZSBzcGVjaWZpZWQgTWVkaWFLZXlTZXNzaW9uVHlwZSB2YWx1ZS4KLSAgICAvLyAyLiBGb2xsb3cg
dGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2Ygc2Vzc2lvbiB0eXBlIGZyb20gdGhlIGZvbGxvd2lu
ZyBsaXN0OgotICAgIHN3aXRjaCAoc2Vzc2lvblR5cGUpIHsKLSAgICBjYXNlIE1lZGlhS2V5U2Vz
c2lvblR5cGU6OlRlbXBvcmFyeToKLSAgICAgICAgLy8g4oazICJ0ZW1wb3JhcnkiCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1lZGlhS2V5U2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRM
aWNlbnNlOgotICAgIGNhc2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVj
b3JkOgotICAgICAgICAvLyDihrMgInBlcnNpc3RlbnQtbGljZW5zZSIKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1PcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETTo6Z2V0
U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYgcmVzdHJpY3Rp
b25zKQotewotICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dl
dC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbi1hbmQtY29uc2VudAotICAgIC8vIFczQyBFZGl0b3In
cyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2Ci0KLSAgICBBU1NFUlQobV9wcml2YXRlKTsKLSAgICBp
ZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIC8vIDMu
MS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50Ci0gICAgLy8gR2l2
ZW4gYSBLZXkgU3lzdGVtcyBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbiwgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLAotICAgIC8vIHJlc3Ry
aWN0aW9ucyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIGEgc3VwcG9ydGVkIGNv
bmZpZ3VyYXRpb24sIE5vdFN1cHBvcnRlZCwgb3IgQ29uc2VudERlbmllZAotICAgIC8vIGFzIGFw
cHJvcHJpYXRlIGFuZCwgaW4gdGhlIENvbnNlbnREZW5pZWQgY2FzZSwgcmVzdHJpY3Rpb25zLgot
Ci0gICAgLy8gMS4gTGV0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBuZXcgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uIGRpY3Rpb25hcnkuCi0gICAgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiB7IH07Ci0KLSAgICAvLyAyLiBTZXQg
dGhlIGxhYmVsIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFsIHRo
ZSBsYWJlbCBtZW1iZXIgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24uCi0gICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmxhYmVsID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5sYWJlbDsKLQot
ICAgIC8vIDMuIElmIHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbiBpcyBub24tZW1wdHksIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgIGlmICgh
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLmlzRW1wdHkoKSkgewotICAgICAg
ICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgdHlwZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgRE9N
U3RyaW5ncy4KLSAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkVHlwZXM7Ci0KLSAgICAg
ICAgLy8gMy4yLiBGb3IgZWFjaCB2YWx1ZSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGlu
aXREYXRhVHlwZXMgbWVtYmVyOgotICAgICAgICBmb3IgKGF1dG8gaW5pdERhdGFUeXBlIDogY2Fu
ZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKSB7Ci0gICAgICAgICAgICAvLyAzLjIu
MS4gTGV0IGluaXREYXRhVHlwZSBiZSB0aGUgdmFsdWUuCi0gICAgICAgICAgICAvLyAzLjIuMi4g
SWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGdlbmVyYXRpbmcgcmVxdWVzdHMgYmFzZWQg
b24gaW5pdERhdGFUeXBlLCBhZGQgaW5pdERhdGFUeXBlCi0gICAgICAgICAgICAvLyAgICAgICAg
dG8gc3VwcG9ydGVkIHR5cGVzLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4g
VGhlIGVtcHR5IHN0cmluZyBpcyBuZXZlciBzdXBwb3J0ZWQuCi0gICAgICAgICAgICBpZiAoaW5p
dERhdGFUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgaWYgKG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBlKGlu
aXREYXRhVHlwZSkpCi0gICAgICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKGluaXRE
YXRhVHlwZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAzLjMuIElmIHN1cHBvcnRlZCB0eXBl
cyBpcyBlbXB0eSwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKHN1cHBvcnRlZFR5
cGVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAg
ICAgLy8gMy40LiBTZXQgdGhlIGluaXREYXRhVHlwZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNv
bmZpZ3VyYXRpb24gdG8gc3VwcG9ydGVkIHR5cGVzLgotICAgICAgICBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24uaW5pdERhdGFUeXBlcyA9IFdURk1vdmUoc3VwcG9ydGVkVHlwZXMpOwotICAgIH0K
LQotICAgIC8vIDQuIExldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVtZW50IGJlIHRo
ZSB2YWx1ZSBvZiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmll
ciBtZW1iZXIuCi0gICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVy
UmVxdWlyZW1lbnQgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
cjsKLQotICAgIC8vIDUuIElmIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQgaXMg
Im9wdGlvbmFsIiBhbmQgRGlzdGluY3RpdmUgSWRlbnRpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGFj
Y29yZGluZyB0bwotICAgIC8vICAgIHJlc3RyaWN0aW9ucywgc2V0IGRpc3RpbmN0aXZlIGlkZW50
aWZpZXIgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICBpZiAoZGlzdGluY3RpdmVJ
ZGVudGlmaWVyUmVxdWlyZW1lbnQgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYm
IHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQpCi0gICAgICAgIGRpc3Rp
bmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFs
bG93ZWQ7Ci0KLSAgICAvLyA2LiBGb2xsb3cgdGhlIHN0ZXBzIGZvciBkaXN0aW5jdGl2ZSBpZGVu
dGlmaWVyIHJlcXVpcmVtZW50IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIHN3aXRjaCAo
ZGlzdGluY3RpdmVJZGVudGlmaWVyUmVxdWlyZW1lbnQpIHsKLSAgICBjYXNlIE1lZGlhS2V5c1Jl
cXVpcmVtZW50OjpSZXF1aXJlZDoKLSAgICAgICAgLy8g4oazICJyZXF1aXJlZCIKLSAgICAgICAg
Ly8gSWYgdGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdXNlIG9mIERpc3RpbmN0
aXZlIElkZW50aWZpZXIocykgaW4gY29tYmluYXRpb24KLSAgICAgICAgLy8gd2l0aCBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQu
Ci0gICAgICAgIGlmIChtX3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVx
dWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
OgotICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgotICAgICAgICAvLyBDb250aW51ZSB3aXRoIHRo
ZSBmb2xsb3dpbmcgc3RlcHMuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNZWRpYUtleXNS
ZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKLSAgICAgICAgLy8g4oazICJub3QtYWxsb3dlZCIKLSAg
ICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJ
ZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVyKHMpCi0gICAg
ICAgIC8vIGluIGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQg
cmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgotICAgICAgICBpZiAobV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0
aW9uLCByZXN0cmljdGlvbnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIC8vIDcuIFNldCB0aGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFsIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWly
ZW1lbnQuCi0gICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
ciA9IGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50OwotCi0gICAgLy8gOC4gTGV0IHBl
cnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGNhbmRp
ZGF0ZSBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIG1lbWJlci4KLSAgICBNZWRpYUtl
eXNSZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCA9IGNhbmRpZGF0ZUNvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlOwotCi0gICAgLy8gOS4gSWYgcGVyc2lzdGVudCBzdGF0
ZSByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwiIGFuZCBwZXJzaXN0aW5nIHN0YXRlIGlzIG5vdCBh
bGxvd2VkIGFjY29yZGluZyB0byByZXN0cmljdGlvbnMsCi0gICAgLy8gICAgc2V0IHBlcnNpc3Rl
bnQgc3RhdGUgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICBpZiAocGVyc2lzdGVu
dFN0YXRlUmVxdWlyZW1lbnQgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYmIHJl
c3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQpCi0gICAgICAgIHBlcnNpc3RlbnRTdGF0
ZVJlcXVpcmVtZW50ID0gIE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwotCi0gICAg
Ly8gMTAuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQg
ZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgc3dpdGNoIChwZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudCkgewotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOgotICAg
ICAgICAvLyDihrMgInJlcXVpcmVkIgotICAgICAgICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBwZXJzaXN0aW5nIHN0YXRlIGluIGNvbWJpbmF0aW9uIHdpdGggYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbgotICAgICAgICAvLyBhbmQgcmVzdHJpY3Rpb25zLCByZXR1
cm4gTm90U3VwcG9ydGVkLgotICAgICAgICBpZiAobV9wcml2YXRlLT5wZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVk
aWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6
Ok9wdGlvbmFsOgotICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgotICAgICAgICAvLyBDb250aW51
ZSB3aXRoIHRoZSBmb2xsb3dpbmcgc3RlcHMuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKLSAgICAgICAgLy8g4oazICJub3QtYWxs
b3dlZCIKLSAgICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHBlcnNpc3Rp
bmcgc3RhdGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0g
ICAgICAgIC8vIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQKLSAgICAgICAg
aWYgKG1fcHJpdmF0ZS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLCByZXN0cmljdGlvbnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJl
ZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIC8vIDExLiBTZXQgdGhlIHBlcnNpc3RlbnRTdGF0ZSBtZW1iZXIgb2YgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiB0byBlcXVhbCB0aGUgdmFsdWUgb2YgcGVyc2lzdGVudCBzdGF0
ZSByZXF1aXJlbWVudC4KLSAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0
YXRlID0gcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQ7Ci0KLSAgICAvLyAxMi4gRm9sbG93IHRo
ZSBzdGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dp
bmcgbGlzdDoKLSAgICBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4gc2Vzc2lvblR5cGVzOwot
Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnNlc3Npb25UeXBlcy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgLy8g4oazIElmIHRoZSBzZXNzaW9uVHlwZXMgbWVtYmVyIGlzIHByZXNlbnQg
W1dlYklETF0gaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgLy8gTGV0IHNlc3Np
b24gdHlwZXMgYmUgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBzZXNzaW9uVHlwZXMgbWVtYmVy
LgotICAgICAgICBzZXNzaW9uVHlwZXMgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLnNlc3Npb25U
eXBlczsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCi0gICAgICAgIC8v
IExldCBzZXNzaW9uIHR5cGVzIGJlIFsgInRlbXBvcmFyeSIgXS4KLSAgICAgICAgc2Vzc2lvblR5
cGVzID0geyBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkgfTsKLSAgICB9Ci0KLSAgICAv
LyAxMy4gRm9yIGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0eXBlczoKLSAgICBmb3IgKGF1dG8mIHNl
c3Npb25UeXBlIDogc2Vzc2lvblR5cGVzKSB7Ci0gICAgICAgIC8vIDEzLjEuIExldCBzZXNzaW9u
IHR5cGUgYmUgdGhlIHZhbHVlLgotICAgICAgICAvLyAxMy4yLiBJZiBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVlIGlzICJub3QtYWxsb3dlZCIgYW5kIHRo
ZQotICAgICAgICAvLyAgICAgICBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8gYWxnb3JpdGht
IHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAg
ICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IE1lZGlh
S2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5
cGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICAvLyAxMy4z
LiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzZXNzaW9uIHR5cGUgaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIC8vICAg
ICAgIGFuZCByZXN0cmljdGlvbnMgZm9yIG90aGVyIHJlYXNvbnMsIHJldHVybiBOb3RTdXBwb3J0
ZWQuCi0gICAgICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oc2Vzc2lvblR5cGUsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDEzLjQgSWYgYWNjdW11bGF0
ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSBpcyAib3B0aW9uYWwiIGFu
ZCB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIElzCi0gICAgICAgIC8vICAgICAgcGVyc2lzdGVu
dCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSBvbiBzZXNzaW9uIHR5cGUgaXMgdHJ1ZSwgY2hhbmdl
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUKLSAgICAgICAgLy8g
ICAgICB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1
cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwg
JiYgaXNQZXJzaXN0ZW50VHlwZShzZXNzaW9uVHlwZSkpCi0gICAgICAgICAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJl
cXVpcmVkOwotICAgIH0KLQotICAgIC8vIDE0LiBTZXQgdGhlIHNlc3Npb25UeXBlcyBtZW1iZXIg
b2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBzZXNzaW9uIHR5cGVzLgotICAgIGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMgPSBzZXNzaW9uVHlwZXM7Ci0KLSAgICAv
LyAxNS4gSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIGFuZCBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXJzIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uIGFyZSBib3RoIGVtcHR5LCByZXR1cm4gTm90
U3VwcG9ydGVkLgotICAgIGlmIChjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVvQ2FwYWJpbGl0
aWVzLmlzRW1wdHkoKSAmJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIC8vIDE2LiDi
hrMgSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJh
dGlvbiBpcyBub24tZW1wdHk6Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVv
Q2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICAvLyAxNi4xLiBMZXQgdmlkZW8gY2Fw
YWJpbGl0aWVzIGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBHZXQgU3VwcG9ydGVkIENh
cGFiaWxpdGllcyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0gb24KLSAgICAgICAgLy8g
ICAgICAgVmlkZW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgdmlkZW9DYXBhYmlsaXRpZXMg
bWVtYmVyLCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVzdHJpY3Rpb25zLgotICAg
ICAgICBhdXRvIHZpZGVvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9y
QXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5cGU6OlZpZGVvLCBjYW5kaWRhdGVDb25maWd1cmF0
aW9uLnZpZGVvQ2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0
aW9ucyk7Ci0KLSAgICAgICAgLy8gMTYuMi4gSWYgdmlkZW8gY2FwYWJpbGl0aWVzIGlzIG51bGws
IHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDE2LjMgU2V0IHRo
ZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0
byB2aWRlbyBjYXBhYmlsaXRpZXMuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi52
aWRlb0NhcGFiaWxpdGllcyA9IFdURk1vdmUodmlkZW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLy8gMTYuIOKGsyBPdGhlcndpc2U6Ci0gICAgICAgIC8vICAg
ICBTZXQgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1
cmF0aW9uIHRvIGFuIGVtcHR5IHNlcXVlbmNlLgotICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24udmlkZW9DYXBhYmlsaXRpZXMgPSB7IH07Ci0gICAgfQotCi0gICAgLy8gMTcuIOKGsyBJ
ZiB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9u
IGlzIG5vbi1lbXB0eToKLSAgICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24uYXVkaW9DYXBh
YmlsaXRpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIDE3LjEuIExldCBhdWRpbyBjYXBhYmls
aXRpZXMgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIEdldCBTdXBwb3J0ZWQgQ2FwYWJp
bGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlIGFsZ29yaXRobSBvbgotICAgICAgICAvLyAgICAg
ICBBdWRpbywgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXIsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMuCi0gICAgICAg
IGF1dG8gYXVkaW9DYXBhYmlsaXRpZXMgPSBnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRp
b1ZpZGVvVHlwZShBdWRpb1ZpZGVvVHlwZTo6QXVkaW8sIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24u
YXVkaW9DYXBhYmlsaXRpZXMsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KTsKLQotICAgICAgICAvLyAxNy4yLiBJZiBhdWRpbyBjYXBhYmlsaXRpZXMgaXMgbnVsbCwgcmV0
dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgLy8gMTcuMyBTZXQgdGhlIGF1
ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGF1
ZGlvIGNhcGFiaWxpdGllcy4KLSAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmF1ZGlv
Q2FwYWJpbGl0aWVzID0gV1RGTW92ZShhdWRpb0NhcGFiaWxpdGllcy52YWx1ZSgpKTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyAxNy4g4oazIE90aGVyd2lzZToKLSAgICAgICAgLy8gICAgIFNl
dCB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRp
b24gdG8gYW4gZW1wdHkgc2VxdWVuY2UuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlv
bi5hdWRpb0NhcGFiaWxpdGllcyA9IHsgfTsKLSAgICB9Ci0KLSAgICAvLyAxOC4gSWYgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmllciB2YWx1ZSBpcyAib3B0
aW9uYWwiLCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcKLSAgICAvLyAg
ICAgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIGlmIChhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpPcHRpb25hbCkgewotICAgICAgICAvLyDihrMgSWYgdGhlIGltcGxlbWVudGF0aW9uIHJl
cXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1h
bmVudCBJZGVudGlmaWVyKHMpIGZvciBhbnkgb2YgdGhlCi0gICAgICAgIC8vICAgIGNvbWJpbmF0
aW9ucyBpbiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIGlmIChtX3ByaXZhdGUt
PmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRp
b24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSB7Ci0g
ICAgICAgICAgICAvLyBDaGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0
aXZlSWRlbnRpZmllciB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpSZXF1aXJlZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIOKGsyBPdGhl
cndpc2UKLSAgICAgICAgICAgIC8vICAgIENoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9u
J3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRvICJub3QtYWxsb3dlZCIuCi0gICAgICAg
ICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID0gTWVk
aWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyAxOS4gSWYgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1
ZSBpcyAib3B0aW9uYWwiLCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcK
LSAgICAvLyAgICAgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIGlmIChh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IE1lZGlhS2V5c1JlcXVp
cmVtZW50OjpPcHRpb25hbCkgewotICAgICAgICAvLyDihrMgSWYgdGhlIGltcGxlbWVudGF0aW9u
IHJlcXVpcmVzIHBlcnNpc3Rpbmcgc3RhdGUgZm9yIGFueSBvZiB0aGUgY29tYmluYXRpb25zIGlu
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgaWYgKG1fcHJpdmF0ZS0+cGVyc2lz
dGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkgewotICAgICAgICAgICAgLy8g
Q2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUg
dG8gInJlcXVpcmVkIi4KLSAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQ7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCi0gICAgICAgICAgICAvLyAgICBD
aGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0
byAibm90LWFsbG93ZWQiLgotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBl
cnNpc3RlbnRTdGF0ZSA9IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25maWd1
cmF0aW9uIHNwZWNpZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhY2N1
bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90
IGFsbG93ZWQgaW4gdGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICBpZiAoIW1f
cHJpdmF0ZS0+c3VwcG9ydHNDb25maWd1cmF0aW9uKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBpZiAo
IWRvY3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCiAgICAgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwogICAgIFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4gPSBkb2N1bWVudC0+dG9wT3JpZ2luKCk7Ci0KLSAgICBpZiAoKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkIHx8IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0
ZW50U3RhdGUgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSAmJiAhb3JpZ2luLmNh
bkFjY2Vzc0xvY2FsU3RvcmFnZSgmdG9wT3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247Ci0gICAgLy8gTk9U
RTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0dXMoKS4KLX0KLQotT3B0aW9uYWw8VmVjdG9y
PE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmls
aXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShDRE06OkF1ZGlvVmlkZW9UeXBlIHR5cGUsIGNvbnN0IFZl
Y3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4mIHJlcXVlc3RlZENhcGFiaWxpdGll
cywgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlv
biwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCi17Ci0gICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jYXBhYmlsaXRp
ZXMtZm9yLWF1ZGlvLXZpZGVvLXR5cGUKLSAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92
ZW1iZXIgMjAxNgotCi0gICAgQVNTRVJUKG1fcHJpdmF0ZSk7Ci0gICAgaWYgKCFtX3ByaXZhdGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAvLyAzLjEuMS4zIEdldCBTdXBw
b3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlCi0KLSAgICAvLyBHaXZlbiBh
biBhdWRpby92aWRlbyB0eXBlLCBNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eSBzZXF1ZW5j
ZSByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24KLSAgICAvLyBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMsIHRoaXMg
YWxnb3JpdGhtIHJldHVybnMgYSBzZXF1ZW5jZSBvZiBzdXBwb3J0ZWQgTWVkaWFLZXlTeXN0ZW1N
ZWRpYUNhcGFiaWxpdHkgdmFsdWVzCi0gICAgLy8gZm9yIHRoaXMgYXVkaW8vdmlkZW8gdHlwZSBv
ciBudWxsIGFzIGFwcHJvcHJpYXRlLgotCi0gICAgLy8gMS4gTGV0IGxvY2FsIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBjb3B5IG9mIHBhcnRpYWwgY29uZmlndXJhdGlvbi4K
LSAgICBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
ID0gcGFydGlhbENvbmZpZ3VyYXRpb247Ci0KLSAgICAvLyAyLiBMZXQgc3VwcG9ydGVkIG1lZGlh
IGNhcGFiaWxpdGllcyBiZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBNZWRpYUtleVN5c3RlbU1lZGlh
Q2FwYWJpbGl0eSBkaWN0aW9uYXJpZXMuCi0gICAgVmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFD
YXBhYmlsaXR5PiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07Ci0KLSAgICAvLyAzLiBG
b3IgZWFjaCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVkaWEgY2Fw
YWJpbGl0aWVzOgotICAgIGZvciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJlcXVlc3Rl
ZENhcGFiaWxpdGllcykgewotICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUgYmUgcmVx
dWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCi0gICAgICAgIC8v
IDMuMi4gTGV0IHJvYnVzdG5lc3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyByb2J1
c3RuZXNzIG1lbWJlci4KLSAgICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0ZWRDYXBh
YmlsaXR5LnJvYnVzdG5lc3M7Ci0KLSAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMg
dGhlIGVtcHR5IHN0cmluZywgcmV0dXJuIG51bGwuCi0gICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBh
YmlsaXR5LmNvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICAgICAgLy8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52YWxpZCBv
ciB1bnJlY29nbml6ZWQgTUlNRSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24u
Ci0gICAgICAgIE9wdGlvbmFsPFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNl
ZENvbnRlbnRUeXBlOjpjcmVhdGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9k
ZTo6UmZjMjA0NSk7Ci0gICAgICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAvLyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRhaW5lciB0
eXBlIHNwZWNpZmllZCBieSBjb250ZW50IHR5cGUuCi0gICAgICAgIFN0cmluZyBjb250YWluZXIg
PSBjb250ZW50VHlwZS0+bWltZVR5cGUoKTsKLQotICAgICAgICAvLyAzLjYuIElmIHRoZSB1c2Vy
IGFnZW50IGRvZXMgbm90IHN1cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUgbmV4dCBp
dGVyYXRpb24uIFRoZSBjYXNlLXNlbnNpdGl2aXR5Ci0gICAgICAgIC8vICAgICAgb2Ygc3RyaW5n
IGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4KLSAgICAg
ICAgLy8gMy43LiBMZXQgcGFyYW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFdIHBhcmFt
ZXRlcnMsIGlmIGFueSwgc3BlY2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KLSAgICAgICAgLy8gMy44
LiBJZiB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1l
dGVycywgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgotICAgICAgICAvLyAzLjkuIExl
dCBtZWRpYSB0eXBlcyBiZSB0aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMg
c3BlY2lmaWVkIGJ5IHBhcmFtZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5Ci0gICAgICAgIC8v
ICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJp
YXRlIFJGQyBvciBvdGhlciBzcGVjaWZpY2F0aW9uLgotICAgICAgICBTdHJpbmcgY29kZWNzID0g
Y29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7Ci0gICAgICAgIGlm
IChjb250ZW50VHlwZS0+cGFyYW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgpID8gMCA6
IDEpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gMy4xMC4gSWYgbWVkaWEg
dHlwZXMgaXMgZW1wdHk6Ci0gICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAvLyDihrMgSWYgY29udGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVjaWZpYyBz
ZXQgb2YgY29kZWNzIGFuZCBjb2RlYyBjb25zdHJhaW50czoKLSAgICAgICAgICAgIC8vIOKGsyBP
dGhlcndpc2U6Ci0gICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gMy4xMS4gSWYgY29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1ZGlvL3Zp
ZGVvIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAgICAgICAgLy8gMy4x
Mi4gSWYgcm9idXN0bmVzcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFpbnMgYW4g
dW5yZWNvZ25pemVkIHZhbHVlIG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQotICAgICAgICAv
LyAgICAgICBpbXBsZW1lbnRhdGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBT
dHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAgICAgICAgaWYgKCFyb2J1c3Ru
ZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRlLT5zdXBwb3J0c1JvYnVzdG5lc3Mocm9idXN0bmVz
cykpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNl
ciBhZ2VudCBhbmQgaW1wbGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9m
IGVuY3J5cHRlZCBtZWRpYSBkYXRhIGZvciB0aGUKLSAgICAgICAgLy8gICAgICAgY29tYmluYXRp
b24gb2YgY29udGFpbmVyLCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9jYWwgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiBpbiBjb21iaW5hdGlvbgotICAgICAgICAvLyAgICAgICB3aXRo
IHJlc3RyaWN0aW9uczoKLSAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShjb250ZW50VHlw
ZS0+bWltZVR5cGUoKSk7Ci0gICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBh
cmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7
Ci0KLSAgICAgICAgICAgIC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKLSAgICAgICAgICAgIHBh
cmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJp
Y3Rpb25zKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIDMuMTMuMS4gQWRkIHJlcXVlc3RlZCBtZWRpYSBj
YXBhYmlsaXR5IHRvIHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMuCi0gICAgICAgIHN1cHBv
cnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsKLQotICAg
ICAgICAvLyAzLjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlzIFZpZGVvOgotICAgICAg
ICAvLyAgICAgICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byB0aGUgdmlkZW9D
YXBhYmlsaXRpZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24uCi0g
ICAgICAgIGlmICh0eXBlID09IEF1ZGlvVmlkZW9UeXBlOjpWaWRlbykKLSAgICAgICAgICAgIGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5hcHBlbmQocmVxdWVzdGVk
Q2FwYWJpbGl0eSk7Ci0gICAgICAgIC8vIDMuMTMuMi4g4oazIElmIGF1ZGlvL3ZpZGVvIHR5cGUg
aXMgQXVkaW86Ci0gICAgICAgIC8vICAgICAgICAgQWRkIHJlcXVlc3RlZCBtZWRpYSBjYXBhYmls
aXR5IHRvIHRoZSBhdWRpb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgbG9jYWwgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbi4KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsK
LSAgICB9Ci0KLSAgICAvLyA0LiBJZiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzIGlzIGVt
cHR5LCByZXR1cm4gbnVsbC4KLSAgICBpZiAoc3VwcG9ydGVkTWVkaWFDYXBhYmlsaXRpZXMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgLy8gNS4gUmV0dXJu
IHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMuCi0gICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlh
Q2FwYWJpbGl0aWVzOwotfQotCi12b2lkIENETTo6Z2V0Q29uc2VudFN0YXR1cyhNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jl
c3RyaWN0aW9ucyYmIHJlc3RyaWN0aW9ucywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJh
Y2spCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0
LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25zZW50Ci0gICAgLy8gVzNDIEVkaXRvcidz
IERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgewotICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZN
b3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBOT1RFOiBJbiB0aGUgZnV0dXJlLCB0aGVz
ZSBjaGVja3MgYmVsb3dlIHdpbGwgaW52b2x2ZSBhc2tpbmcgdGhlIHBhZ2UgY2xpZW50LCBwb3Nz
aWJseSBhY3Jvc3MgYSBwcm9jZXNzIGJvdW5kYXJ5LgotICAgIC8vIFRoZXkgd2lsbCBieSBuZWNl
c3NpdHkgYmUgYXN5bmNocm9ub3VzIHdpdGggY2FsbGJhY2tzLiBGb3Igbm93LCBpbXBseSB0aGlz
IGJlaGF2aW9yIGJ5IHBlcmZvcm1pbmcgaXQgaW4gYW4gYXN5bmMgdGFzay4KLQotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbiksIHJlc3RyaWN0aW9ucyA9IFdURk1vdmUocmVzdHJpY3Rpb25zKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhbV9wcml2YXRlKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3VtdWxh
dGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgaWYgKCFkb2N1
bWVudCkgewotICAgICAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmll
ZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwotICAgICAgICBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luID0gZG9jdW1lbnQtPnRvcE9yaWdpbigpOwotCi0gICAgICAg
IC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQu
Ci0gICAgICAgIC8vIDIxLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3Rp
dmVJZGVudGlmaWVyIHZhbHVlIGlzICJyZXF1aXJlZCIgYW5kIHRoZSBEaXN0aW5jdGl2ZSBJZGVu
dGlmaWVyKHMpIGFzc29jaWF0ZWQKLSAgICAgICAgLy8gICAgIHdpdGggYWNjdW11bGF0ZWQgY29u
ZmlndXJhdGlvbiBhcmUgbm90IHVuaXF1ZSBwZXIgb3JpZ2luIGFuZCBwcm9maWxlIGFuZCBjbGVh
cmFibGU6Ci0gICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAhbV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbikpIHsKLSAgICAgICAgICAgIC8vIDIxLjEuIFVwZGF0ZSBy
ZXN0cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBkZXNjcmliZWQg
YnkgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3QgaGF2ZSB1c2VyIGNvbnNlbnQuCi0g
ICAgICAgICAgICByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5pZWQsIFdU
Rk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RGTW92ZShyZXN0cmljdGlvbnMpKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1jb25zZW50LXN0YXR1cwotICAgICAgICAv
LyAzLjEuMS40IEdldCBDb25zZW50IFN0YXR1cwotICAgICAgICAvLyBHaXZlbiBhbiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiwgdGhpcyBhbGdvcml0
aG0gcmV0dXJucyB0aGUgY29uc2VudCBzdGF0dXMgZm9yIGFjY3VtdWxhdGVkCi0gICAgICAgIC8v
IGNvbmZpZ3VyYXRpb24gYW5kIG9yaWdpbiBhcyBvbmUgb2YgQ29uc2VudERlbmllZCwgSW5mb3Jt
VXNlciBvciBBbGxvd2VkLCB0b2dldGhlciB3aXRoIGFuIHVwZGF0ZWQgdmFsdWUgZm9yIHJlc3Ry
aWN0aW9ucwotICAgICAgICAvLyBpbiB0aGUgQ29uc2VudERlbmllZCBjYXNlLgotCi0gICAgICAg
IC8vIDEuIElmIHRoZXJlIGlzIHBlcnNpc3RlZCBkZW5pYWwgZm9yIG9yaWdpbiBpbmRpY2F0aW5n
IHRoYXQgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBub3QgYWxsb3dlZCwgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIC8vIDEuMS4gVXBkYXRlIHJlc3RyaWN0aW9ucyB0byBy
ZWZsZWN0IHRoZSBjb25maWd1cmF0aW9ucyBmb3Igd2hpY2ggY29uc2VudCBoYXMgYmVlbiBkZW5p
ZWQuCi0gICAgICAgIC8vIDEuMi4gUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3RyaWN0aW9u
cy4KLSAgICAgICAgLy8gMi4gSWYgdGhlcmUgaXMgcGVyc2lzdGVkIGNvbnNlbnQgZm9yIG9yaWdp
biBpbmRpY2F0aW5nIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgYWxsb3dlZCwgcmV0dXJu
IEFsbG93ZWQuCi0gICAgICAgIC8vIE5PVEU6IHBlcnNpc3RlZCBkZW5pYWwgLyBjb25zZW50IHVu
aW1wbGVtZW50ZWQuCi0KLSAgICAgICAgLy8gMy4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJl
IHRydWU6Ci0gICAgICAgIC8vICAgIOKGsyBUaGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJl
ciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCAibm90LWFsbG93ZWQiIGFuZCB0
aGUgY29tYmluYXRpb24gb2YgdGhlIFVzZXIgQWdlbnQsCi0gICAgICAgIC8vICAgICAgIGltcGxl
bWVudGF0aW9uIGFuZCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGRvZXMgbm90IGZvbGxvdyBh
bGwgdGhlIHJlY29tbWVuZGF0aW9ucyBvZiBBbGxvdyBQZXJzaXN0ZW50IERhdGEgdG8gQmUgQ2xl
YXJlZAotICAgICAgICAvLyAgICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUgSWRlbnRp
ZmllcihzKS4KLSAgICAgICAgLy8gTk9URTogYXNzdW1lIHRoYXQgaW1wbGVtZW50YXRpb25zIGZv
bGxvdyBhbGwgcmVjb21tZW5kYXRpb25zLgotCi0gICAgICAgIC8vICAgIOKGsyBUaGUgdXNlciBh
Z2VudCByZXF1aXJlcyBleHBsaWNpdCB1c2VyIGNvbnNlbnQgZm9yIHRoZSBhY2N1bXVsYXRlZCBj
b25maWd1cmF0aW9uIGZvciBvdGhlciByZWFzb25zLgotICAgICAgICAvLyBOT1RFOiBhc3N1bWUg
dGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCi0K
LSAgICAgICAgLy8gMy4xLiBSZXF1ZXN0IHVzZXIgY29uc2VudCB0byB1c2UgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbiBpbiB0aGUgb3JpZ2luIGFuZCB3YWl0IGZvciB0aGUgdXNlciByZXNwb25z
ZS4KLSAgICAgICAgLy8gICAgICBUaGUgY29uc2VudCBtdXN0IGluY2x1ZGUgY29uc2VudCB0byB1
c2UgYSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9vciBEaXN0aW5jdGl2ZSBQZXJtYW5l
bnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZQotICAgICAgICAvLyAgICAgIGlmIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIGlzICJy
ZXF1aXJlZCIuCi0gICAgICAgIC8vIDMuMi4gSWYgY29uc2VudCB3YXMgZGVuaWVkLCBydW4gdGhl
IGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgLy8gMy4yLjEuIFVwZGF0ZSByZXN0cmljdGlvbnMg
dG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHdoaWNoIGNvbnNlbnQgd2FzIGRlbmll
ZC4KLSAgICAgICAgLy8gMy4yLjEuIFJldHVybiBDb25zZW50RGVuaWVkIGFuZCByZXN0cmljdGlv
bnMuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSBpbXBsaWVkIGNvbnNlbnQgaWYgdGhlIGNvbWJp
bmF0aW9uIG9mIG9yaWdpbiBhbmQgdG9wT3JpZ2luIGFsbG93cyBpdC4KLSAgICAgICAgaWYgKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkICYmICFvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0
b3BPcmlnaW4pKSB7Ci0gICAgICAgICAgICByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlm
aWVyRGVuaWVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0dXM6OkNv
bnNlbnREZW5pZWQsIFdURk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RGTW92ZShy
ZXN0cmljdGlvbnMpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIDQuIElmIHRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIsIHJldHVybiBJbmZvcm1Vc2VyLgot
ICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
ciAhPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkgewotICAgICAgICAgICAgY2Fs
bGJhY2soQ29uc2VudFN0YXR1czo6SW5mb3JtVXNlciwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucykpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gNS4gSWYgdGhlIHVzZXIgYWdlbnQgcmVxdWlyZXMgaW5m
b3JtaW5nIHRoZSB1c2VyIGZvciB0aGUgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBmb3Igb3Ro
ZXIgcmVhc29ucywgcmV0dXJuIEluZm9ybVVzZXIuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSB0
aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZXF1aXJlIGluZm9ybWluZyB0aGUgdXNlci4KLQotICAg
ICAgICAvLyA2LiBSZXR1cm4gQWxsb3dlZC4KLSAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1
czo6QWxsb3dlZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJl
c3RyaWN0aW9ucykpOwotICAgIH0pOworICAgIENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vz
cyBhY2Nlc3MgPSBvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0b3BPcmlnaW4pID8gQ0RN
UHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpBbGxvd2VkIDogQ0RNUHJpdmF0ZTo6TG9jYWxT
dG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkOworICAgIG1fcHJpdmF0ZS0+Z2V0U3VwcG9ydGVkQ29u
ZmlndXJhdGlvbihXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBhY2Nlc3MsIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKQEAgLTYx
Miw3ICsxMjAsNyBAQCBib29sIENETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wg
Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5p
dERhdGFUeXBlKGluaXREYXRhVHlwZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZh
dGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggYWU5ODMyNWY2YWQx
MWZmNzlhYzZkMTc0YzZlZGFhOGJkNDVjOWQzMC4uZDU4Y2IwZmVlMzMzMWE4NWE4MjkzZGFmMWRm
N2MwYzQwYTEzY2RmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCkBAIC04MCwyOSArODAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENETShEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIAotICAgIGVudW0gY2xhc3MgQ29uZmln
dXJhdGlvblN0YXR1cyB7Ci0gICAgICAgIFN1cHBvcnRlZCwKLSAgICAgICAgTm90U3VwcG9ydGVk
LAotICAgICAgICBDb25zZW50RGVuaWVkLAotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIENvbnNl
bnRTdGF0dXMgewotICAgICAgICBDb25zZW50RGVuaWVkLAotICAgICAgICBJbmZvcm1Vc2VyLAot
ICAgICAgICBBbGxvd2VkLAotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIEF1ZGlvVmlkZW9UeXBl
IHsKLSAgICAgICAgQXVkaW8sCi0gICAgICAgIFZpZGVvLAotICAgIH07Ci0KLSAgICB2b2lkIGRv
U3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYg
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYsIFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKLSAgICBPcHRpb25hbDxNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24+ICBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJik7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmls
aXR5Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRl
b1R5cGUsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4mIHJlcXVl
c3RlZENhcGFiaWxpdGllcywgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0
aWFsQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJik7Ci0KLSAgICB1c2luZyBD
b25zZW50U3RhdHVzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ29uc2VudFN0YXR1cywg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYmKT47
Ci0gICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYm
IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYsIENvbnNl
bnRTdGF0dXNDYWxsYmFjayYmKTsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+IG1fcHJpdmF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5k
ZXggZGExOWJiZmYyYzdjZTgyYmVmYTgwMzVhZDc1NDJlM2U5ZjIyYTY5ZC4uMjlmYWI0OTkwNjgy
NTgzMmE1YWRkZDk5YTgwZThmMzRkOGQzMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDAx
LDcgKzQwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291
cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0
IHNlc3Npb24gY2xvc2VkIGJlIGZhbHNlLgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhl
IENETSBpbnN0YW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2
YWx1ZS4KICAgICAgICAgLy8gNi43LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dp
bmcgc3RlcHM6Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vz
c2lvbklkLCBtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29s
IHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRp
b24sIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9u
VHlwZSwgc2FuaXRpemVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wg
c2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3lzdGVtQWNjZXNzLmNwcAppbmRleCAzMGMzNGNkYzQ0ZWI4ZDY3Y2QyMjFlYzg5OWNjMGQ2YmEz
MTcyNGU4Li43ZWI3YjIwMjM1ZTE1YTU5MTAzYmIxOGEwM2VmM2ZhMTJiZDM3YzM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVt
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3lzdGVtQWNjZXNzLmNwcApAQCAtODEsMzQgKzgxLDI5IEBAIHZvaWQgTWVkaWFLZXlT
eXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiAgICAgICAgIH0KIAogICAgICAgICAvLyAyLjYuIEluaXRpYWxpemUgaW5zdGFuY2UgdG8g
ZW5hYmxlLCBkaXNhYmxlIGFuZC9vciBzZWxlY3QgS2V5IFN5c3RlbSBmZWF0dXJlcyB1c2luZyBj
b25maWd1cmF0aW9uLgotICAgICAgICBpZiAoaW5zdGFuY2UtPmluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbigqbV9jb25maWd1cmF0aW9uKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7Ci0gICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIDIuNy4gSWYgdXNlIGRpc3RpbmN0aXZlIGlk
ZW50aWZpZXIgaXMgZmFsc2UsIHByZXZlbnQgaW5zdGFuY2UgZnJvbSB1c2luZyBEaXN0aW5jdGl2
ZSBJZGVudGlmaWVyKHMpIGFuZCBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKS4K
LSAgICAgICAgaWYgKCF1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIgJiYgaW5zdGFuY2UtPnNldERp
c3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGZhbHNlKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVk
KSB7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIDIuOC4gSWYgcGVyc2lzdGVu
dCBzdGF0ZSBhbGxvd2VkIGlzIGZhbHNlLCBwcmV2ZW50IGluc3RhbmNlIGZyb20gcGVyc2lzdGlu
ZyBhbnkgc3RhdGUgcmVsYXRlZCB0byB0aGUgYXBwbGljYXRpb24gb3Igb3JpZ2luIG9mIHRoaXMg
b2JqZWN0J3MgRG9jdW1lbnQuCi0gICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlQWxsb3dlZCAm
JiBpbnN0YW5jZS0+c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChmYWxzZSkgPT0gQ0RNSW5zdGFu
Y2U6OkZhaWxlZCkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJv
cik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAyLjkuIElm
IGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBh
IG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFt
ZS4KLSAgICAgICAgLy8gMi4xMC4gTGV0IG1lZGlhIGtleXMgYmUgYSBuZXcgTWVkaWFLZXlzIG9i
amVjdCwgYW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKLSAgICAgICAgLy8gMi4xMC4xLiBM
ZXQgdGhlIHVzZSBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHZhbHVlIGJlIHVzZSBkaXN0aW5jdGl2
ZSBpZGVudGlmaWVyLgotICAgICAgICAvLyAyLjEwLjIuIExldCB0aGUgcGVyc2lzdGVudCBzdGF0
ZSBhbGxvd2VkIHZhbHVlIGJlIHBlcnNpc3RlbnQgc3RhdGUgYWxsb3dlZC4KLSAgICAgICAgLy8g
Mi4xMC4zLiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJlIHRoZSB2
YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KLSAgICAgICAgLy8g
Mi4xMC40LiBMZXQgdGhlIGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBiZSB0aGlzIG9iamVjdCdz
IGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZS4KLSAgICAgICAgLy8gMi4xMC41LiBMZXQgdGhlIGNk
bSBpbnN0YW5jZSB2YWx1ZSBiZSBpbnN0YW5jZS4KLSAgICAgICAgYXV0byBtZWRpYUtleXMgPSBN
ZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQsIG1fY29uZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBtX2ltcGxlbWVudGF0aW9u
LmNvcHlSZWYoKSwgaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0KLSAgICAgICAgLy8gMi4x
MS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KLSAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1lZGlhS2V5cz4+KFdURk1vdmUobWVk
aWFLZXlzKSk7CisgICAgICAgIGF1dG8gYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzID0gdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyID8gQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVu
dGlmaWVyczo6WWVzIDogQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVyczo6
Tm87CisgICAgICAgIGF1dG8gYWxsb3dQZXJzaXN0ZW50U3RhdGUgPSBwZXJzaXN0ZW50U3RhdGVB
bGxvd2VkID8gQ0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOjpZZXMgOiBDRE1JbnN0
YW5jZTo6QWxsb3dQZXJzaXN0ZW50U3RhdGU6Ok5vOworCisgICAgICAgIGluc3RhbmNlLT5pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oKm1fY29uZmlndXJhdGlvbiwgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgW3Nlc3Npb25UeXBlcyA9IG1fY29u
ZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBpbXBsZW1lbnRhdGlvbiA9IG1faW1wbGVtZW50YXRp
b24uY29weVJlZigpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQsIGluc3RhbmNlID0gaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChhdXRvIHN1Y2Nlc3NWYWx1ZSkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoc3VjY2Vzc1ZhbHVlID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIDIuOS4gSWYgYW55IG9mIHRo
ZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4
Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgorICAgICAg
ICAgICAgLy8gMi4xMC4gTGV0IG1lZGlhIGtleXMgYmUgYSBuZXcgTWVkaWFLZXlzIG9iamVjdCwg
YW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgIC8vIDIuMTAuMS4gTGV0
IHRoZSB1c2UgZGlzdGluY3RpdmUgaWRlbnRpZmllciB2YWx1ZSBiZSB1c2UgZGlzdGluY3RpdmUg
aWRlbnRpZmllci4KKyAgICAgICAgICAgIC8vIDIuMTAuMi4gTGV0IHRoZSBwZXJzaXN0ZW50IHN0
YXRlIGFsbG93ZWQgdmFsdWUgYmUgcGVyc2lzdGVudCBzdGF0ZSBhbGxvd2VkLgorICAgICAgICAg
ICAgLy8gMi4xMC4zLiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJl
IHRoZSB2YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KKyAgICAg
ICAgICAgIC8vIDIuMTAuNC4gTGV0IHRoZSBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgYmUgdGhp
cyBvYmplY3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUuCisgICAgICAgICAgICAvLyAyLjEw
LjUuIExldCB0aGUgY2RtIGluc3RhbmNlIHZhbHVlIGJlIGluc3RhbmNlLgorICAgICAgICAgICAg
YXV0byBtZWRpYUtleXMgPSBNZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIHNlc3Npb25UeXBlcywgV1RGTW92ZShpbXBsZW1l
bnRhdGlvbiksIFdURk1vdmUoaW5zdGFuY2UpKTsKKworICAgICAgICAgICAgLy8gMi4xMS4gUmVz
b2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KKyAgICAgICAgICAgIHByb21pc2UtPnJlc29s
dmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxNZWRpYUtleXM+PihXVEZNb3ZlKG1lZGlh
S2V5cykpOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIC8vIDMuIFJldHVybiBwcm9taXNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwCmluZGV4IGM2MjRlNTMyOWU1OTY4ODJmMGQ0MWY1NzQ1ODg1ZmMyM2QzOWE2ZTQuLjE4
N2Q1OWRlZjM0MDU1ZjhjYzVjZDU5YmQ3ZjBhYTc1YTVlOTY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IE1lZGlhS2V5czo6Y3Jl
YXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0K
IAotdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5cy1zZXRzZXJ2ZXJjZXJ0aWZpY2F0ZQogICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CkBAIC0xMDYsMTYgKzEwNiwx
NCBAQCB2b2lkIE1lZGlhS2V5czo6c2V0U2VydmVyQ2VydGlmaWNhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgQnVmZgogICAgIC8vIDQuIExldCBwcm9taXNlIGJlIGEg
bmV3IHByb21pc2UuCiAgICAgLy8gNS4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxs
ZWw6CiAKLSAgICBjb250ZXh0LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgY2VydGlmaWNhdGUgPSBXVEZNb3ZlKGNlcnRpZmljYXRlKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgewotICAgICAgICAvLyA1LjEuIFVzZSB0
aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB0byBwcm9jZXNzIGNlcnRpZmljYXRlLgotICAgICAg
ICBpZiAobV9pbnN0YW5jZS0+c2V0U2VydmVyQ2VydGlmaWNhdGUoV1RGTW92ZShjZXJ0aWZpY2F0
ZSkpID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgIC8vIDUuMi4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhj
ZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCisgICAgLy8g
NS4xLiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZpY2F0
ZS4KKyAgICBtX2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmlj
YXRlKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byBzdWNjZXNzKSB7CisgICAg
ICAgIC8vIDUuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNl
IHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVy
cm9yIG5hbWUuCisgICAgICAgIC8vIDUuMS4gW0Vsc2UsXSBSZXNvbHZlIHByb21pc2Ugd2l0aCB0
cnVlLgorICAgICAgICBpZiAoc3VjY2VzcyA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKQogICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDUuMS4gUmVzb2x2ZSBwcm9taXNlIHdpdGgg
dHJ1ZS4KLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsK
ICAgICB9KTsKIAogICAgIC8vIDYuIFJldHVybiBwcm9taXNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggMWUyZTFhMjc3MTM0
MGU2ZGYxZTBhOThhNTQyY2NkNWY4MmFlMjhkZi4uYjZiNzJhMjcyMjIyYjVjOWJkYzIyNTQwNjZi
ZThkZTI5MWJhNjg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB+TWVkaWFL
ZXlzKCk7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9uPj4gY3JlYXRlU2Vz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFLZXlTZXNzaW9uVHlwZSk7Ci0gICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
QnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
KTsKIAogICAgIHZvaWQgYXR0YWNoQ0RNQ2xpZW50KENETUNsaWVudCYpOwogICAgIHZvaWQgZGV0
YWNoQ0RNQ2xpZW50KENETUNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCmluZGV4IGQ2ZjA0Y2RkYmU1MGQzMTQ4Mzk1
ZjY1ZWM2YmY5MDU3ZmZiZjRkY2UuLmRiMWIwNTM0M2JjMjEzOGM5YjZiYzUyMjVmNzkyOTczMzZm
ZGIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5pZGwKQEAgLTMzLDUgKzMzLDUgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgTWVkaWFLZXlzIHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVT
ZXNzaW9uKG9wdGlvbmFsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUgPSAidGVtcG9y
YXJ5Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8Ym9v
bD4gc2V0U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNlcnZlckNlcnRpZmljYXRlKTsK
KyAgICBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2
ZXJDZXJ0aWZpY2F0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZjQ1YzUxOTcxNWI1YmY4OGEz
MTEzMjMxNzlmYzNhNGJlNmVhYjA2Li5iNThhODFhYWMzZjQ0YWZiZjJkMmQ5YjRhNWFmYjg1MDM2
N2Q3YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTgyMyw2ICsxODIzLDcgQEAgcGxhdGZvcm0vYXVk
aW8vVmVjdG9yTWF0aC5jcHAKIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcAogCiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAorcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5jcHAKIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAogCiBw
bGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5N2UwMGRiMDNhZDBk
NWI0N2NmMmI0YWE4MTQyMjYyYTIwMmRhMWMyLi5iMzE2OTliYWI2OTkzMTk2YTI2ODBkNDE1OTRh
ODFhYjk0MTY0ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC00MDY2LDYgKzQwNjYsMTkgQEAKIAkJQ0QzQTQ5NUYxN0E5RDAx
QjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1NjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2Uu
aCAqLzsgfTsKIAkJQ0QzQTQ5NjIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5
RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFC
MDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlckxpc3QuaCAqLzsgfTsKKwkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJBMDFEIC8qIENETUVuY3J5
cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERjc1NjlCMjE1QzIzQTQwMEVGQ0I1MCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRjky
NDAxQUFEOTAwNEJBMDFEIC8qIENETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQyMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0
b3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QzQ0UwRkEyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUg
LyogQ0RNSW5zdGFuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlDRDNDRTBGQjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VTZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlEMzc1
QTIxNTE2M0U0MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJB
MDFEIC8qIENETUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZE
MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRDFGNzFDQjY5MDBG
NTI1QzUgLyogQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZFMjQwMUFBRDkwMDRCQTAxRCAv
KiBDRE1NZWRpYUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEOTRBNUQzMUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNhcGFiaWxp
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
RDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ2MUY3MUNCNkQwMEY1MjVD
NSAvKiBDRE1NZXNzYWdlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFG
NzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Q
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5
NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1IC8qIENETVByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDIyNDAxQUFEQTAwNEJBMDFEIC8q
IENETVJlcXVpcmVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVxdWlyZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMzI0
MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEMDFGNzFDQjZCMDBGNTI1QzUgLyogQ0RN
UmVzdHJpY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQ0QzQ0UxMDQyNDAxQUFEQTAwNEJBMDFEIC8qIENETVNlc3Npb25UeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVENTFGNzFD
QjZEMDBGNTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1h
Z2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QzRTIxREIyMTgzM0Y1MTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0
aWVzQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRDNFMjUxQzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAv
KiBHcmlkQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNEM0UyNTI0MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNF
MjUyMjE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oICovOyB9
OwpAQCAtNDE5Nyw3ICs0MjEwLDcgQEAKIAkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1v
Y2tUcmFja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERjJCMDBGMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggKi87IH07CiAJCUNERjRC
NzEyMUUwMDg3QUUwMEUyMzVBMiAvKiBMZWdhY3lDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEg
LyogTGVnYWN5Q0RNU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTMxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5jcHAgKi87IH07Ci0JCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAv
KiBDRE0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RjRCNzE0MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCAqLzsgfTsKKwkJQ0RGNEI3MTYxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjRCNzE4MUUwMUNCOTEwMEUy
MzVBMiAvKiBNZWRpYUtleXNSZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE3MUUwMUNCOTEwMEUyMzVBMiAvKiBNZWRpYUtl
eXNSZXN0cmljdGlvbnMuaCAqLzsgfTsKIAkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1l
ZGlhS2V5U2Vzc2lvblR5cGUuaWRsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RGNEI3MTkxRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5
cGUuaWRsICovOyB9OwogCQlDREY0QjcxRTFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNl
c3Npb25UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREY0QjcxQzFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBlLmggKi87
IH07CkBAIC0xMzc3MCw2ICsxMzc4Myw3IEBACiAJCUNEM0E0OTVCMTdBOUQwMUIwMDI3NEU0MiAv
KiBTb3VyY2VCdWZmZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNvdXJjZUJ1ZmZlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEM0E0OTVEMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJM
aXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VCdWZmZXJMaXN0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzQ0UxMUMyNDA0NTFBRjAwNEJBMDFEIC8qIENE
TVByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNUHJpdmF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyMURCMjE4MzNGNTEwMEU2NkY1NSAvKiBJbWFnZUJ1
ZmZlclV0aWxpdGllc0NHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2
IC8qIEdyaWRBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyaWRBcmVh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyNTIxMTgwNDZCQ0QwMEUyN0Y1
NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjYyOTAsNiArMjYzMDQsNyBAQAogCQkJCUNEOTRBNUNEMUY3
MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi8sCiAJCQkJQ0Q5
NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICovLAogCQkJCUNE
OTRBNUQ2MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1NZXNzYWdlVHlwZS5oICovLAorCQkJCUNEM0NF
MTFDMjQwNDUxQUYwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmNwcCAqLywKIAkJCQlDRDk0QTVDRjFG
NzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovLAogCQkJCUNEOTRBNUNGMUY3MUNCNjEw
MEY1MjVENSAvKiBDRE1Qcm94eS5jcHAgKi8sCiAJCQkJQ0Q5NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1
IC8qIENETVByb3h5LmggKi8sCkBAIC0yOTI2Niw5ICsyOTI4MSwyMiBAQAogCQkJCTY1NTBCNjlF
MDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOTRB
NURFMUY3MkY1N0IwMEY1MjVDNSAvKiBDRE1DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
M0NFMEY4MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRDNDRTBGOTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RCNzA0NUExRjc0NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQbGF5U3Ry
ZWFtaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGQTI0MDFBQUQ5MDA0QkEwMUQgLyog
Q0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAx
RCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZDMjQw
MUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NF
MEZEMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmls
aXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RN
TWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAx
RCAvKiBDRE1Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMxODYyMzE5OUYxRTJBMDAz
MEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByb3h5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVxdWlyZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEM0NFMTAzMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1SZXN0cmljdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwNDI0MDFB
QURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVGQTkw
NENBMTc4RTYxRjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTkxQjhGMEI1MjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZUluZm9CYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggOTY5YzUwZDgzMDYxOGE4NzQ5NWI1ZGQxMjkwM2RjNjNlYTQ4YzU3MC4uMjE1
ODQ5YWI5YzgwM2QwMWQzYTMzNjQyNzdlZmQ4MjJmNmM0Mzk2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNTYxLDE1ICsyNTYxLDI1IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0
ZSkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRp
bnVlQWZ0ZXJOZWVkS2V5KCkKK3sKKyAgICBpZiAoIW1fcGxheWVyKQorICAgICAgICByZXR1cm47
CisgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVk
a2V5IikgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZW5jcnlw
dGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRvY3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2VuRW5j
cnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmsoKSk7CisgICAgbV9wbGF5ZXItPnNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkQ29udGludWUpOworfQorI2VuZGlmCisKIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYktpdE1l
ZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBu
dWxscHRyOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFi
bGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKQEAgLTI1ODAsMTQgKzI1OTAsMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgKSB7CiAg
ICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJS
X0VOQ1JZUFRFRCk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZl
bnQpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVu
dCkpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAtNTEyOSw2ICs1
MTM3LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKCkK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRl
TWVkaWFTdGF0ZSgpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB1cGRhdGVTaG91bGRDb250aW51ZUFm
dGVyTmVlZEtleSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJFbmdpbmVVcGRhdGVkKCkKQEAgLTU4OTEsNiArNTkwMywxMSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogCiBib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMm
IG9wdGlvbnMpCiB7CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Vi
a2l0bmVlZGtleUV2ZW50KQorICAgICAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtl
eSgpOworI2VuZGlmCisKICAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRw
bGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9u
cyk7CiAKQEAgLTU5MTIsNiArNTkyOSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaQogCiBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRp
b25zJiBvcHRpb25zKQogeworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
LndlYmtpdG5lZWRrZXlFdmVudCkKKyAgICAgICAgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5l
ZWRLZXkoKTsKKyNlbmRpZgorCiAgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Vi
a2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVy
biBOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDVkZTBkMTExODUx
YWM3ZmE4YzNlOTVkYjZlZWQ5YWYzMWNmNTE1OGQuLmY2OTIwZjY1NDc2ZjI4ZDdlN2IxOTRlNTkx
ZTJjNTk1MmY0NGU5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC02ODAsNyArNjgwLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlhUGxh
eWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5
TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApAQCAtNjk0LDYgKzY5
NCwxMCBAQCBwcml2YXRlOgogICAgIC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0
ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCisKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICB2b2lkIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKICAg
ICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgbWVkaWFQ
bGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29sKSBmaW5hbDsK
QEAgLTExNjYsNiArMTE3MCw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFQcm92aWRlciBtX21lZGlh
UHJvdmlkZXI7CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBib29s
IG1faGFzTmVlZGtleUxpc3RlbmVyIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFL
ZXlzPiBtX3dlYktpdE1lZGlhS2V5czsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVN0cmF0ZWd5LmgKaW5kZXggNWVkMDRjNGNjOGU4ZWNjODQ0OGZlMDUzYTRiNjZiYzY3YTgx
MTdkZC4uNjBhNTg0N2M4Y2VjMTBiNzliNzQ5YTZmYWY4NTAzZDE2YTE5OWI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBBdWRpb0lPQ2Fs
bGJhY2s7CitjbGFzcyBDRE1GYWN0b3J5OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVN0
cmF0ZWd5IHsKIHB1YmxpYzoKQEAgLTM4LDYgKzM5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24o
CiAgICAgICAgIEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSA9IDA7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8
Q0RNRmFjdG9yeSo+JikgPSAwOworI2VuZGlmCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TWVk
aWFTdHJhdGVneSgpID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKaW5kZXgg
NzRiM2FhN2Q3YmRiMDBhMjY3NTZhMDIzNjU2NmYzNjg4MTJiY2UzYi4uMWE3YTU2MjdkYmNhNjQx
YjQ5Y2U3ZTU2ZTY3MTZlMzE4YTk4OGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaApAQCAt
MjcsMTMgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENE
TUVuY3J5cHRpb25TY2hlbWUgeworZW51bSBjbGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIDogdWlu
dDhfdCB7CiAgICAgY2VuYywKICAgICBjYmNzLAogfTsKIAogfQogCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2No
ZW1lPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNRW5jcnlwdGlvblNjaGVtZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVt
ZTo6Y2VuYywKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2JjcworICAg
ID47Cit9OworCit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAppbmRleCA0YmI1OTlmYTgwNzNkM2I4NTVk
ODQ2MTc4NjE5ZGJjMDI2MTA1OGYyLi45OTJkNDlhZWVlZTVhNWYxZjQxMjVlNmYwYjMyMjI3Njkw
MjIxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmNwcApAQCAtMzAsNiArMzAsOCBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MCw3ICs0Miw5IEBAIFZl
Y3RvcjxDRE1GYWN0b3J5Kj4mIENETUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8Q0RNRmFjdG9yeSo+PiBmYWN0b3JpZXM7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25j
ZSwgWyZdIHsgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOyB9KTsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlLCBbJl0geworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bWVkaWFTdHJhdGVneSgpLnJlZ2lzdGVyQ0RNRmFjdG9yaWVzKGZhY3Rvcmllcyk7CisgICAgfSk7
CiAKICAgICByZXR1cm4gZmFjdG9yaWVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDQ0ZWFhYjA3ZTc1N2FmZTU4
YjUzNjFmNWFmMTJiMjQ3NzZhMDM1MmUuLjUyNWM4NGVjYmU3OTFmNDBiNTQ3ZmI3ZmFmZGU5ZDAz
YmE4MTBiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgLy8gUGxh
dGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdGhhdCdzIGNhbGxlZCB3aGVuIHRoZSBsaXN0IG9mCiAg
ICAgLy8gcmVnaXN0ZXJlZCBDRE1GYWN0b3J5IG9iamVjdHMgaXMgcXVlcmllZCBmb3IgdGhlIGZp
cnN0IHRpbWUuCi0gICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0
b3I8Q0RNRmFjdG9yeSo+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGxhdGZv
cm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+Jik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCA4ZjlmM2ViODc0NWMzNTIwMjgzMTRjNjA2ZDI4
OWQ0ZTNmNzFhMDQ4Li43MzRjOTM1MDc1NmQ3OWY3NGQ5MDY1ZTI0MDFjMmVlOGFiYzEzMDc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDRE1NZXNzYWdlVHlwZS5oIgog
I2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CkBAIC01MiwyMyArNTMsMzMgQEAgcHVibGljOgogICAgICAgICBNb2NrLAogICAgICAg
ICBDbGVhcktleSwKICAgICAgICAgRmFpclBsYXlTdHJlYW1pbmcsCisgICAgICAgIFJlbW90ZSwK
ICAgICB9OwogICAgIHZpcnR1YWwgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlw
ZSgpIGNvbnN0ID0gMDsKIAotICAgIGVudW0gU3VjY2Vzc1ZhbHVlIHsKKyAgICBlbnVtIFN1Y2Nl
c3NWYWx1ZSA6IGJvb2wgewogICAgICAgICBGYWlsZWQsCiAgICAgICAgIFN1Y2NlZWRlZCwKICAg
ICB9OworICAgIHVzaW5nIFN1Y2Nlc3NDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3VjY2Vzc1ZhbHVlKT47CiAKLSAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChi
b29sKSA9IDA7Ci0gICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxs
b3dlZChib29sKSA9IDA7Ci0gICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwotICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVl
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgPSAwOworICAgIGVudW0gY2xhc3Mg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAg
ICBZZXMsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQWxsb3dQZXJzaXN0ZW50U3RhdGUgOiBi
b29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcywKKyAgICB9OworCisgICAgdmlydHVhbCB2
b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CiAKLSAg
ICBlbnVtIGNsYXNzIEhEQ1BTdGF0dXMgeworICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyA6IHVp
bnQ4X3QgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWYWxpZCwKICAgICAgICAgT3V0cHV0
UmVzdHJpY3RlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggODcyNWEzMWQ4YmIzZTIyYmUy
MWRmMDdlMzIwYjM2ZTc1MDM4NmUxYS4uZDQ2NGI3NGQxYzcyMDJhOWEzMzlkZmY2NWQwNmUwODIw
ODk2OWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTcyLDkgKzcyLDkgQEAgcHVibGlj
OgogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6
S2V5U3RhdHVzVmVjdG9yOwogICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8
S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdl
ZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKLSAgICBlbnVtIGNs
YXNzIFNlc3Npb25Mb2FkRmFpbHVyZSB7CisgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1
cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKICAgICAgICAgTm9TZXNzaW9uRGF0YSwKICAg
ICAgICAgTWlzbWF0Y2hlZFNlc3Npb25UeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAppbmRleCBhZDk2OTYyMzYwNGNk
MTQ3MDU1YTI3YjczMzZmNjc3YzBiM2FmMmM0Li5jYzVlNzE4NmY3NGVmOGU4MTRjYjNhZjc1NWUx
NjFhNjVjMjA4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNS2V5U3RhdHVzIHsKK2VudW0gY2xhc3MgQ0RN
S2V5U3RhdHVzIDogdWludDhfdCB7CiAgICAgVXNhYmxlLAogICAgIEV4cGlyZWQsCiAgICAgUmVs
ZWFzZWQsCkBAIC00NCw0ICs0NiwyMCBAQCBlbnVtIGNsYXNzIENETUtleVN0YXR1cyB7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXMsCisgICAgV2ViQ29yZTo6
Q0RNS2V5U3RhdHVzOjpVc2FibGUsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpFeHBpcmVk
LAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6UmVsZWFzZWQsCisgICAgV2ViQ29yZTo6Q0RN
S2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6
T3V0cHV0RG93bnNjYWxlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlN0YXR1c1BlbmRp
bmcsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yCisgICAgPjsKK307
CisKK30KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDYxMmQ2NDVmYWE1MjQ4ZjcxZjFjMTU2N2Y0NTA3ZTg5
ZjNiMzFjZTUuLjg1MjU4N2NlZGEwNTEyMTQ0Nzk1MjJmYWMzOGU0YzBmYjk4NzQ5ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTQ4LDYgKzQ4LDY3IEBAIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIHsKICAgICBDRE1SZXF1aXJlbWVudCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXIgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBDRE1SZXF1
aXJlbWVudCBwZXJzaXN0ZW50U3RhdGUgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAg
ICBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+IHNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CisgICAgICAgIGVuY29kZXIgPDwgaW5pdERh
dGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAg
ZW5jb2RlciA8PCB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlOworICAg
ICAgICBlbmNvZGVyIDw8IHNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGxhYmVsOworICAgICAgICBkZWNvZGVyID4+IGxhYmVsOworICAgICAgICBpZiAoIWxhYmVs
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0
YVR5cGVzOworICAgICAgICBpZiAoIWluaXREYXRhVHlwZXMpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxp
dHk+PiBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgZGVjb2RlciA+PiBhdWRpb0NhcGFiaWxp
dGllczsKKyAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJp
bGl0eT4+IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAgICBkZWNvZGVyID4+IHZpZGVvQ2FwYWJp
bGl0aWVzOworICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4gZGlz
dGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRlbnRp
ZmllcjsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXIpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAKKyAgICAgICAgT3B0aW9uYWw8Q0RNUmVxdWly
ZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3Rh
dGU7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+PiBz
ZXNzaW9uVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc2Vzc2lvblR5cGVzOworICAgICAgICBp
ZiAoIXNlc3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCisgICAgICAgICAg
ICBXVEZNb3ZlKCppbml0RGF0YVR5cGVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmF1ZGlvQ2Fw
YWJpbGl0aWVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnZpZGVvQ2FwYWJpbGl0aWVzKSwKKyAg
ICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAqcGVyc2lzdGVu
dFN0YXRlLAorICAgICAgICAgICAgV1RGTW92ZSgqc2Vzc2lvblR5cGVzKSwKKyAgICAgICAgfX07
CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHku
aAppbmRleCA5MDFiNTRmZjA1MDhlZGE5YmJiODhjNWMxZGI4NjUzOGRjZTE0MjgyLi5mODRhMGQx
MmFiNGNkNTIwZTNmMGUwNGQ2NGViZWZjNjMxNjI1ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHku
aApAQCAtMzksNiArMzksMzkgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAgU3Ry
aW5nIGNvbnRlbnRUeXBlOwogICAgIFN0cmluZyByb2J1c3RuZXNzOwogICAgIE9wdGlvbmFsPENE
TUVuY3J5cHRpb25TY2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAg
eworICAgICAgICBlbmNvZGVyIDw8IGNvbnRlbnRUeXBlOworICAgICAgICBlbmNvZGVyIDw8IHJv
YnVzdG5lc3M7CisgICAgICAgIGVuY29kZXIgPDwgZW5jcnlwdGlvblNjaGVtZTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNTWVk
aWFDYXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVudFR5
cGU7CisgICAgICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcm9idXN0bmVzczsKKyAgICAgICAg
ZGVjb2RlciA+PiByb2J1c3RuZXNzOworICAgICAgICBpZiAoIXJvYnVzdG5lc3MpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPENE
TUVuY3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBkZWNvZGVyID4+
IGVuY3J5cHRpb25TY2hlbWU7CisgICAgICAgIGlmICghZW5jcnlwdGlvblNjaGVtZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAg
ICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCisgICAgICAgICAgICBXVEZNb3ZlKCpyb2J1c3Ru
ZXNzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmVuY3J5cHRpb25TY2hlbWUpLAorICAgICAgICB9
fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaAppbmRl
eCBlNWY3OTZhOWUwZTA3NTFhYTAyNzgyYjliNjY2Y2EyMzFlZjdlNjA5Li45NWJmMjhjMmFhOTRh
M2RhNTA0NWI1ZWMwMGYzNThjZDI2ZDk1Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKQEAgLTMwLDkgKzMw
LDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETU1lc3NhZ2VU
eXBlIHsKK2VudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBMaWNlbnNl
UmVxdWVzdCwKICAgICBMaWNlbnNlUmVuZXdhbCwKICAgICBMaWNlbnNlUmVsZWFzZSwKQEAgLTQx
LDQgKzQzLDE4IEBAIGVudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgewogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsCisgICAgICAgIFdlYkNvcmU6
OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVz
c2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZTo6TGljZW5zZVJlbGVhc2UsCisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpJbmRp
dmlkdWFsaXphdGlvblJlcXVlc3QKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY0YmE0OWU0MDYwYWZkNzll
OGMyMDIwNDEyOGQ3YzQ0YjlhYmY1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCkBAIC0wLDAgKzEsNTIwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNETVByaXZhdGUu
aCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiQ0RNTWVkaWFDYXBhYmlsaXR5LmgiCisjaW5j
bHVkZSAiQ0RNUmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlICJDRE1SZXN0cmljdGlvbnMuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NETVByaXZhdGU6OkNETVByaXZhdGUoKSA9IGRlZmF1bHQ7
CitDRE1Qcml2YXRlOjp+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKKwordm9pZCBDRE1Qcml2YXRl
OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBj
YW5kaWRhdGVDb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0
ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRpb24K
KyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gMy4x
LjEuMSBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24KKyAgICAvLyBHaXZlbiBhIEtleSBTeXN0
ZW1zIGltcGxlbWVudGF0aW9uIGltcGxlbWVudGF0aW9uLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLCBhbmQgb3JpZ2luLAorICAgIC8vIHRoaXMgYWxn
b3JpdGhtIHJldHVybnMgYSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBvciBOb3RTdXBwb3J0ZWQg
YXMgYXBwcm9wcmlhdGUuCisKKyAgICAvLyAxLiBMZXQgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24g
YmUgQ29uc2VudERlbmllZC4KKyAgICAvLyAyLiBJbml0aWFsaXplIHJlc3RyaWN0aW9ucyB0byBp
bmRpY2F0ZSB0aGF0IG5vIGNvbmZpZ3VyYXRpb25zIGhhdmUgaGFkIHVzZXIgY29uc2VudCBkZW5p
ZWQuCisgICAgQ0RNUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyB7IH07CisgICAgZG9TdXBwb3J0
ZWRDb25maWd1cmF0aW9uU3RlcChXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBXVEZN
b3ZlKHJlc3RyaWN0aW9ucyksIGFjY2VzcywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lk
IENETVByaXZhdGU6OmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJl
c3RyaWN0aW9ucywgTG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgU3VwcG9ydGVkQ29uZmlndXJh
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uCisgICAgLy8gVzND
IEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYsIGN0ZC4KKworICAgIC8vIDMuMS4xLjEg
R2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uCisgICAgLy8gMy4gUmVwZWF0IHRoZSBmb2xsb3dp
bmcgc3RlcCB3aGlsZSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBpcyBDb25zZW50RGVuaWVkOgor
ICAgIC8vIDMuMS4gTGV0IHN1cHBvcnRlZCBjb25maWd1cmF0aW9uIGFuZCwgaWYgcHJvdmlkZWQs
IHJlc3RyaWN0aW9ucyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUKKyAgICAvLyBHZXQg
U3VwcG9ydGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNlbnQgYWxnb3JpdGhtIHdpdGggaW1wbGVt
ZW50YXRpb24sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLAorICAgIC8vIHJlc3RyaWN0aW9ucyBh
bmQgb3JpZ2luLgorICAgIGF1dG8gb3B0aW9uYWxDb25maWd1cmF0aW9uID0gZ2V0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbihjYW5kaWRhdGVDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMsIGFjY2Vz
cyk7CisgICAgaWYgKCFvcHRpb25hbENvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29uc2Vu
dENhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBhY2Nlc3NdIChDb25zZW50U3RhdHVzIHN0YXR1cywgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJlc3Ry
aWN0aW9ucykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgLy8gMy4xLjEuMiBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNl
bnQsIGN0ZC4KKyAgICAgICAgLy8gMjIuIExldCBjb25zZW50IHN0YXR1cyBhbmQgdXBkYXRlZCBy
ZXN0cmljdGlvbnMgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBHZXQgQ29uc2VudCBTdGF0
dXMgYWxnb3JpdGhtIG9uIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sCisgICAgICAgIC8vICAg
ICByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiBhbmQgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIHZh
bHVlIG9mIGNvbnNlbnQgc3RhdHVzIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgICAgICBz
d2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5p
ZWQ6CisgICAgICAgICAgICAvLyDihrMgQ29uc2VudERlbmllZDoKKyAgICAgICAgICAgIC8vICAg
IFJldHVybiBDb25zZW50RGVuaWVkIGFuZCB1cGRhdGVkIHJlc3RyaWN0aW9ucy4KKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5kb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25TdGVwKFdURk1vdmUoY29uZmln
dXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBDb25zZW50U3RhdHVzOjpJ
bmZvcm1Vc2VyOgorICAgICAgICAgICAgLy8g4oazIEluZm9ybVVzZXIKKyAgICAgICAgICAgIC8v
ICAgIEluZm9ybSB0aGUgdXNlciB0aGF0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgaW4g
dXNlIGluIHRoZSBvcmlnaW4gaW5jbHVkaW5nLCBzcGVjaWZpY2FsbHksIHRoZSBpbmZvcm1hdGlv
biB0aGF0CisgICAgICAgICAgICAvLyAgICBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9v
ciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZSB3aWxs
IGJlIHVzZWQgaWYgdGhlCisgICAgICAgICAgICAvLyAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXIg
bWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgInJlcXVpcmVkIi4gQ29udGlu
dWUgdG8gdGhlIG5leHQgc3RlcC4KKyAgICAgICAgICAgIC8vIE5PVEU6IEltcGxlbWVudC4KKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6QWxsb3dlZDoK
KyAgICAgICAgICAgIC8vIOKGsyBBbGxvd2VkOgorICAgICAgICAgICAgLy8gQ29udGludWUgdG8g
dGhlIG5leHQgc3RlcC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8v
IDIzLiBSZXR1cm4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgfTsKKyAgICBnZXRDb25zZW50U3RhdHVzKFdU
Rk1vdmUob3B0aW9uYWxDb25maWd1cmF0aW9uLnZhbHVlKCkpLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cyksIGFjY2VzcywgV1RGTW92ZShjb25zZW50Q2FsbGJhY2spKTsKK30KKworYm9vbCBDRE1Qcml2
YXRlOjppc1BlcnNpc3RlbnRUeXBlKENETVNlc3Npb25UeXBlIHNlc3Npb25UeXBlKQoreworICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2lzLXBlcnNpc3RlbnQt
c2Vzc2lvbi10eXBlCisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYK
KworICAgIC8vIDUuMS4xLiBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8KKyAgICAvLyAxLiBM
ZXQgdGhlIHNlc3Npb24gdHlwZSBiZSB0aGUgc3BlY2lmaWVkIENETVNlc3Npb25UeXBlIHZhbHVl
LgorICAgIC8vIDIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSB2YWx1ZSBvZiBzZXNzaW9uIHR5
cGUgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgc3dpdGNoIChzZXNzaW9uVHlwZSkgewor
ICAgIGNhc2UgQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeToKKyAgICAgICAgLy8g4oazICJ0ZW1w
b3JhcnkiCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQ
ZXJzaXN0ZW50TGljZW5zZToKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNh
Z2VSZWNvcmQ6CisgICAgICAgIC8vIOKGsyAicGVyc2lzdGVudC1saWNlbnNlIgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETVBy
aXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmlj
dGlvbnMsIExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MpCit7CisgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFu
ZC1jb25zZW50CisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKwor
ICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50Cisg
ICAgLy8gR2l2ZW4gYSBLZXkgU3lzdGVtcyBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbiwg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwKKyAgICAv
LyByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiwgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBv
cnRlZCBjb25maWd1cmF0aW9uLCBOb3RTdXBwb3J0ZWQsIG9yIENvbnNlbnREZW5pZWQKKyAgICAv
LyBhcyBhcHByb3ByaWF0ZSBhbmQsIGluIHRoZSBDb25zZW50RGVuaWVkIGNhc2UsIHJlc3RyaWN0
aW9ucy4KKworICAgIC8vIDEuIExldCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGJlIGEgbmV3
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gZGljdGlvbmFyeS4KKyAgICBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiB7IH07CisKKyAgICAvLyAyLiBT
ZXQgdGhlIGxhYmVsIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFs
IHRoZSBsYWJlbCBtZW1iZXIgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24uCisgICAgYWNjdW11
bGF0ZWRDb25maWd1cmF0aW9uLmxhYmVsID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5sYWJlbDsK
KworICAgIC8vIDMuIElmIHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBjYW5kaWRhdGUgY29u
ZmlndXJhdGlvbiBpcyBub24tZW1wdHksIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIGlm
ICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLmlzRW1wdHkoKSkgeworICAg
ICAgICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgdHlwZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2Yg
RE9NU3RyaW5ncy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkVHlwZXM7CisKKyAg
ICAgICAgLy8gMy4yLiBGb3IgZWFjaCB2YWx1ZSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidz
IGluaXREYXRhVHlwZXMgbWVtYmVyOgorICAgICAgICBmb3IgKGF1dG8gaW5pdERhdGFUeXBlIDog
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKSB7CisgICAgICAgICAgICAvLyAz
LjIuMS4gTGV0IGluaXREYXRhVHlwZSBiZSB0aGUgdmFsdWUuCisgICAgICAgICAgICAvLyAzLjIu
Mi4gSWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGdlbmVyYXRpbmcgcmVxdWVzdHMgYmFz
ZWQgb24gaW5pdERhdGFUeXBlLCBhZGQgaW5pdERhdGFUeXBlCisgICAgICAgICAgICAvLyAgICAg
ICAgdG8gc3VwcG9ydGVkIHR5cGVzLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2
ZS4gVGhlIGVtcHR5IHN0cmluZyBpcyBuZXZlciBzdXBwb3J0ZWQuCisgICAgICAgICAgICBpZiAo
aW5pdERhdGFUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgaWYgKHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5
cGUpKQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChpbml0RGF0YVR5cGUp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4zLiBJZiBzdXBwb3J0ZWQgdHlwZXMgaXMgZW1w
dHksIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChzdXBwb3J0ZWRUeXBlcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIDMu
NC4gU2V0IHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uIHRvIHN1cHBvcnRlZCB0eXBlcy4KKyAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmluaXREYXRhVHlwZXMgPSBXVEZNb3ZlKHN1cHBvcnRlZFR5cGVzKTsKKyAgICB9CisKKyAgICAv
LyA0LiBMZXQgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBiZSB0aGUgdmFsdWUg
b2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVy
LgorICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0g
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisKKyAgICAvLyA1
LiBJZiBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVtZW50IGlzICJvcHRpb25hbCIgYW5k
IERpc3RpbmN0aXZlIElkZW50aWZpZXJzIGFyZSBub3QgYWxsb3dlZCBhY2NvcmRpbmcgdG8KKyAg
ICAvLyAgICByZXN0cmljdGlvbnMsIHNldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVt
ZW50IHRvICJub3QtYWxsb3dlZCIuCisgICAgaWYgKGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVp
cmVtZW50ID09IENETVJlcXVpcmVtZW50OjpPcHRpb25hbCAmJiByZXN0cmljdGlvbnMuZGlzdGlu
Y3RpdmVJZGVudGlmaWVyRGVuaWVkKQorICAgICAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXJSZXF1
aXJlbWVudCA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworCisgICAgLy8gNi4gRm9sbG93
IHRoZSBzdGVwcyBmb3IgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBmcm9tIHRo
ZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBzd2l0Y2ggKGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVp
cmVtZW50KSB7CisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ6CisgICAgICAgIC8v
IOKGsyAicmVxdWlyZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5v
dCBzdXBwb3J0IHVzZSBvZiBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGluIGNvbWJpbmF0aW9u
CisgICAgICAgIC8vIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdHJpY3Rp
b25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9
PSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6T3B0aW9u
YWw6CisgICAgICAgIC8vIOKGsyAib3B0aW9uYWwiCisgICAgICAgIC8vIENvbnRpbnVlIHdpdGgg
dGhlIGZvbGxvd2luZyBzdGVwcy4KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENETVJlcXVp
cmVtZW50OjpOb3RBbGxvd2VkOgorICAgICAgICAvLyDihrMgIm5vdC1hbGxvd2VkIgorICAgICAg
ICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdXNlIERpc3RpbmN0aXZlIElkZW50
aWZpZXIocykgb3IgRGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykKKyAgICAgICAg
Ly8gaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0
cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIDcuIFNldCB0aGUgZGlz
dGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGVxdWFsIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQuCisgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9IGRpc3RpbmN0aXZlSWRlbnRp
ZmllclJlcXVpcmVtZW50OworCisgICAgLy8gOC4gTGV0IHBlcnNpc3RlbnQgc3RhdGUgcmVxdWly
ZW1lbnQgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3Mg
cGVyc2lzdGVudFN0YXRlIG1lbWJlci4KKyAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudCA9IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlOwor
CisgICAgLy8gOS4gSWYgcGVyc2lzdGVudCBzdGF0ZSByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwi
IGFuZCBwZXJzaXN0aW5nIHN0YXRlIGlzIG5vdCBhbGxvd2VkIGFjY29yZGluZyB0byByZXN0cmlj
dGlvbnMsCisgICAgLy8gICAgc2V0IHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQgdG8gIm5v
dC1hbGxvd2VkIi4KKyAgICBpZiAocGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgPT0gQ0RNUmVx
dWlyZW1lbnQ6Ok9wdGlvbmFsICYmIHJlc3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQp
CisgICAgICAgIHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50ID0gQ0RNUmVxdWlyZW1lbnQ6Ok5v
dEFsbG93ZWQ7CisKKyAgICAvLyAxMC4gRm9sbG93IHRoZSBzdGVwcyBmb3IgcGVyc2lzdGVudCBz
dGF0ZSByZXF1aXJlbWVudCBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBzd2l0Y2ggKHBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KSB7CisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6UmVx
dWlyZWQ6CisgICAgICAgIC8vIOKGsyAicmVxdWlyZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBs
ZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBlcnNpc3Rpbmcgc3RhdGUgaW4gY29tYmluYXRp
b24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGFuZCByZXN0cmlj
dGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICh0aGlzLT5wZXJzaXN0ZW50
U3RhdGVSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykg
PT0gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlv
bmFsOgorICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgorICAgICAgICAvLyBDb250aW51ZSB3aXRo
IHRoZSBmb2xsb3dpbmcgc3RlcHMuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDRE1SZXF1
aXJlbWVudDo6Tm90QWxsb3dlZDoKKyAgICAgICAgLy8g4oazICJub3QtYWxsb3dlZCIKKyAgICAg
ICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHBlcnNpc3Rpbmcgc3RhdGUgaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGFu
ZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQKKyAgICAgICAgaWYgKHRoaXMtPnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJp
Y3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyAxMS4gU2V0IHRo
ZSBwZXJzaXN0ZW50U3RhdGUgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8g
ZXF1YWwgdGhlIHZhbHVlIG9mIHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQuCisgICAgYWNj
dW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IHBlcnNpc3RlbnRTdGF0ZVJl
cXVpcmVtZW50OworCisgICAgLy8gMTIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSBmaXJzdCBt
YXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgVmVjdG9yPENE
TVNlc3Npb25UeXBlPiBzZXNzaW9uVHlwZXM7CisKKyAgICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3Vy
YXRpb24uc2Vzc2lvblR5cGVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyDihrMgSWYgdGhlIHNl
c3Npb25UeXBlcyBtZW1iZXIgaXMgcHJlc2VudCBbV2ViSURMXSBpbiBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbgorICAgICAgICAvLyBMZXQgc2Vzc2lvbiB0eXBlcyBiZSBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbidzIHNlc3Npb25UeXBlcyBtZW1iZXIuCisgICAgICAgIHNlc3Npb25UeXBlcyA9IGNh
bmRpZGF0ZUNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIOKGsyBPdGhlcndpc2UKKyAgICAgICAgLy8gTGV0IHNlc3Npb24gdHlwZXMgYmUgWyAidGVt
cG9yYXJ5IiBdLgorICAgICAgICBzZXNzaW9uVHlwZXMgPSB7IENETVNlc3Npb25UeXBlOjpUZW1w
b3JhcnkgfTsKKyAgICB9CisKKyAgICAvLyAxMy4gRm9yIGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0
eXBlczoKKyAgICBmb3IgKGF1dG8mIHNlc3Npb25UeXBlIDogc2Vzc2lvblR5cGVzKSB7CisgICAg
ICAgIC8vIDEzLjEuIExldCBzZXNzaW9uIHR5cGUgYmUgdGhlIHZhbHVlLgorICAgICAgICAvLyAx
My4yLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVl
IGlzICJub3QtYWxsb3dlZCIgYW5kIHRoZQorICAgICAgICAvLyAgICAgICBJcyBwZXJzaXN0ZW50
IHNlc3Npb24gdHlwZT8gYWxnb3JpdGhtIHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJl
dHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24u
cGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lz
dGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICAvLyAxMy4zLiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9y
dCBzZXNzaW9uIHR5cGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uCisgICAgICAgIC8vICAgICAgIGFuZCByZXN0cmljdGlvbnMgZm9yIG90aGVyIHJlYXNvbnMs
IHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKHNlc3Npb25UeXBlLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxMy40IElmIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUgaXMgIm9wdGlv
bmFsIiBhbmQgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBJcworICAgICAgICAvLyAgICAgIHBl
cnNpc3RlbnQgc2Vzc2lvbiB0eXBlPyBhbGdvcml0aG0gb24gc2Vzc2lvbiB0eXBlIGlzIHRydWUs
IGNoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlCisgICAg
ICAgIC8vICAgICAgdmFsdWUgdG8gInJlcXVpcmVkIi4KKyAgICAgICAgaWYgKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
ICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpSZXF1aXJl
ZDsKKyAgICB9CisKKyAgICAvLyAxNC4gU2V0IHRoZSBzZXNzaW9uVHlwZXMgbWVtYmVyIG9mIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gc2Vzc2lvbiB0eXBlcy4KKyAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzID0gc2Vzc2lvblR5cGVzOworCisgICAgLy8gMTUu
IElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBhbmQgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVycyBp
biBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBhcmUgYm90aCBlbXB0eSwgcmV0dXJuIE5vdFN1cHBv
cnRlZC4KKyAgICBpZiAoY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5p
c0VtcHR5KCkgJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyAxNi4g4oazIElm
IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24g
aXMgbm9uLWVtcHR5OgorICAgIGlmICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFi
aWxpdGllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gMTYuMS4gTGV0IHZpZGVvIGNhcGFiaWxp
dGllcyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgR2V0IFN1cHBvcnRlZCBDYXBhYmls
aXRpZXMgZm9yIEF1ZGlvL1ZpZGVvIFR5cGUgYWxnb3JpdGhtIG9uCisgICAgICAgIC8vICAgICAg
IFZpZGVvLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJl
ciwgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwgYW5kIHJlc3RyaWN0aW9ucy4KKyAgICAgICAg
YXV0byB2aWRlb0NhcGFiaWxpdGllcyA9IGdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvckF1ZGlv
VmlkZW9UeXBlKEF1ZGlvVmlkZW9UeXBlOjpWaWRlbywgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52
aWRlb0NhcGFiaWxpdGllcywgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMp
OworCisgICAgICAgIC8vIDE2LjIuIElmIHZpZGVvIGNhcGFiaWxpdGllcyBpcyBudWxsLCByZXR1
cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxNi4zIFNldCB0aGUgdmlk
ZW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gdmlk
ZW8gY2FwYWJpbGl0aWVzLgorICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlkZW9D
YXBhYmlsaXRpZXMgPSBXVEZNb3ZlKHZpZGVvQ2FwYWJpbGl0aWVzLnZhbHVlKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIDE2LiDihrMgT3RoZXJ3aXNlOgorICAgICAgICAvLyAgICAgU2V0
IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlv
biB0byBhbiBlbXB0eSBzZXF1ZW5jZS4KKyAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LnZpZGVvQ2FwYWJpbGl0aWVzID0geyB9OworICAgIH0KKworICAgIC8vIDE3LiDihrMgSWYgdGhl
IGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBpcyBu
b24tZW1wdHk6CisgICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0
aWVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyAxNy4xLiBMZXQgYXVkaW8gY2FwYWJpbGl0aWVz
IGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBHZXQgU3VwcG9ydGVkIENhcGFiaWxpdGll
cyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0gb24KKyAgICAgICAgLy8gICAgICAgQXVk
aW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyLCBh
Y2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVzdHJpY3Rpb25zLgorICAgICAgICBhdXRv
IGF1ZGlvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRl
b1R5cGUoQXVkaW9WaWRlb1R5cGU6OkF1ZGlvLCBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlv
Q2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyk7CisK
KyAgICAgICAgLy8gMTcuMi4gSWYgYXVkaW8gY2FwYWJpbGl0aWVzIGlzIG51bGwsIHJldHVybiBO
b3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIDE3LjMgU2V0IHRoZSBhdWRpb0Nh
cGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBhdWRpbyBj
YXBhYmlsaXRpZXMuCisgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFi
aWxpdGllcyA9IFdURk1vdmUoYXVkaW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgLy8gMTcuIOKGsyBPdGhlcndpc2U6CisgICAgICAgIC8vICAgICBTZXQgdGhl
IGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGFuIGVtcHR5IHNlcXVlbmNlLgorICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uYXVk
aW9DYXBhYmlsaXRpZXMgPSB7IH07CisgICAgfQorCisgICAgLy8gMTguIElmIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMgIm9wdGlvbmFs
IiwgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nCisgICAgLy8gICAgIGNv
bmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBpZiAoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVudDo6T3B0aW9u
YWwpIHsKKyAgICAgICAgLy8g4oazIElmIHRoZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyB1c2Ug
RGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBvciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRp
ZmllcihzKSBmb3IgYW55IG9mIHRoZQorICAgICAgICAvLyAgICBjb21iaW5hdGlvbnMgaW4gYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlmaWVy
c1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBD
RE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpIHsKKyAgICAgICAgICAgIC8vIENoYW5nZSBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRvICJyZXF1
aXJlZCIuCisgICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8g4oazIE90aGVyd2lzZQorICAgICAgICAgICAgLy8gICAgQ2hhbmdlIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgdG8g
Im5vdC1hbGxvd2VkIi4KKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0
aW5jdGl2ZUlkZW50aWZpZXIgPSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIDE5LiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVy
c2lzdGVudFN0YXRlIHZhbHVlIGlzICJvcHRpb25hbCIsIGZvbGxvdyB0aGUgc3RlcHMgZm9yIHRo
ZSBmaXJzdCBtYXRjaGluZworICAgIC8vICAgICBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5n
IGxpc3Q6CisgICAgaWYgKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUg
PT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsKSB7CisgICAgICAgIC8vIOKGsyBJZiB0aGUgaW1w
bGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBzdGF0ZSBmb3IgYW55IG9mIHRoZSBjb21i
aW5hdGlvbnMgaW4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAodGhpcy0+
cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0
cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgeworICAgICAgICAgICAgLy8g
Q2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUg
dG8gInJlcXVpcmVkIi4KKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCisgICAgICAgICAgICAvLyAgICBDaGFuZ2Ug
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0byAibm90
LWFsbG93ZWQiLgorICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3Rl
bnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25maWd1cmF0aW9uIHNwZWNp
ZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uCisgICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90IGFsbG93ZWQgaW4g
dGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KKyAgICBpZiAoIXN1cHBvcnRzQ29uZmln
dXJhdGlvbihhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgaWYgKChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCB8fCBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgJiYg
YWNjZXNzID09IExvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247Cisg
ICAgLy8gTk9URTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0dXMoKS4KK30KKworT3B0aW9u
YWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENh
cGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKENETVByaXZhdGU6OkF1ZGlvVmlkZW9UeXBlIHR5
cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRp
ZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9u
LCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykKK3sKKyAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNhcGFiaWxpdGllcy1mb3It
YXVkaW8tdmlkZW8tdHlwZQorICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAy
MDE2CisKKyAgICAvLyAzLjEuMS4zIEdldCBTdXBwb3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRp
by9WaWRlbyBUeXBlCisKKyAgICAvLyBHaXZlbiBhbiBhdWRpby92aWRlbyB0eXBlLCBDRE1NZWRp
YUNhcGFiaWxpdHkgc2VxdWVuY2UgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdGllcywgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbgorICAgIC8vIHBhcnRpYWwgY29uZmlndXJhdGlvbiwgYW5kIHJl
c3RyaWN0aW9ucywgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIHN1cHBvcnRl
ZCBDRE1NZWRpYUNhcGFiaWxpdHkgdmFsdWVzCisgICAgLy8gZm9yIHRoaXMgYXVkaW8vdmlkZW8g
dHlwZSBvciBudWxsIGFzIGFwcHJvcHJpYXRlLgorCisgICAgLy8gMS4gTGV0IGxvY2FsIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBjb3B5IG9mIHBhcnRpYWwgY29uZmlndXJh
dGlvbi4KKyAgICBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJh
dGlvbiA9IHBhcnRpYWxDb25maWd1cmF0aW9uOworCisgICAgLy8gMi4gTGV0IHN1cHBvcnRlZCBt
ZWRpYSBjYXBhYmlsaXRpZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgQ0RNTWVkaWFDYXBhYmls
aXR5IGRpY3Rpb25hcmllcy4KKyAgICBWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiBzdXBwb3J0
ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07CisKKyAgICAvLyAzLiBGb3IgZWFjaCByZXF1ZXN0ZWQg
bWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzOgorICAgIGZv
ciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJlcXVlc3RlZENhcGFiaWxpdGllcykgewor
ICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFi
aWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCisgICAgICAgIC8vIDMuMi4gTGV0IHJvYnVzdG5l
c3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyByb2J1c3RuZXNzIG1lbWJlci4KKyAg
ICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0ZWRDYXBhYmlsaXR5LnJvYnVzdG5lc3M7
CisKKyAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMgdGhlIGVtcHR5IHN0cmluZywg
cmV0dXJuIG51bGwuCisgICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBhYmlsaXR5LmNvbnRlbnRUeXBl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
Ly8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52YWxpZCBvciB1bnJlY29nbml6ZWQgTUlN
RSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAgICAgIE9wdGlvbmFs
PFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNlZENvbnRlbnRUeXBlOjpjcmVh
dGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9kZTo6UmZjMjA0NSk7CisgICAg
ICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRhaW5lciB0eXBlIHNwZWNpZmllZCBieSBj
b250ZW50IHR5cGUuCisgICAgICAgIFN0cmluZyBjb250YWluZXIgPSBjb250ZW50VHlwZS0+bWlt
ZVR5cGUoKTsKKworICAgICAgICAvLyAzLjYuIElmIHRoZSB1c2VyIGFnZW50IGRvZXMgbm90IHN1
cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uIFRoZSBjYXNl
LXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRl
dGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4KKyAgICAgICAgLy8gMy43LiBMZXQgcGFy
YW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFdIHBhcmFtZXRlcnMsIGlmIGFueSwgc3Bl
Y2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KKyAgICAgICAgLy8gMy44LiBJZiB0aGUgdXNlciBhZ2Vu
dCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1ldGVycywgY29udGludWUgdG8g
dGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAvLyAzLjkuIExldCBtZWRpYSB0eXBlcyBiZSB0
aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMgc3BlY2lmaWVkIGJ5IHBhcmFt
ZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNv
bXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQyBvciBvdGhlciBz
cGVjaWZpY2F0aW9uLgorICAgICAgICBTdHJpbmcgY29kZWNzID0gY29udGVudFR5cGUtPnBhcmFt
ZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7CisgICAgICAgIGlmIChjb250ZW50VHlwZS0+cGFy
YW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgpID8gMCA6IDEpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgLy8gMy4xMC4gSWYgbWVkaWEgdHlwZXMgaXMgZW1wdHk6Cisg
ICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyDihrMgSWYgY29u
dGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVjaWZpYyBzZXQgb2YgY29kZWNzIGFuZCBj
b2RlYyBjb25zdHJhaW50czoKKyAgICAgICAgICAgIC8vIOKGsyBPdGhlcndpc2U6CisgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4xMS4gSWYg
Y29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1ZGlvL3ZpZGVvIHR5cGUsIGNvbnRpbnVl
IHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKyAgICAgICAgLy8gMy4xMi4gSWYgcm9idXN0bmVzcyBp
cyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFpbnMgYW4gdW5yZWNvZ25pemVkIHZhbHVl
IG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQorICAgICAgICAvLyAgICAgICBpbXBsZW1lbnRh
dGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBTdHJpbmcgY29tcGFyaXNvbiBp
cyBjYXNlLXNlbnNpdGl2ZS4KKyAgICAgICAgaWYgKCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAh
c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkuY29udGFpbnMocm9idXN0bmVzcykpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNlciBhZ2VudCBhbmQgaW1w
bGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9mIGVuY3J5cHRlZCBtZWRp
YSBkYXRhIGZvciB0aGUKKyAgICAgICAgLy8gICAgICAgY29tYmluYXRpb24gb2YgY29udGFpbmVy
LCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9jYWwgYWNjdW11bGF0ZWQgY29uZmlndXJh
dGlvbiBpbiBjb21iaW5hdGlvbgorICAgICAgICAvLyAgICAgICB3aXRoIHJlc3RyaWN0aW9uczoK
KyAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAg
ICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShjb250ZW50VHlwZS0+bWltZVR5cGUoKSk7
CisgICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7CisKKyAgICAgICAgICAg
IC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRp
YVNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlw
ZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRl
ZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24sIHJlc3RyaWN0aW9ucykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyAzLjEzLjEuIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byBzdXBwb3J0ZWQgbWVk
aWEgY2FwYWJpbGl0aWVzLgorICAgICAgICBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcy5hcHBl
bmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisKKyAgICAgICAgLy8gMy4xMy4yLiDihrMgSWYgYXVk
aW8vdmlkZW8gdHlwZSBpcyBWaWRlbzoKKyAgICAgICAgLy8gICAgICAgICBBZGQgcmVxdWVzdGVk
IG1lZGlhIGNhcGFiaWxpdHkgdG8gdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBsb2Nh
bCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLgorICAgICAgICBpZiAodHlwZSA9PSBBdWRpb1Zp
ZGVvVHlwZTo6VmlkZW8pCisgICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlk
ZW9DYXBhYmlsaXRpZXMuYXBwZW5kKHJlcXVlc3RlZENhcGFiaWxpdHkpOworICAgICAgICAvLyAz
LjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlzIEF1ZGlvOgorICAgICAgICAvLyAgICAg
ICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byB0aGUgYXVkaW9DYXBhYmlsaXRp
ZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGll
cy5hcHBlbmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisgICAgfQorCisgICAgLy8gNC4gSWYgc3Vw
cG9ydGVkIG1lZGlhIGNhcGFiaWxpdGllcyBpcyBlbXB0eSwgcmV0dXJuIG51bGwuCisgICAgaWYg
KHN1cHBvcnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIC8vIDUuIFJldHVybiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0
aWVzLgorICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllczsKK30KKwordm9pZCBD
RE1Qcml2YXRlOjpnZXRDb25zZW50U3RhdHVzKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJlc3RyaWN0aW9ucywg
TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0
LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25zZW50CisgICAgLy8gVzNDIEVkaXRvcidz
IERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKworICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBD
b25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQuCisgICAgLy8gMjEuIElmIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMgInJlcXVpcmVk
IiBhbmQgdGhlIERpc3RpbmN0aXZlIElkZW50aWZpZXIocykgYXNzb2NpYXRlZAorICAgIC8vICAg
ICB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYXJlIG5vdCB1bmlxdWUgcGVyIG9yaWdp
biBhbmQgcHJvZmlsZSBhbmQgY2xlYXJhYmxlOgorICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAm
JiAhZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKSB7CisgICAgICAgIC8vIDIxLjEuIFVwZGF0ZSByZXN0
cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBkZXNjcmliZWQgYnkg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3QgaGF2ZSB1c2VyIGNvbnNlbnQuCisgICAg
ICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVlOworICAg
ICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhLyNnZXQtY29uc2VudC1zdGF0dXMKKyAgICAvLyAzLjEuMS40IEdldCBDb25zZW50IFN0YXR1
cworICAgIC8vIEdpdmVuIGFuIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9u
cyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIHRoZSBjb25zZW50IHN0YXR1cyBm
b3IgYWNjdW11bGF0ZWQKKyAgICAvLyBjb25maWd1cmF0aW9uIGFuZCBvcmlnaW4gYXMgb25lIG9m
IENvbnNlbnREZW5pZWQsIEluZm9ybVVzZXIgb3IgQWxsb3dlZCwgdG9nZXRoZXIgd2l0aCBhbiB1
cGRhdGVkIHZhbHVlIGZvciByZXN0cmljdGlvbnMKKyAgICAvLyBpbiB0aGUgQ29uc2VudERlbmll
ZCBjYXNlLgorCisgICAgLy8gMS4gSWYgdGhlcmUgaXMgcGVyc2lzdGVkIGRlbmlhbCBmb3Igb3Jp
Z2luIGluZGljYXRpbmcgdGhhdCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCBhbGxv
d2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLjEuIFVwZGF0ZSByZXN0cmlj
dGlvbnMgdG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHdoaWNoIGNvbnNlbnQgaGFz
IGJlZW4gZGVuaWVkLgorICAgIC8vIDEuMi4gUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3Ry
aWN0aW9ucy4KKyAgICAvLyAyLiBJZiB0aGVyZSBpcyBwZXJzaXN0ZWQgY29uc2VudCBmb3Igb3Jp
Z2luIGluZGljYXRpbmcgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBhbGxvd2VkLCByZXR1
cm4gQWxsb3dlZC4KKyAgICAvLyBOT1RFOiBwZXJzaXN0ZWQgZGVuaWFsIC8gY29uc2VudCB1bmlt
cGxlbWVudGVkLgorCisgICAgLy8gMy4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6
CisgICAgLy8gICAg4oazIFRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIgYW5kIHRoZSBjb21iaW5h
dGlvbiBvZiB0aGUgVXNlciBBZ2VudCwKKyAgICAvLyAgICAgICBpbXBsZW1lbnRhdGlvbiBhbmQg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBmb2xsb3cgYWxsIHRoZSByZWNvbW1l
bmRhdGlvbnMgb2YgQWxsb3cgUGVyc2lzdGVudCBEYXRhIHRvIEJlIENsZWFyZWQKKyAgICAvLyAg
ICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKS4KKyAgICAvLyBO
T1RFOiBhc3N1bWUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgZm9sbG93IGFsbCByZWNvbW1lbmRhdGlv
bnMuCisKKyAgICAvLyAgICDihrMgVGhlIHVzZXIgYWdlbnQgcmVxdWlyZXMgZXhwbGljaXQgdXNl
ciBjb25zZW50IGZvciB0aGUgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBmb3Igb3RoZXIgcmVh
c29ucy4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWly
ZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCisKKyAgICAvLyAzLjEuIFJlcXVlc3QgdXNlciBjb25z
ZW50IHRvIHVzZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGluIHRoZSBvcmlnaW4gYW5kIHdh
aXQgZm9yIHRoZSB1c2VyIHJlc3BvbnNlLgorICAgIC8vICAgICAgVGhlIGNvbnNlbnQgbXVzdCBp
bmNsdWRlIGNvbnNlbnQgdG8gdXNlIGEgRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBhbmQvb3Ig
RGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykgYXMgYXBwcm9wcmlhdGUKKyAgICAv
LyAgICAgIGlmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXIgbWVtYmVyIGlzICJyZXF1aXJlZCIuCisgICAgLy8gMy4yLiBJZiBjb25zZW50IHdhcyBkZW5p
ZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDMuMi4xLiBVcGRhdGUgcmVzdHJp
Y3Rpb25zIHRvIHJlZmxlY3QgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB3aGljaCBjb25zZW50IHdh
cyBkZW5pZWQuCisgICAgLy8gMy4yLjEuIFJldHVybiBDb25zZW50RGVuaWVkIGFuZCByZXN0cmlj
dGlvbnMuCisgICAgLy8gTk9URTogYXNzdW1lIGltcGxpZWQgY29uc2VudCBpZiB0aGUgY29tYmlu
YXRpb24gb2Ygb3JpZ2luIGFuZCB0b3BPcmlnaW4gYWxsb3dzIGl0LgorICAgIGlmIChhY2N1bXVs
YXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50
OjpSZXF1aXJlZCAmJiBhY2Nlc3MgPT0gTG9jYWxTdG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkKSB7
CisgICAgICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVl
OworICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3Zl
KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0LiBJZiB0aGUgZGlzdGluY3RpdmVJZGVudGlm
aWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCAibm90LWFsbG93
ZWQiLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmRpc3RpbmN0aXZlSWRlbnRpZmllciAhPSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkgewor
ICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpJbmZvcm1Vc2VyLCBXVEZNb3ZlKGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyA1LiBJZiB0aGUgdXNlciBhZ2VudCByZXF1aXJlcyBpbmZv
cm1pbmcgdGhlIHVzZXIgZm9yIHRoZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGZvciBvdGhl
ciByZWFzb25zLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVz
ZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBpbmZvcm1pbmcgdGhlIHVzZXIuCisKKyAgICAvLyA2
LiBSZXR1cm4gQWxsb3dlZC4KKyAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpBbGxvd2VkLCBX
VEZNb3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7
Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCAyNWY3ODE2YTJmZTFkYTZmOTBjMmZlZjc3
NzU1MTQwNmFhMGY0YTAzLi5mOGQyYzEzOWIwN2EzM2M3YmIzZDMyMzhjNjE4ZTE3ZmI4ZjQzYTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCkBAIC0zMSwyMSArMzEsMzEgQEAKICNpbmNsdWRlICJDRE1SZXF1aXJlbWVudC5o
IgogI2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eTsK
IHN0cnVjdCBDRE1SZXN0cmljdGlvbnM7CiAKLWNsYXNzIENETVByaXZhdGUgeworY2xhc3MgQ0RN
UHJpdmF0ZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1Qcml2YXRlPiB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5DRE1Qcml2YXRlKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0ID0gMDsKKyAgICBlbnVtIGNsYXNzIExvY2Fs
U3RvcmFnZUFjY2VzcyA6IGJvb2wgeworICAgICAgICBOb3RBbGxvd2VkLAorICAgICAgICBBbGxv
d2VkLAorICAgIH07CisKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4p
PjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbihDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwg
TG9jYWxTdG9yYWdlQWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CisK
KyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lv
blR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVz
dG5lc3NlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENETVJlcXVpcmVtZW50IGRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ0RNUmVx
dWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFy
YWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwpAQCAtNTYs
NiArNjYsMzQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VC
Q09SRV9FWFBPUlQgQ0RNUHJpdmF0ZSgpOworICAgIHN0YXRpYyBib29sIGlzUGVyc2lzdGVudFR5
cGUoQ0RNU2Vzc2lvblR5cGUpOworCisgICAgZW51bSBjbGFzcyBDb25maWd1cmF0aW9uU3RhdHVz
IHsKKyAgICAgICAgU3VwcG9ydGVkLAorICAgICAgICBOb3RTdXBwb3J0ZWQsCisgICAgICAgIENv
bnNlbnREZW5pZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQ29uc2VudFN0YXR1cyB7Cisg
ICAgICAgIENvbnNlbnREZW5pZWQsCisgICAgICAgIEluZm9ybVVzZXIsCisgICAgICAgIEFsbG93
ZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQXVkaW9WaWRlb1R5cGUgeworICAgICAgICBB
dWRpbywKKyAgICAgICAgVmlkZW8sCisgICAgfTsKKworICAgIHZvaWQgZG9TdXBwb3J0ZWRDb25m
aWd1cmF0aW9uU3RlcChDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmln
dXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiYsIExvY2FsU3RvcmFnZUFjY2VzcywgU3VwcG9ydGVk
Q29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOworICAgIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24+IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiwgTG9j
YWxTdG9yYWdlQWNjZXNzKTsKKyAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5
Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5
cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRp
ZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9u
LCBDRE1SZXN0cmljdGlvbnMmKTsKKworICAgIHVzaW5nIENvbnNlbnRTdGF0dXNDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChDb25zZW50U3RhdHVzLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiYsIENETVJlc3RyaWN0aW9ucyYmKT47CisgICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJl
c3RyaWN0aW9ucyYmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIENvbnNlbnRTdGF0dXNDYWxsYmFjayYm
KTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVJlcXVpcmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCmluZGV4IDY5YWMxMmQzMTZiZjY2NTdiYjBhMjRkYWY3
YWU0ZmEwZmQ0ZjFjOTguLjViMGI3NzgwZDI3ZGZlYjE5M2RjZTZlY2RhNzE3ODUyOGY3Y2Q1OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJl
cXVpcmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUmVxdWlyZW1lbnQuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgeworZW51bSBjbGFzcyBDRE1SZXF1aXJl
bWVudCA6IHVpbnQ4X3QgewogICAgIFJlcXVpcmVkLAogICAgIE9wdGlvbmFsLAogICAgIE5vdEFs
bG93ZWQKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgewogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQsCisgICAg
ICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpSZXF1aXJlZCwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsLAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVu
dDo6Tm90QWxsb3dlZAorICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAppbmRleCBjNTJlMjgyYTEyZTkxYTQ4ODEwYmQxOGI4
N2ViNmFkNjM4ZjIxMGE4Li45Y2EyYWM1OWU4YjEzNTQ2M2E1MmRiNDVlODA3MzFmNTBjNjk0ZjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1S
ZXN0cmljdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1SZXN0cmljdGlvbnMuaApAQCAtMzYsNiArMzYsMzkgQEAgc3RydWN0IENETVJlc3RyaWN0
aW9ucyB7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlRGVuaWVkIHsgZmFsc2UgfTsKICAgICBIYXNoU2V0PENE
TVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJE
ZW5pZWQ7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlRGVuaWVkOworICAgICAg
ICBlbmNvZGVyIDw8IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNUmVzdHJpY3Rpb25zPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3Rp
bmN0aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJEZW5pZWQ7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVk
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxi
b29sPiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVu
dFN0YXRlRGVuaWVkOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZURlbmllZCkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8SGFzaFNldDxD
RE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRIYXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdF
bnVtSGFzaFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAg
ICAgIGRlY29kZXIgPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworICAgICAgICBpZiAoIWRlbmllZFNl
c3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
cmV0dXJuIHt7CisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkLAorICAg
ICAgICAgICAgKnBlcnNpc3RlbnRTdGF0ZURlbmllZCwKKyAgICAgICAgICAgIFdURk1vdmUoKmRl
bmllZFNlc3Npb25UeXBlcyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVNlc3Npb25UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oCmluZGV4IDYwNTc0YTVhNjkzYTk2YzQ5ZjQ5ZmI3MzQ5
NmVkNzViN2UxZTZmYmIuLmUwN2MzMDAyNzkzMDVmNzc0M2YyMmZjZjU0MDZmMmNmYTY4MWRlMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNl
c3Npb25UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNU2Vzc2lvblR5cGUuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgeworZW51bSBjbGFzcyBDRE1TZXNzaW9u
VHlwZSA6IHVpbnQ4X3QgewogICAgIFRlbXBvcmFyeSwKICAgICBQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQsCiAgICAgUGVyc2lzdGVudExpY2Vuc2UKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3Mg
Q0RNU2Vzc2lvblR5cGUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNU2Vzc2lvblR5cGUsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpUZW1wb3Jh
cnksCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZQor
ICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDQ1MTExZGM3NWI1NTA4MGNlZjRlNWZiMzhh
ZTI2MzNiMzllYTcyMzMuLmRhYTNjZWMyNTMwNjcxNDBhMmZlM2I1MjIyOTQ1MGQwODg5MjNmYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ0RNUmVzdHJpY3Rp
b25zLmgiCiAjaW5jbHVkZSAiQ0RNU2Vzc2lvblR5cGUuaCIKKyNpbmNsdWRlICJJbml0RGF0YVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI5MCwxMCArMjkxLDEzIEBAIGJvb2wgQ0RNRmFj
dG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkK
IENETVByaXZhdGVDbGVhcktleTo6Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogQ0RN
UHJpdmF0ZUNsZWFyS2V5Ojp+Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1ib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7Ci0gICAgLy8gYGtleWlkc2Ag
YW5kICdjZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgotICAgIHJl
dHVybiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRz
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgIndlYm0iKSk7
CisgICAgcmV0dXJuIHsKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6a2V5aWRzTmFtZSgpLAor
ICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpLAorICAgICAgICBJbml0RGF0YVJl
Z2lzdHJ5Ojp3ZWJtTmFtZSgpLAorICAgIH07CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zUGVy
c2lzdGVudExpY2Vuc2VUeXBlKGNvbnN0IFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4mIHR5cGVzKQpA
QCAtMzM3LDcgKzM0MSw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0NvbmZp
Z3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAorYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1T
ZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgLy8gT25seSBzdXBwb3J0IHRoZSAndGVtcG9y
YXJ5JyBhbmQgJ3BlcnNpc3RlbnQtbGljZW5zZScgc2Vzc2lvbiB0eXBlcy4KICAgICBpZiAoc2Vz
c2lvblR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSAmJiBzZXNzaW9uVHlwZSAhPSBD
RE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2UpCkBAIC0zNDUsMTAgKzM0OSwxMCBAQCBi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKENETVNlc3Npb25UeXBlJiBzZQogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Jv
YnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJp
bmc+IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsK
ICAgICAvLyBPbmx5IGVtcHR5IGByb2J1c3RuZXNzYCBzdHJpbmcgaXMgc3VwcG9ydGVkLgotICAg
IHJldHVybiByb2J1c3RuZXNzLmlzRW1wdHkoKTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSB9
OwogfQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlQ2xlYXJLZXk6OmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0CkBAIC00MzIsMzQgKzQzNiwy
MCBAQCBPcHRpb25hbDxTdHJpbmc+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVTZXNzaW9u
SWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCiAKIENETUluc3RhbmNlQ2xlYXJLZXk6On5DRE1J
bnN0YW5jZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1DRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgZGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxs
b3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICAvLyBOby1vcC4KLSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQotCi1DRE1J
bnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldERpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGlu
ZyBkaXN0aW5jdGl2ZSBpZGVudGlmaWVycyBhcyBhbGxvd2VkLgotICAgIHJldHVybiAhYWxsb3dl
ZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKLX0KLQotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBD
RE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dl
ZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGluZyBwZXJzaXN0ZW50IHN0YXRlIGFzIGFsbG93ZWQu
Ci0gICAgcmV0dXJuICFhbGxvd2VkID8gU3VjY2VlZGVkIDogRmFpbGVkOworICAgIFN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0
aXZlSWRlbnRpZmllcnM6Ok5vICYmIHBlcnNpc3RlbnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3RlbnRT
dGF0ZTo6Tm8pID8gU3VjY2VlZGVkIDogRmFpbGVkOworICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7
CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ0RNSW5zdGFuY2VD
bGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZl
ciBjZXJ0aWZpY2F0ZS4KLSAgICByZXR1cm4gRmFpbGVkOworICAgIGNhbGxiYWNrKEZhaWxlZCk7
CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCit2b2lkIENE
TUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikKIHsK
LSAgICAvLyBSZWplY3QgYW55IHBlcnNpc3RlbnQgc3RhdGUgc3RvcmFnZS4KLSAgICByZXR1cm4g
c3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7CiB9CiAKIGNv
bnN0IFN0cmluZyYgQ0RNSW5zdGFuY2VDbGVhcktleTo6a2V5U3lzdGVtKCkgY29uc3QKQEAgLTQ5
OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRo
ZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBj
aGVja3MgYXJlIGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDY3MDRhZTdh
OTU3ZjMyZmUxZjg0OTgzZWQzYjNmNjUwMmE1MzE1YTIuLjY2OTdhMDQ1NWJlZjI5MTU1YmY1OTAz
ODRmNTJmMDQyOTFhZGMwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNzQsMTEg
Kzc0LDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUo
Y29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOwogICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJl
c3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3QgZmluYWw7CkBAIC05NywxMSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICAv
LyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkNsZWFyS2V5OyB9Ci0g
ICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQ
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKLSAgICBTdWNjZXNz
VmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIH07CkBAIC0xMTEsNyArMTA5LDcgQEAgcHVibGlj
OgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBh
cmVudCkKICAgICAgICAgOiBtX3BhcmVudEluc3RhbmNlKHBhcmVudCkgeyB9CiAgICAgdm9pZCBy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCmluZGV4IDU3ZGZjYmY0YmM3YzQ4ODQ0ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIu
LmRiMGIyZjhhN2UwZjI2OTZhMWQ4ZGI2ZjRkNGY0N2FhZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2
NTcsMTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShD
RE1JbnN0YW5jZSYgaW5zdGFuY2UpCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVy
OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1f
c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCA9IHNob3VsZDsKKyAgICBtX3ByaXZhdGUtPnNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRpZgorCiBNZWRp
YVRpbWUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2
YXRlLT5kdXJhdGlvbk1lZGlhVGltZSgpOwpAQCAtMTMxMiw5ICsxMzIwLDkgQEAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBNZWRpYVBsYXllcjo6Y2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBr
ZXlJZCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChrZXlJZCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5
KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSkKIHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERh
dGEpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKIH0KIAog
U3RyaW5nIE1lZGlhUGxheWVyOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdl
NmNiOGEzOTBkZjdmZTFhN2FhZTAxNzM5ZGM5NDhmNzc2NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBj
NTY5ZTY3YTQxZTEyMGI3NjQwZWZhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5
QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoVWludDhBcnJheSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0
cmluZygpOyB9CiAjZW5kaWYKIApAQCAtMzY2LDYgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJik7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyAg
ICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQ7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBwYXVzZWQo
KSBjb25zdDsKICAgICBib29sIHNlZWtpbmcoKSBjb25zdDsKIApAQCAtNTE5LDcgKzUyNCw3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29u
c3Q7Ci0gICAgYm9vbCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQg
a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4gbV9tZWRpYVN0cmVhbTsKICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggOWY3ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0
YjBkY2ExY2MxNzVhOC4uN2E4MjA0NzBmOTk5YWM5OWE2YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKQEAgLTI0Myw2ICsyNDMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkg
eyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAppbmRleCA0ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJh
YmZjZGU1YTBkNGI4MTE4ZDAzY2M5MmYxZDYxOWQ2MWQ3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI0Nyw5ICsyNDcsOSBAQCBib29sIENETUZh
Y3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZygpID0gZGVmYXVsdDsKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewotICAgIHJldHVy
biB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOworICAgIHJldHVy
biBjb3B5VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5cGVzKCkpOwogfQogCiBib29sIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0zMDUsNyArMzA1LDcg
QEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzQ29uZmlndXJhdGlv
bldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0QKICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBz
ZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBl
LCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAog
ewogICAgIGlmIChzZXNzaW9uVHlwZSA9PSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAg
ICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVu
dDo6UmVxdWlyZWQpCkBAIC0zMTYsMTMgKzMxNiwxMCBAQCBib29sIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Np
bwogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAK
LWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29u
c3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAg
ICBpZiAocm9idXN0bmVzcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAg
Ly8gRklYTUU6IERldGVybWluZSBhbiBlbnVtZXJhdGVkIGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1
ZXMgc3VwcG9ydGVkIGJ5IEZQUy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHsgZW1w
dHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyAr
MzYzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdAogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0
RGF0YVR5cGUpKQorICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERh
dGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9
PSBzaW5mTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmlu
ZGV4IDUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZkMTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFk
N2FmYmFlMmQyYzU2MTJmODRiNDM0YzBmMTBmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oCkBAIC01NSwxMSArNTUsMTEgQEAgcHVibGljOgogICAgIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZygpOwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3Ry
aW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZElu
aXREYXRhVHlwZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1T
ZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBj
b25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVz
c2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBw
ZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IDcwZWFjMzZhNDc5NzgxNWExYWYyNGUyZDU3YjAyMjZmYjQ5NzljNDYuLjVkOWE5YTBh
ZjU3NTNhMTBiMmRkMTdjMWU5NWI3OTQyYTE0MTgyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAt
MTkzMSw5ICsxOTMxLDcgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKIAogICAgICAgICB1bnNp
Z25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAgICAg
YXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVy
KSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPmtleU5l
ZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAg
ICAgbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CiAgICAgICAg
IHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJLCBhdlJlcXVlc3QpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCBiMTFmNzFhOWI1ZTM4YmY2OThi
MTM5NDlkZGRlODZmM2RkOTk0Y2MxLi4wMGI2ZmI4MjIwY2E3ZjA1YzA5MWYyNjUzODZlMjk5MmY0
MGU2M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTc0LDExICs3NCw5IEBAIHB1Ymxp
YzoKIAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAK
LSAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNl
dFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwotICAgIFN1Y2Nl
c3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZv
aWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRl
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxD
RE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIAogICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CkBAIC0xMjAsNyArMTE4LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3MzI2Nzc1ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0
NjQ3Y2I4ZDMxLi4yYThiYjM4YzcwMzMwN2E3MmE3MTM1MTNmYTZiMjM4NDE0M2FhMWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjY4LDcyICsyNjgsNjMgQEAgYm9vbCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNNZWRpYUNhcGFiaWxpdHkoY29u
c3QgQ0RNTWVkaWEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NW
YWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSBwZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8v
IEZJWE1FOiB2ZXJpZnkgdGhhdCBGYWlyUGxheVN0cmVhbWluZyBkb2VzIG5vdCAoYW5kIGNhbm5v
dCkgZXhwb3NlIGEgZGlzdGluY3RpdmUgaWRlbnRpZmllciB0byB0aGUgY2xpZW50Ci0gICAgaWYg
KGNvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpS
ZXF1aXJlZCkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKLQotICAgIGlmIChjb25maWd1cmF0aW9u
LnBlcnNpc3RlbnRTdGF0ZSAhPSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQgJiYgKGNvbmZpZ3Vy
YXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNh
Z2VSZWNvcmQpIHx8IGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Np
b25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkpKQotICAgICAgICByZXR1cm4gRmFpbGVkOwotCi0g
ICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpS
ZXF1aXJlZCAmJiAhbV9zdG9yYWdlVVJMKQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgIGF1
dG8gaW5pdGlhbGl6ZSA9IFsmXSAoKSB7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLmRpc3Rp
bmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAgICAg
ICByZXR1cm4gRmFpbGVkOwogCi0gICAgaWYgKGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNv
bnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkgJiYgIXN1cHBvcnRzUGVy
c2lzdGVudEtleXMoKSkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKKyAgICAgICAgaWYgKGNvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlICE9IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAo
Y29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNp
c3RlbnRVc2FnZVJlY29yZCkgfHwgY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMo
Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKSkpCisgICAgICAgICAgICByZXR1cm4g
RmFpbGVkOwogCi0gICAgaWYgKCFQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWQ29udGVudEtl
eVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCkpCi0gICAgICAgIHJldHVybiBGYWlsZWQ7CisgICAg
ICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6
UmVxdWlyZWQgJiYgIW1fc3RvcmFnZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7CiAK
LSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQorICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5zZXNz
aW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKSAmJiAh
c3VwcG9ydHNQZXJzaXN0ZW50S2V5cygpKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAot
Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkKLXsKLSAgICAvLyBG
SVhNRTogdmVyaWZ5IHRoYXQgRmFpclBsYXlTdHJlYW1pbmcgZG9lcyBub3QgKGFuZCBjYW5ub3Qp
IGV4cG9zZSBhIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgdG8gdGhlIGNsaWVudAotICAgIHJldHVy
biBTdWNjZWVkZWQ7Ci19CisgICAgICAgIGlmICghUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9B
VkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpKQorICAgICAgICAgICAgcmV0dXJu
IEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sIHBlcnNpc3Rl
bnRTdGF0ZUFsbG93ZWQpCi17Ci0gICAgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVyc2lz
dGVudFN0YXRlQWxsb3dlZDsKLSAgICByZXR1cm4gU3VjY2VlZGVkOworICAgICAgICBtX3BlcnNp
c3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3RhdGUgPT0gQWxsb3dQZXJzaXN0ZW50U3Rh
dGU6OlllczsKKyAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICB9OworICAgIGNhbGxiYWNr
KGluaXRpYWxpemUoKSk7CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUpCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBt
X3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0
dXJuIFN1Y2NlZWRlZDsKKyAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi1DRE1JbnN0YW5j
ZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRT
dG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSkKK3ZvaWQgQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KQogewogICAgIGlmIChzdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkgewogICAgICAgICBtX3N0b3JhZ2VVUkwgPSBuaWw7Ci0gICAgICAgIHJldHVy
biBTdWNjZWVkZWQ7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHN0b3JhZ2VQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rv
cnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVk
OworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJ
c0RpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5LCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1i
b2xpY0xpbmtzOjpZZXMpKSB7CiAgICAgICAgIGF1dG8gdGVtcERpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIk1lZGlhS2V5cyIpOwogICAgICAgICBpZiAo
IXRlbXBEaXJlY3RvcnkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGF1dG8gdGVtcFN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBEaXJlY3RvcnksIEZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShzdG9yYWdlUGF0aCkpOwogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1vdmVGaWxl
KHN0b3JhZ2VEaXJlY3RvcnksIHRlbXBTdG9yYWdlUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4g
RmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
bW92ZUZpbGUodGVtcERpcmVjdG9yeSwgc3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICBy
ZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fc3RvcmFn
ZVVSTCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpzdG9yYWdl
UGF0aCBpc0RpcmVjdG9yeTpOT10pOwotICAgIHJldHVybiBTdWNjZWVkZWQ7CiB9CiAKIFJlZlB0
cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpjcmVhdGVTZXNzaW9uKCkKQEAgLTU4MCw3ICs1NzEsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFs
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1
cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VE
YXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9u
cy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7
CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CkBAIC03MTEsNyArNzAyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBbbV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJl
cXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsK
IAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxi
YWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNj
ZXNzIGNhbGxiYWNrLgogICAgIHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiBtZXRob2Qg
PSBwcm90b2NvbF9nZXRNZXRob2REZXNjcmlwdGlvbihAcHJvdG9jb2woQVZDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNzaW9uOmNvbnRlbnRLZXlSZXF1
ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVTKTsKQEAgLTExNDAsNyArMTEzMSw4IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmll
ckNoYW5nZWQoTlNEYXRhCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2Vzc2lvbklkID0gc2Vz
c2lvbklkOwotICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vz
c2lvbklkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKEFWQ29udGVudEtleVJlcG9ydEdy
b3VwKiBncm91cCwgTlNEYXRhICpzZXNzaW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IGYyYTg2Y2FiZjY4Yzg4NjgxY2MyZGZkMWVlYmY1YmJjOWQ0ZGZhYmIuLjZkZmMw
MTMzN2ZmODQ5YTc3NDJjMTFhMDAxYjYxNzkxOTFjY2NjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMTY3OCw4ICsxNjc4LDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAg
ICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7
CiAKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGlu
aXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghcGxheWVyKCktPmtl
eU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikK
QEAgLTE3MTMsNyArMTcxNiw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXRE
YXRhLnB0cigpKTsKKworICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVy
S2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9rZXlV
UklUb1JlcXVlc3RNYXAuc2V0KGtleUlELCBhdlJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCBjZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2
ZDcxYjM2OTY2MzJkLi44OTE5NjRiYWQ1NTA0OTNkY2Q3YjgxOGY3MDBhZWViZjdjYmYyYzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtOTgsNiArOTgs
MTEgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxT
dHJpbmc+JiYgdHlwZXMpCiAgICAgICAgIG1fc3VwcG9ydGVkRGF0YVR5cGVzLmFwcGVuZCh0eXBl
KTsKIH0KIAordm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3NlcykKK3sKKyAgICBtX3N1cHBvcnRlZFJvYnVzdG5lc3Mg
PSByb2J1c3RuZXNzZXMubWFwKFtdIChhdXRvJiByb2J1c3RuZXNzKSAtPiBBdG9tU3RyaW5nIHsg
cmV0dXJuIHJvYnVzdG5lc3M7IH0pOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
TW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBt
YWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CkBAIC0xMDgsMTEgKzExMywx
OCBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCiB7
CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06OnN1cHBv
cnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpOworICAgIHJldHVybiB7IH07
Cit9CisKK1ZlY3RvcjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMo
KSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCi0gICAgICAgIHJldHVybiBtX2ZhY3Rvcnkt
PnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCk7
CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25z
dApAQCAtMTM5LDcgKzE1MSw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9u
V2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5
cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkuY29udGFp
bnMoc2Vzc2lvblR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDgsMTMgKzE2MCw2
IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1l
ZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
TW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29u
c3QKLXsKLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBw
b3J0ZWRSb2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0bmVzcyk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
TWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QKIHsKICAgICBpZiAobV9mYWN0b3J5KQpAQCAt
MTk5LDcgKzIwNCw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAK
IGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFz
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghc3VwcG9ydGVkSW5p
dERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YSk7CkBAIC0yMzEsNTUgKzIzNiw0OCBAQCBN
b2NrQ0RNSW5zdGFuY2U6Ok1vY2tDRE1JbnN0YW5jZShXZWFrUHRyPE1vY2tDRE0+IGNkbSkKIHsK
IH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93
UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7Ci0gICAgaWYgKCFtX2NkbSB8fCAhbV9jZG0tPnN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKKyAgICBhdXRvIGluaXRpYWxp
emUgPSBbJl0geworICAgICAgICBpZiAoIW1fY2RtIHx8ICFtX2NkbS0+c3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbmZpZ3VyYXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAg
IHJldHVybiBTdWNjZWVkZWQ7Ci19CisgICAgICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKCFmYWN0b3J5
KQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1
ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi17Ci0gICAgaWYgKG1fZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FsbG93ZWQgPT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi0gICAg
ICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FsbG93ZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnM6Olllcyk7CiAKLSAgICBhdXRvKiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFj
dG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fs
bG93ZWQgIT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpIHsKKyAgICAgICAgICAgIGlm
ICghZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgJiYgZmFjdG9yeS0+ZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc1JlcXVpcmVtZW50KCkgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVk
KQorICAgICAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7CiAKLSAgICBpZiAoIWZhY3RvcnkgfHwg
KCFkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCAmJiBmYWN0b3J5LT5kaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQp
KQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9kaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQWxsb3dlZCA9IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkOworICAgICAgICB9
CiAKLSAgICBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkID0gZGlzdGluY3RpdmVJZGVu
dGlmaWVyc0FsbG93ZWQ7Ci0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKLX0KKyAgICAgICAgYm9vbCBw
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gKHBlcnNpc3RlbnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3Rl
bnRTdGF0ZTo6WWVzKTsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFu
Y2U6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
KQotewotICAgIGlmIChtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPT0gcGVyc2lzdGVudFN0YXRl
QWxsb3dlZCkKLSAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICAgICAgaWYgKG1fcGVyc2lz
dGVudFN0YXRlQWxsb3dlZCAhPSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKSB7CisgICAgICAgICAg
ICBpZiAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKLQotICAgIGlmICghZmFjdG9yeSB8
fCAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpKQotICAgICAgICBy
ZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVy
c2lzdGVudFN0YXRlQWxsb3dlZDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gU3VjY2VlZGVk
OworICAgIH07CiAKLSAgICBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkOwotICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgY2FsbGJhY2soaW5pdGlhbGl6
ZSgpKTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUpCit2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgU3RyaW5n
VmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNh
dGUtPnNpemUoKSk7CiAKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpKQotICAgICAgICByZXR1cm4gU3VjY2VlZGVkOwotICAgIHJl
dHVybiBGYWlsZWQ7CisgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KIAotQ0RN
SW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJikKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgLy8gT24gZGlzayBzdG9yYWdlIGlzIHVudXNlZDsg
bm8tb3AuCi0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKIH0KIAogY29uc3QgU3RyaW5nJiBNb2NrQ0RN
SW5zdGFuY2U6OmtleVN5c3RlbSgpIGNvbnN0CkBAIC0zMjUsNyArMzIzLDcgQEAgdm9pZCBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNl
LmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1
ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9y
eSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlm
ICghZmFjdG9yeSkgewpAQCAtMzMzLDcgKzMzMSw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUs
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZl
Y3RvciA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAn
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+
ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNl
VmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCmluZGV4IDM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5ZjEuLjM3MGI2
ZTI4MGQ5MWRiYTY3OWFiNDBjNWM2NDY0Y2NiYzM5MDI2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIGNvbnN0
IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkgY29u
c3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7IH0KICAgICB2b2lkIHNldFN1cHBv
cnRlZFNlc3Npb25UeXBlcyhWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mJiB0eXBlcykgeyBt
X3N1cHBvcnRlZFNlc3Npb25UeXBlcyA9IFdURk1vdmUodHlwZXMpOyB9CiAKLSAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vw
cG9ydGVkUm9idXN0bmVzczsgfQotICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3MpIHsgbV9zdXBwb3J0ZWRSb2J1c3RuZXNzID0gV1RGTW92
ZShyb2J1c3RuZXNzKTsgfQorICAgIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgc3VwcG9ydGVk
Um9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsgfQorICAg
IHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmKTsKIAogICAgIE1l
ZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50OyB9CiAgICAg
dm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoTWVkaWFLZXlzUmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQpIHsgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQg
PSByZXF1aXJlbWVudDsgfQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5
c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBNZWRpYUtleXNSZXF1
aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRE
YXRhVHlwZXM7CiAgICAgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+IG1fc3VwcG9ydGVkU2Vz
c2lvblR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkUm9idXN0bmVzczsKKyAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwogICAgIFZlY3RvcjxN
ZWRpYUtleUVuY3J5cHRpb25TY2hlbWU+IG1fc3VwcG9ydGVkRW5jcnlwdGlvblNjaGVtZXM7CiAg
ICAgYm9vbCBtX3JlZ2lzdGVyZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3Rh
bmNlcyB7IHRydWUgfTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKLWNsYXNz
IE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1vY2tD
RE0+IHsKK2NsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0
b3J5Pik7CkBAIC0xMDksMTEgKzEwOSwxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBNb2NrQ0RNSW5zdGFuY2U7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBl
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMo
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJl
bWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmlu
YWw7CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQo
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJl
VW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0IGZpbmFsOwpAQCAtMTM4LDExICsxMzgsOSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQotICAgIFN1Y2Nlc3NWYWx1
ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmll
cnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0U3Rv
cmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTdG9yYWdl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOwogCkBAIC0xNTcsNyArMTU1LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA1ZWZlNjYyNWQ2
ZjJmOTBhZGVkNzdkOGM1NTk3ZGYzYzc4OGYzMWRiLi41YjBmYTE5Y2UyZWIyZTNlODM5MDE0OGUx
NTY2NDg3ZGMwODkzYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC00OTAsMTAgKzQ5MCw5IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJD
YWNoZWRLZXlGb3JLZXlJZChjb25zdCBTCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSop
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE2YmIyZGRmYTIxNDc0NzBlODYwMGFiNzEzOTZh
NTljZGY1NDQ5ZmEuLjRhNzM5ZmI0ZjliNWQ2NzNkNGU5ZjJiNWFmNTM5NTFlM2VlZGQwY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxh
eWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9pZCBtZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKQEAg
LTI1Miw2ICsyNTIsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpMYXlvdXRSZWN0IG1fdmlk
ZW9Db250ZW50Qm94UmVjdDsKICAgICBmbG9hdCBtX3ZpZGVvQ29udGVudFNjYWxlIHsgMS4wIH07
CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICBib29sIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCB7IGZhbHNl
IH07CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbV9sb2dnZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IDM5MTJiNDAxNGExMTAxYjNm
MjE0MDQ3ODIwMWI1M2IxYzczYTE0NDguLjNkNDNhYzg0OGQzZGJiZjkxNGJiMDVkN2RiODEyZTIx
NjI0Nzg5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0
aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00Nyw0
ICs0OCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gV2Vi
TWVkaWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdAogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQordm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZh
Y3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpCit7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKaW5kZXggZTE5YTUz
YWZmYzhhYmU0MzIxZGVlZGFlNTFiODIyM2JhMTJiNzEzYi4uNTM0MDE0MTkwYWNjNjc5ZjRhYWI4
ZWIyYWZlODU2ZTM4MTQwMGNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKQEAgLTQyLDYgKzQyLDkgQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2smLAogICAgICAgICBjb25z
dCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgb3ZlcnJp
ZGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgcmVnaXN0
ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPENETUZhY3RvcnkqPiYpIG92ZXJyaWRlOworI2VuZGlmCiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3MgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDYwZjM0NTE3OWY0OTE0Yjc3
OWEwYTJiN2FhNzVlZjQzZGI2ZTFmM2UuLjIzMzBjNGE5OTA3Yzk1MDY2MDFmYzY4YWQzYmJkOTJi
Mzc1MDAwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTczLDYgKzczLDEy
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoY2Fs
bGJhY2ssIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICB2b2lkIHJlZ2lzdGVyQ0RNRmFjdG9yaWVzKFZlY3RvcjxDRE1GYWN0
b3J5Kj4mIGZhY3RvcmllcykKKyAgICB7CisgICAgICAgIHJldHVybiBXZUNvcmU6OkNETUZhY3Rv
cnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsKKyAgICB9CisjZW5kaWYK
IH07CiAKIE1lZGlhU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTWVkaWFT
dHJhdGVneSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391982</attachid>
            <date>2020-02-28 08:19:33 -0800</date>
            <delta_ts>2020-02-28 09:49:30 -0800</delta_ts>
            <desc>Patch for landing: Part 1: WebCore</desc>
            <filename>bug-208090-20200228081932.patch</filename>
            <type>text/plain</type>
            <size>156681</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM2ZGFjZjZmZWE3MTU3
YzdhNDkyMGFhMzMxNjMwZDkzNWNiMzYwMS4uMGNjYzhjODY5ZTI3ZTE0ODJkNGY2OWQ4ZTBiMDRh
ZWYzYWQwY2UxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0wMi0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50
IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIFRvIGVuYWJsZSBjYWNoaW5nIG9mIGNlcnRhaW4gQ0RN
IHByb3BlcnRpZXMsIGFsbG93IHRoZW0gdG8gYmUgZmV0Y2hlZCByYXRoZXIgdGhhbiBxdWVyaWVz
LiBBcyBzdWNoLAorICAgICAgICBDRE1Qcml2YXRlOjpzdXBwb3J0c0luaXREYXRhVHlwZSAtPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzLCBzdXBwb3J0c1JvYnVzdG5lc3MgLT4gc3VwcG9ydGVkUm9i
dXN0bmVzc2VzLgorCisgICAgICAgIFRvIGVuYWJsZSBDRE0gdHlwZXMgdG8gYmUgcGFzc2VkIGFj
cm9zcyBYUEMsIGFkZCBleHBsaWNpdCBzaXplcyB0byB0aGUgZW51bWVyYXRpb25zLCBhbmQgYWRk
IGVuY29kZSBhbmQKKyAgICAgICAgZGVjb2RlIHRlbXBsYXRlcyB0byB0aGUgZGF0YSB0eXBlcy4K
KworICAgICAgICBUbyBlbmFibGUgYXN5bmMgbWVzc2FnaW5nIGZvcm0gdGhlIEdQVSBwcm9jZXNz
J3MgTWVkaWFQbGF5ZXIsIHNlbmQgdGhlIE1lZGlhUGxheWVyIHRoZSBpbmZvcm1hdGlvbiBpdAor
ICAgICAgICBuZWVkcyB3aGVuIGJvdGggbGVnYWN5LSBhbmQgbW9kZXJuLUVNRSBBUElzIGFyZSBi
b3RoIGVuYWJsZWQsIHJhdGhlciB0aGFuIGFsbG93IHRoZSBNZWRpYVBsYXllclByaXZhdGUKKyAg
ICAgICAgdG8gcXVlcnkgdGhlIE1lZGlhUGxheWVyLgorCisgICAgICAgIE1vdmUgbW9zdCBvZiB0
aGUgYWxnb3JpdGhpbWljIGltcGxlbWVudGF0aW9uIGZyb20gQ0RNIGludG8gQ0RNUHJpdmF0ZSwg
YWxsb3dpbmcgaXQgdG8gYmUgcnVuIGZyb20gd2l0aGluCisgICAgICAgIHRoZSBHUFUgcHJvY2Vz
cy4gU2ltaWxtYXJseSwgbWFrZSBtb3N0IG9mIHRoZSBzeW5jaHJvbm91cyBtZXRob2RzIGluIENE
TUluc3RhbmNlIGluc3RlYWQgdGFrZSBhIGNhbGxiYWNrCisgICAgICAgIHBhcmFtZXRlciwgYWxs
b3dpbmcgdGhlbSB0byBiZSBpbXBsZW1lbnRlZCBpbiBhIHJlbW90ZSBwcm9jZXNzLgorCisgICAg
ICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN5
c3RlbUFjY2Vzczo6Y3JlYXRlTWVkaWFLZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNl
cnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJO
ZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
S2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5n
aW5lV2FzVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1LZXlTdGF0dXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETU1lZGlhQ2Fw
YWJpbGl0eTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETU1lZGlhQ2FwYWJp
bGl0eTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNz
YWdlVHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlOjpkb1N1cHBvcnRlZENvbmZpZ3Vy
YXRpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGU6OmlzUGVyc2lzdGVudFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0
aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0
Q29uc2VudFN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJp
dmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmg6
CisgICAgICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmtleU5lZWRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3Jh
cHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE06OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NETTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzIGNvbnN0KToK
KwogMjAyMC0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBDcmVhdGUgQXVkaW9EZXN0aW5hdGlvbiBpbiB0aGUgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NjkyNTk3NTE1ZjY4NTkwNGRmMTdiYWE2OGZlYTljNzc4MmU3YzgxNy4uMWVlNDllNjkxNjVmOWUz
ZjQyZTlkMDRjNDc2YmJmMTU1ZjUzYmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
UF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkb3B0IGNoYW5nZXMgdG8gTWVk
aWFQbGF5ZXJQcm94eS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJN
ZWRpYVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJhdGVneTo6cmVn
aXN0ZXJDRE1GYWN0b3JpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1l
ZGlhU3RyYXRlZ3kuaDoKKwogMjAyMC0wMi0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQW5ub3RhdGUgbWVkaWFUeXBlIHdpdGggYW4gYXZhaWxhYmlsaXR5
IG1hY3JvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkNGQwZmUzYjZhZDBjYjE2
NjI3YjZmYjRlNWZiOWViNDQxNjVjZTMuLmY4ZWFkNjI5NzQyMGNlMzNlMjEyY2Y4Mzg5YTg3MzFl
Y2M2Zjk3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0wMi0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkb3B0IGNoYW5nZXMgdG8g
UGxhdGZvcm1TdHJhdGVnaWVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBDcmVhdGUgQXVkaW9EZXN0aW5hdGlvbiBpbiB0aGUgR1BV
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGRjMTNhOGMwM2Q4Y2Y0NWYyODIxZmNjNmFl
MjI4N2NiZTBhZmIzNTYuLjZlODNlZWNiZDZkMTE1NDFhNzIyZWRmNDM1ODg1ZDgxOWM3YTQxZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTAzNSw2ICsxMDM1LDIwIEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCiAgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKIAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAor
ICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorICAgIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZVNlc3Npb24uaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0
YXR1cy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgK
KyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisgICAgcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
LmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAorICAgIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKKwogICAgIHBsYXRmb3JtL2dh
bWVwYWQvR2FtZXBhZFByb3ZpZGVyLmgKICAgICBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92
aWRlckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDRiYmIy
YmNlNjE4NzRiN2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAuLmM1NWJlMDY0MjE2NTAwZWQwYjI3
ZDVhOWU5Y2M5NjIxZjdhNGEwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKQEAgLTc5LDUxMCArNzksMTggQEAgdm9pZCBDRE06OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRl
Q29uZmkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNn
ZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRpb24KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkg
Tm92ZW1iZXIgMjAxNgorICAgIC8vIEltcGxlbWVudGVkIGluIENETVByaXZhdGU6OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oKQogCi0gICAgLy8gMy4xLjEuMSBHZXQgU3VwcG9ydGVkIENvbmZp
Z3VyYXRpb24KLSAgICAvLyBHaXZlbiBhIEtleSBTeXN0ZW1zIGltcGxlbWVudGF0aW9uIGltcGxl
bWVudGF0aW9uLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlIGNvbmZpZ3Vy
YXRpb24sIGFuZCBvcmlnaW4sCi0gICAgLy8gdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBv
cnRlZCBjb25maWd1cmF0aW9uIG9yIE5vdFN1cHBvcnRlZCBhcyBhcHByb3ByaWF0ZS4KLQotICAg
IC8vIDEuIExldCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBiZSBDb25zZW50RGVuaWVkLgotICAg
IC8vIDIuIEluaXRpYWxpemUgcmVzdHJpY3Rpb25zIHRvIGluZGljYXRlIHRoYXQgbm8gY29uZmln
dXJhdGlvbnMgaGF2ZSBoYWQgdXNlciBjb25zZW50IGRlbmllZC4KLSAgICBNZWRpYUtleXNSZXN0
cmljdGlvbnMgcmVzdHJpY3Rpb25zIHsgfTsKLSAgICBkb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25T
dGVwKFdURk1vdmUoY2FuZGlkYXRlQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25z
KSwgV1RGTW92ZShjYWxsYmFjaykpOwotfQotCi12b2lkIENETTo6ZG9TdXBwb3J0ZWRDb25maWd1
cmF0aW9uU3RlcChNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1
cmF0aW9uLCBNZWRpYUtleXNSZXN0cmljdGlvbnMmJiByZXN0cmljdGlvbnMsIFN1cHBvcnRlZENv
bmZpZ3VyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbgotICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2LCBjdGQuCi0KLSAgICAvLyAz
LjEuMS4xIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbgotICAgIC8vIDMuIFJlcGVhdCB0aGUg
Zm9sbG93aW5nIHN0ZXAgd2hpbGUgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gaXMgQ29uc2VudERl
bmllZDoKLSAgICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBhbmQsIGlmIHBy
b3ZpZGVkLCByZXN0cmljdGlvbnMgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlCi0gICAg
Ly8gR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50IGFsZ29yaXRobSB3aXRo
IGltcGxlbWVudGF0aW9uLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwKLSAgICAvLyByZXN0cmlj
dGlvbnMgYW5kIG9yaWdpbi4KLSAgICBhdXRvIG9wdGlvbmFsQ29uZmlndXJhdGlvbiA9IGdldFN1
cHBvcnRlZENvbmZpZ3VyYXRpb24oY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KTsKLSAgICBpZiAoIW9wdGlvbmFsQ29uZmlndXJhdGlvbikgeworICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IGlmICghZG9jdW1lbnQgfHwgIW1fcHJpdmF0ZSkgewogICAgICAgICBjYWxsYmFjayhXVEY6Om51
bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb25zZW50Q2FsbGJh
Y2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChDb25zZW50U3RhdHVzIHN0YXR1cywgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiYgY29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYgcmVzdHJpY3Rpb25z
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAgY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICAvLyAzLjEuMS4yIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbiBhbmQgQ29uc2VudCwgY3Rk
LgotICAgICAgICAvLyAyMi4gTGV0IGNvbnNlbnQgc3RhdHVzIGFuZCB1cGRhdGVkIHJlc3RyaWN0
aW9ucyBiZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIEdldCBDb25zZW50IFN0YXR1cyBhbGdv
cml0aG0gb24gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwKLSAgICAgICAgLy8gICAgIHJlc3Ry
aWN0aW9ucyBhbmQgb3JpZ2luIGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2Yg
Y29uc2VudCBzdGF0dXMgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgICAgIHN3aXRjaCAo
c3RhdHVzKSB7Ci0gICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmllZDoKLSAg
ICAgICAgICAgIC8vIOKGsyBDb25zZW50RGVuaWVkOgotICAgICAgICAgICAgLy8gICAgUmV0dXJu
IENvbnNlbnREZW5pZWQgYW5kIHVwZGF0ZWQgcmVzdHJpY3Rpb25zLgotICAgICAgICAgICAgd2Vh
a1RoaXMtPmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoV1RGTW92ZShjb25maWd1cmF0aW9u
KSwgV1RGTW92ZShyZXN0cmljdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSBDb25zZW50U3RhdHVzOjpJbmZvcm1Vc2VyOgotICAg
ICAgICAgICAgLy8g4oazIEluZm9ybVVzZXIKLSAgICAgICAgICAgIC8vICAgIEluZm9ybSB0aGUg
dXNlciB0aGF0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgaW4gdXNlIGluIHRoZSBvcmln
aW4gaW5jbHVkaW5nLCBzcGVjaWZpY2FsbHksIHRoZSBpbmZvcm1hdGlvbiB0aGF0Ci0gICAgICAg
ICAgICAvLyAgICBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9vciBEaXN0aW5jdGl2ZSBQ
ZXJtYW5lbnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZSB3aWxsIGJlIHVzZWQgaWYgdGhl
Ci0gICAgICAgICAgICAvLyAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgInJlcXVpcmVkIi4gQ29udGludWUgdG8gdGhlIG5leHQg
c3RlcC4KLSAgICAgICAgICAgIC8vIE5PVEU6IEltcGxlbWVudC4KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6QWxsb3dlZDoKLSAgICAgICAgICAgIC8v
IOKGsyBBbGxvd2VkOgotICAgICAgICAgICAgLy8gQ29udGludWUgdG8gdGhlIG5leHQgc3RlcC4K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8vIDIzLiBSZXR1cm4gYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjb25maWd1
cmF0aW9uKSk7Ci0gICAgfTsKLSAgICBnZXRDb25zZW50U3RhdHVzKFdURk1vdmUob3B0aW9uYWxD
b25maWd1cmF0aW9uLnZhbHVlKCkpLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucyksIFdURk1vdmUoY29u
c2VudENhbGxiYWNrKSk7Ci19Ci0KLWJvb2wgQ0RNOjppc1BlcnNpc3RlbnRUeXBlKE1lZGlhS2V5
U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUpCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jaXMtcGVyc2lzdGVudC1zZXNzaW9uLXR5cGUKLSAgICAvLyBXM0Mg
RWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotCi0gICAgLy8gNS4xLjEuIElzIHBlcnNp
c3RlbnQgc2Vzc2lvbiB0eXBlPwotICAgIC8vIDEuIExldCB0aGUgc2Vzc2lvbiB0eXBlIGJlIHRo
ZSBzcGVjaWZpZWQgTWVkaWFLZXlTZXNzaW9uVHlwZSB2YWx1ZS4KLSAgICAvLyAyLiBGb2xsb3cg
dGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2Ygc2Vzc2lvbiB0eXBlIGZyb20gdGhlIGZvbGxvd2lu
ZyBsaXN0OgotICAgIHN3aXRjaCAoc2Vzc2lvblR5cGUpIHsKLSAgICBjYXNlIE1lZGlhS2V5U2Vz
c2lvblR5cGU6OlRlbXBvcmFyeToKLSAgICAgICAgLy8g4oazICJ0ZW1wb3JhcnkiCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1lZGlhS2V5U2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRM
aWNlbnNlOgotICAgIGNhc2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVj
b3JkOgotICAgICAgICAvLyDihrMgInBlcnNpc3RlbnQtbGljZW5zZSIKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1PcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETTo6Z2V0
U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYgcmVzdHJpY3Rp
b25zKQotewotICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dl
dC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbi1hbmQtY29uc2VudAotICAgIC8vIFczQyBFZGl0b3In
cyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2Ci0KLSAgICBBU1NFUlQobV9wcml2YXRlKTsKLSAgICBp
ZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIC8vIDMu
MS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50Ci0gICAgLy8gR2l2
ZW4gYSBLZXkgU3lzdGVtcyBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbiwgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLAotICAgIC8vIHJlc3Ry
aWN0aW9ucyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIGEgc3VwcG9ydGVkIGNv
bmZpZ3VyYXRpb24sIE5vdFN1cHBvcnRlZCwgb3IgQ29uc2VudERlbmllZAotICAgIC8vIGFzIGFw
cHJvcHJpYXRlIGFuZCwgaW4gdGhlIENvbnNlbnREZW5pZWQgY2FzZSwgcmVzdHJpY3Rpb25zLgot
Ci0gICAgLy8gMS4gTGV0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBuZXcgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uIGRpY3Rpb25hcnkuCi0gICAgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiB7IH07Ci0KLSAgICAvLyAyLiBTZXQg
dGhlIGxhYmVsIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFsIHRo
ZSBsYWJlbCBtZW1iZXIgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24uCi0gICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmxhYmVsID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5sYWJlbDsKLQot
ICAgIC8vIDMuIElmIHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbiBpcyBub24tZW1wdHksIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgIGlmICgh
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLmlzRW1wdHkoKSkgewotICAgICAg
ICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgdHlwZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgRE9N
U3RyaW5ncy4KLSAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkVHlwZXM7Ci0KLSAgICAg
ICAgLy8gMy4yLiBGb3IgZWFjaCB2YWx1ZSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGlu
aXREYXRhVHlwZXMgbWVtYmVyOgotICAgICAgICBmb3IgKGF1dG8gaW5pdERhdGFUeXBlIDogY2Fu
ZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKSB7Ci0gICAgICAgICAgICAvLyAzLjIu
MS4gTGV0IGluaXREYXRhVHlwZSBiZSB0aGUgdmFsdWUuCi0gICAgICAgICAgICAvLyAzLjIuMi4g
SWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGdlbmVyYXRpbmcgcmVxdWVzdHMgYmFzZWQg
b24gaW5pdERhdGFUeXBlLCBhZGQgaW5pdERhdGFUeXBlCi0gICAgICAgICAgICAvLyAgICAgICAg
dG8gc3VwcG9ydGVkIHR5cGVzLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4g
VGhlIGVtcHR5IHN0cmluZyBpcyBuZXZlciBzdXBwb3J0ZWQuCi0gICAgICAgICAgICBpZiAoaW5p
dERhdGFUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgaWYgKG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBlKGlu
aXREYXRhVHlwZSkpCi0gICAgICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKGluaXRE
YXRhVHlwZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAzLjMuIElmIHN1cHBvcnRlZCB0eXBl
cyBpcyBlbXB0eSwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKHN1cHBvcnRlZFR5
cGVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAg
ICAgLy8gMy40LiBTZXQgdGhlIGluaXREYXRhVHlwZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNv
bmZpZ3VyYXRpb24gdG8gc3VwcG9ydGVkIHR5cGVzLgotICAgICAgICBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24uaW5pdERhdGFUeXBlcyA9IFdURk1vdmUoc3VwcG9ydGVkVHlwZXMpOwotICAgIH0K
LQotICAgIC8vIDQuIExldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVtZW50IGJlIHRo
ZSB2YWx1ZSBvZiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmll
ciBtZW1iZXIuCi0gICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVy
UmVxdWlyZW1lbnQgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
cjsKLQotICAgIC8vIDUuIElmIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQgaXMg
Im9wdGlvbmFsIiBhbmQgRGlzdGluY3RpdmUgSWRlbnRpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGFj
Y29yZGluZyB0bwotICAgIC8vICAgIHJlc3RyaWN0aW9ucywgc2V0IGRpc3RpbmN0aXZlIGlkZW50
aWZpZXIgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICBpZiAoZGlzdGluY3RpdmVJ
ZGVudGlmaWVyUmVxdWlyZW1lbnQgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYm
IHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQpCi0gICAgICAgIGRpc3Rp
bmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFs
bG93ZWQ7Ci0KLSAgICAvLyA2LiBGb2xsb3cgdGhlIHN0ZXBzIGZvciBkaXN0aW5jdGl2ZSBpZGVu
dGlmaWVyIHJlcXVpcmVtZW50IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIHN3aXRjaCAo
ZGlzdGluY3RpdmVJZGVudGlmaWVyUmVxdWlyZW1lbnQpIHsKLSAgICBjYXNlIE1lZGlhS2V5c1Jl
cXVpcmVtZW50OjpSZXF1aXJlZDoKLSAgICAgICAgLy8g4oazICJyZXF1aXJlZCIKLSAgICAgICAg
Ly8gSWYgdGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdXNlIG9mIERpc3RpbmN0
aXZlIElkZW50aWZpZXIocykgaW4gY29tYmluYXRpb24KLSAgICAgICAgLy8gd2l0aCBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQu
Ci0gICAgICAgIGlmIChtX3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVx
dWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
OgotICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgotICAgICAgICAvLyBDb250aW51ZSB3aXRoIHRo
ZSBmb2xsb3dpbmcgc3RlcHMuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNZWRpYUtleXNS
ZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKLSAgICAgICAgLy8g4oazICJub3QtYWxsb3dlZCIKLSAg
ICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJ
ZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVyKHMpCi0gICAg
ICAgIC8vIGluIGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQg
cmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgotICAgICAgICBpZiAobV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0
aW9uLCByZXN0cmljdGlvbnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIC8vIDcuIFNldCB0aGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFsIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWly
ZW1lbnQuCi0gICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
ciA9IGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50OwotCi0gICAgLy8gOC4gTGV0IHBl
cnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGNhbmRp
ZGF0ZSBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIG1lbWJlci4KLSAgICBNZWRpYUtl
eXNSZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCA9IGNhbmRpZGF0ZUNvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlOwotCi0gICAgLy8gOS4gSWYgcGVyc2lzdGVudCBzdGF0
ZSByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwiIGFuZCBwZXJzaXN0aW5nIHN0YXRlIGlzIG5vdCBh
bGxvd2VkIGFjY29yZGluZyB0byByZXN0cmljdGlvbnMsCi0gICAgLy8gICAgc2V0IHBlcnNpc3Rl
bnQgc3RhdGUgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICBpZiAocGVyc2lzdGVu
dFN0YXRlUmVxdWlyZW1lbnQgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYmIHJl
c3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQpCi0gICAgICAgIHBlcnNpc3RlbnRTdGF0
ZVJlcXVpcmVtZW50ID0gIE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwotCi0gICAg
Ly8gMTAuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQg
ZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgc3dpdGNoIChwZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudCkgewotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOgotICAg
ICAgICAvLyDihrMgInJlcXVpcmVkIgotICAgICAgICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBwZXJzaXN0aW5nIHN0YXRlIGluIGNvbWJpbmF0aW9uIHdpdGggYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbgotICAgICAgICAvLyBhbmQgcmVzdHJpY3Rpb25zLCByZXR1
cm4gTm90U3VwcG9ydGVkLgotICAgICAgICBpZiAobV9wcml2YXRlLT5wZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVk
aWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6
Ok9wdGlvbmFsOgotICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgotICAgICAgICAvLyBDb250aW51
ZSB3aXRoIHRoZSBmb2xsb3dpbmcgc3RlcHMuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKLSAgICAgICAgLy8g4oazICJub3QtYWxs
b3dlZCIKLSAgICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHBlcnNpc3Rp
bmcgc3RhdGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0g
ICAgICAgIC8vIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQKLSAgICAgICAg
aWYgKG1fcHJpdmF0ZS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLCByZXN0cmljdGlvbnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJl
ZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIC8vIDExLiBTZXQgdGhlIHBlcnNpc3RlbnRTdGF0ZSBtZW1iZXIgb2YgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiB0byBlcXVhbCB0aGUgdmFsdWUgb2YgcGVyc2lzdGVudCBzdGF0
ZSByZXF1aXJlbWVudC4KLSAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0
YXRlID0gcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQ7Ci0KLSAgICAvLyAxMi4gRm9sbG93IHRo
ZSBzdGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dp
bmcgbGlzdDoKLSAgICBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4gc2Vzc2lvblR5cGVzOwot
Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnNlc3Npb25UeXBlcy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgLy8g4oazIElmIHRoZSBzZXNzaW9uVHlwZXMgbWVtYmVyIGlzIHByZXNlbnQg
W1dlYklETF0gaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgLy8gTGV0IHNlc3Np
b24gdHlwZXMgYmUgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBzZXNzaW9uVHlwZXMgbWVtYmVy
LgotICAgICAgICBzZXNzaW9uVHlwZXMgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLnNlc3Npb25U
eXBlczsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCi0gICAgICAgIC8v
IExldCBzZXNzaW9uIHR5cGVzIGJlIFsgInRlbXBvcmFyeSIgXS4KLSAgICAgICAgc2Vzc2lvblR5
cGVzID0geyBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkgfTsKLSAgICB9Ci0KLSAgICAv
LyAxMy4gRm9yIGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0eXBlczoKLSAgICBmb3IgKGF1dG8mIHNl
c3Npb25UeXBlIDogc2Vzc2lvblR5cGVzKSB7Ci0gICAgICAgIC8vIDEzLjEuIExldCBzZXNzaW9u
IHR5cGUgYmUgdGhlIHZhbHVlLgotICAgICAgICAvLyAxMy4yLiBJZiBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVlIGlzICJub3QtYWxsb3dlZCIgYW5kIHRo
ZQotICAgICAgICAvLyAgICAgICBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8gYWxnb3JpdGht
IHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAg
ICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IE1lZGlh
S2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5
cGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICAvLyAxMy4z
LiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzZXNzaW9uIHR5cGUgaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIC8vICAg
ICAgIGFuZCByZXN0cmljdGlvbnMgZm9yIG90aGVyIHJlYXNvbnMsIHJldHVybiBOb3RTdXBwb3J0
ZWQuCi0gICAgICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oc2Vzc2lvblR5cGUsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDEzLjQgSWYgYWNjdW11bGF0
ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSBpcyAib3B0aW9uYWwiIGFu
ZCB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIElzCi0gICAgICAgIC8vICAgICAgcGVyc2lzdGVu
dCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSBvbiBzZXNzaW9uIHR5cGUgaXMgdHJ1ZSwgY2hhbmdl
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUKLSAgICAgICAgLy8g
ICAgICB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1
cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwg
JiYgaXNQZXJzaXN0ZW50VHlwZShzZXNzaW9uVHlwZSkpCi0gICAgICAgICAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJl
cXVpcmVkOwotICAgIH0KLQotICAgIC8vIDE0LiBTZXQgdGhlIHNlc3Npb25UeXBlcyBtZW1iZXIg
b2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBzZXNzaW9uIHR5cGVzLgotICAgIGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMgPSBzZXNzaW9uVHlwZXM7Ci0KLSAgICAv
LyAxNS4gSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIGFuZCBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXJzIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uIGFyZSBib3RoIGVtcHR5LCByZXR1cm4gTm90
U3VwcG9ydGVkLgotICAgIGlmIChjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVvQ2FwYWJpbGl0
aWVzLmlzRW1wdHkoKSAmJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIC8vIDE2LiDi
hrMgSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJh
dGlvbiBpcyBub24tZW1wdHk6Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVv
Q2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICAvLyAxNi4xLiBMZXQgdmlkZW8gY2Fw
YWJpbGl0aWVzIGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBHZXQgU3VwcG9ydGVkIENh
cGFiaWxpdGllcyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0gb24KLSAgICAgICAgLy8g
ICAgICAgVmlkZW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgdmlkZW9DYXBhYmlsaXRpZXMg
bWVtYmVyLCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVzdHJpY3Rpb25zLgotICAg
ICAgICBhdXRvIHZpZGVvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9y
QXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5cGU6OlZpZGVvLCBjYW5kaWRhdGVDb25maWd1cmF0
aW9uLnZpZGVvQ2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0
aW9ucyk7Ci0KLSAgICAgICAgLy8gMTYuMi4gSWYgdmlkZW8gY2FwYWJpbGl0aWVzIGlzIG51bGws
IHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDE2LjMgU2V0IHRo
ZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0
byB2aWRlbyBjYXBhYmlsaXRpZXMuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi52
aWRlb0NhcGFiaWxpdGllcyA9IFdURk1vdmUodmlkZW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLy8gMTYuIOKGsyBPdGhlcndpc2U6Ci0gICAgICAgIC8vICAg
ICBTZXQgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1
cmF0aW9uIHRvIGFuIGVtcHR5IHNlcXVlbmNlLgotICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24udmlkZW9DYXBhYmlsaXRpZXMgPSB7IH07Ci0gICAgfQotCi0gICAgLy8gMTcuIOKGsyBJ
ZiB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9u
IGlzIG5vbi1lbXB0eToKLSAgICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24uYXVkaW9DYXBh
YmlsaXRpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIDE3LjEuIExldCBhdWRpbyBjYXBhYmls
aXRpZXMgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIEdldCBTdXBwb3J0ZWQgQ2FwYWJp
bGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlIGFsZ29yaXRobSBvbgotICAgICAgICAvLyAgICAg
ICBBdWRpbywgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXIsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMuCi0gICAgICAg
IGF1dG8gYXVkaW9DYXBhYmlsaXRpZXMgPSBnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRp
b1ZpZGVvVHlwZShBdWRpb1ZpZGVvVHlwZTo6QXVkaW8sIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24u
YXVkaW9DYXBhYmlsaXRpZXMsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KTsKLQotICAgICAgICAvLyAxNy4yLiBJZiBhdWRpbyBjYXBhYmlsaXRpZXMgaXMgbnVsbCwgcmV0
dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgLy8gMTcuMyBTZXQgdGhlIGF1
ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGF1
ZGlvIGNhcGFiaWxpdGllcy4KLSAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmF1ZGlv
Q2FwYWJpbGl0aWVzID0gV1RGTW92ZShhdWRpb0NhcGFiaWxpdGllcy52YWx1ZSgpKTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyAxNy4g4oazIE90aGVyd2lzZToKLSAgICAgICAgLy8gICAgIFNl
dCB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRp
b24gdG8gYW4gZW1wdHkgc2VxdWVuY2UuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlv
bi5hdWRpb0NhcGFiaWxpdGllcyA9IHsgfTsKLSAgICB9Ci0KLSAgICAvLyAxOC4gSWYgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmllciB2YWx1ZSBpcyAib3B0
aW9uYWwiLCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcKLSAgICAvLyAg
ICAgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIGlmIChhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpPcHRpb25hbCkgewotICAgICAgICAvLyDihrMgSWYgdGhlIGltcGxlbWVudGF0aW9uIHJl
cXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1h
bmVudCBJZGVudGlmaWVyKHMpIGZvciBhbnkgb2YgdGhlCi0gICAgICAgIC8vICAgIGNvbWJpbmF0
aW9ucyBpbiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIGlmIChtX3ByaXZhdGUt
PmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRp
b24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSB7Ci0g
ICAgICAgICAgICAvLyBDaGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0
aXZlSWRlbnRpZmllciB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpSZXF1aXJlZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIOKGsyBPdGhl
cndpc2UKLSAgICAgICAgICAgIC8vICAgIENoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9u
J3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRvICJub3QtYWxsb3dlZCIuCi0gICAgICAg
ICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID0gTWVk
aWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyAxOS4gSWYgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1
ZSBpcyAib3B0aW9uYWwiLCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcK
LSAgICAvLyAgICAgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIGlmIChh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IE1lZGlhS2V5c1JlcXVp
cmVtZW50OjpPcHRpb25hbCkgewotICAgICAgICAvLyDihrMgSWYgdGhlIGltcGxlbWVudGF0aW9u
IHJlcXVpcmVzIHBlcnNpc3Rpbmcgc3RhdGUgZm9yIGFueSBvZiB0aGUgY29tYmluYXRpb25zIGlu
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgaWYgKG1fcHJpdmF0ZS0+cGVyc2lz
dGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkgewotICAgICAgICAgICAgLy8g
Q2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUg
dG8gInJlcXVpcmVkIi4KLSAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQ7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCi0gICAgICAgICAgICAvLyAgICBD
aGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0
byAibm90LWFsbG93ZWQiLgotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBl
cnNpc3RlbnRTdGF0ZSA9IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25maWd1
cmF0aW9uIHNwZWNpZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhY2N1
bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90
IGFsbG93ZWQgaW4gdGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICBpZiAoIW1f
cHJpdmF0ZS0+c3VwcG9ydHNDb25maWd1cmF0aW9uKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBpZiAo
IWRvY3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCiAgICAgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwogICAgIFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4gPSBkb2N1bWVudC0+dG9wT3JpZ2luKCk7Ci0KLSAgICBpZiAoKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkIHx8IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0
ZW50U3RhdGUgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSAmJiAhb3JpZ2luLmNh
bkFjY2Vzc0xvY2FsU3RvcmFnZSgmdG9wT3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247Ci0gICAgLy8gTk9U
RTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0dXMoKS4KLX0KLQotT3B0aW9uYWw8VmVjdG9y
PE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmls
aXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShDRE06OkF1ZGlvVmlkZW9UeXBlIHR5cGUsIGNvbnN0IFZl
Y3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4mIHJlcXVlc3RlZENhcGFiaWxpdGll
cywgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlv
biwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCi17Ci0gICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jYXBhYmlsaXRp
ZXMtZm9yLWF1ZGlvLXZpZGVvLXR5cGUKLSAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92
ZW1iZXIgMjAxNgotCi0gICAgQVNTRVJUKG1fcHJpdmF0ZSk7Ci0gICAgaWYgKCFtX3ByaXZhdGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAvLyAzLjEuMS4zIEdldCBTdXBw
b3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlCi0KLSAgICAvLyBHaXZlbiBh
biBhdWRpby92aWRlbyB0eXBlLCBNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eSBzZXF1ZW5j
ZSByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24KLSAgICAvLyBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMsIHRoaXMg
YWxnb3JpdGhtIHJldHVybnMgYSBzZXF1ZW5jZSBvZiBzdXBwb3J0ZWQgTWVkaWFLZXlTeXN0ZW1N
ZWRpYUNhcGFiaWxpdHkgdmFsdWVzCi0gICAgLy8gZm9yIHRoaXMgYXVkaW8vdmlkZW8gdHlwZSBv
ciBudWxsIGFzIGFwcHJvcHJpYXRlLgotCi0gICAgLy8gMS4gTGV0IGxvY2FsIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBjb3B5IG9mIHBhcnRpYWwgY29uZmlndXJhdGlvbi4K
LSAgICBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
ID0gcGFydGlhbENvbmZpZ3VyYXRpb247Ci0KLSAgICAvLyAyLiBMZXQgc3VwcG9ydGVkIG1lZGlh
IGNhcGFiaWxpdGllcyBiZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBNZWRpYUtleVN5c3RlbU1lZGlh
Q2FwYWJpbGl0eSBkaWN0aW9uYXJpZXMuCi0gICAgVmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFD
YXBhYmlsaXR5PiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07Ci0KLSAgICAvLyAzLiBG
b3IgZWFjaCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVkaWEgY2Fw
YWJpbGl0aWVzOgotICAgIGZvciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJlcXVlc3Rl
ZENhcGFiaWxpdGllcykgewotICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUgYmUgcmVx
dWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCi0gICAgICAgIC8v
IDMuMi4gTGV0IHJvYnVzdG5lc3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyByb2J1
c3RuZXNzIG1lbWJlci4KLSAgICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0ZWRDYXBh
YmlsaXR5LnJvYnVzdG5lc3M7Ci0KLSAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMg
dGhlIGVtcHR5IHN0cmluZywgcmV0dXJuIG51bGwuCi0gICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBh
YmlsaXR5LmNvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICAgICAgLy8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52YWxpZCBv
ciB1bnJlY29nbml6ZWQgTUlNRSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24u
Ci0gICAgICAgIE9wdGlvbmFsPFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNl
ZENvbnRlbnRUeXBlOjpjcmVhdGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9k
ZTo6UmZjMjA0NSk7Ci0gICAgICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAvLyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRhaW5lciB0
eXBlIHNwZWNpZmllZCBieSBjb250ZW50IHR5cGUuCi0gICAgICAgIFN0cmluZyBjb250YWluZXIg
PSBjb250ZW50VHlwZS0+bWltZVR5cGUoKTsKLQotICAgICAgICAvLyAzLjYuIElmIHRoZSB1c2Vy
IGFnZW50IGRvZXMgbm90IHN1cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUgbmV4dCBp
dGVyYXRpb24uIFRoZSBjYXNlLXNlbnNpdGl2aXR5Ci0gICAgICAgIC8vICAgICAgb2Ygc3RyaW5n
IGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4KLSAgICAg
ICAgLy8gMy43LiBMZXQgcGFyYW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFdIHBhcmFt
ZXRlcnMsIGlmIGFueSwgc3BlY2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KLSAgICAgICAgLy8gMy44
LiBJZiB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1l
dGVycywgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgotICAgICAgICAvLyAzLjkuIExl
dCBtZWRpYSB0eXBlcyBiZSB0aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMg
c3BlY2lmaWVkIGJ5IHBhcmFtZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5Ci0gICAgICAgIC8v
ICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJp
YXRlIFJGQyBvciBvdGhlciBzcGVjaWZpY2F0aW9uLgotICAgICAgICBTdHJpbmcgY29kZWNzID0g
Y29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7Ci0gICAgICAgIGlm
IChjb250ZW50VHlwZS0+cGFyYW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgpID8gMCA6
IDEpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gMy4xMC4gSWYgbWVkaWEg
dHlwZXMgaXMgZW1wdHk6Ci0gICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAvLyDihrMgSWYgY29udGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVjaWZpYyBz
ZXQgb2YgY29kZWNzIGFuZCBjb2RlYyBjb25zdHJhaW50czoKLSAgICAgICAgICAgIC8vIOKGsyBP
dGhlcndpc2U6Ci0gICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gMy4xMS4gSWYgY29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1ZGlvL3Zp
ZGVvIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAgICAgICAgLy8gMy4x
Mi4gSWYgcm9idXN0bmVzcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFpbnMgYW4g
dW5yZWNvZ25pemVkIHZhbHVlIG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQotICAgICAgICAv
LyAgICAgICBpbXBsZW1lbnRhdGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBT
dHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAgICAgICAgaWYgKCFyb2J1c3Ru
ZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRlLT5zdXBwb3J0c1JvYnVzdG5lc3Mocm9idXN0bmVz
cykpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNl
ciBhZ2VudCBhbmQgaW1wbGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9m
IGVuY3J5cHRlZCBtZWRpYSBkYXRhIGZvciB0aGUKLSAgICAgICAgLy8gICAgICAgY29tYmluYXRp
b24gb2YgY29udGFpbmVyLCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9jYWwgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiBpbiBjb21iaW5hdGlvbgotICAgICAgICAvLyAgICAgICB3aXRo
IHJlc3RyaWN0aW9uczoKLSAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShjb250ZW50VHlw
ZS0+bWltZVR5cGUoKSk7Ci0gICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBh
cmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7
Ci0KLSAgICAgICAgICAgIC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKLSAgICAgICAgICAgIHBh
cmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJp
Y3Rpb25zKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIDMuMTMuMS4gQWRkIHJlcXVlc3RlZCBtZWRpYSBj
YXBhYmlsaXR5IHRvIHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMuCi0gICAgICAgIHN1cHBv
cnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsKLQotICAg
ICAgICAvLyAzLjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlzIFZpZGVvOgotICAgICAg
ICAvLyAgICAgICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byB0aGUgdmlkZW9D
YXBhYmlsaXRpZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24uCi0g
ICAgICAgIGlmICh0eXBlID09IEF1ZGlvVmlkZW9UeXBlOjpWaWRlbykKLSAgICAgICAgICAgIGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5hcHBlbmQocmVxdWVzdGVk
Q2FwYWJpbGl0eSk7Ci0gICAgICAgIC8vIDMuMTMuMi4g4oazIElmIGF1ZGlvL3ZpZGVvIHR5cGUg
aXMgQXVkaW86Ci0gICAgICAgIC8vICAgICAgICAgQWRkIHJlcXVlc3RlZCBtZWRpYSBjYXBhYmls
aXR5IHRvIHRoZSBhdWRpb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgbG9jYWwgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbi4KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsK
LSAgICB9Ci0KLSAgICAvLyA0LiBJZiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzIGlzIGVt
cHR5LCByZXR1cm4gbnVsbC4KLSAgICBpZiAoc3VwcG9ydGVkTWVkaWFDYXBhYmlsaXRpZXMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgLy8gNS4gUmV0dXJu
IHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMuCi0gICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlh
Q2FwYWJpbGl0aWVzOwotfQotCi12b2lkIENETTo6Z2V0Q29uc2VudFN0YXR1cyhNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jl
c3RyaWN0aW9ucyYmIHJlc3RyaWN0aW9ucywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJh
Y2spCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0
LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25zZW50Ci0gICAgLy8gVzNDIEVkaXRvcidz
IERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgewotICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZN
b3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBOT1RFOiBJbiB0aGUgZnV0dXJlLCB0aGVz
ZSBjaGVja3MgYmVsb3dlIHdpbGwgaW52b2x2ZSBhc2tpbmcgdGhlIHBhZ2UgY2xpZW50LCBwb3Nz
aWJseSBhY3Jvc3MgYSBwcm9jZXNzIGJvdW5kYXJ5LgotICAgIC8vIFRoZXkgd2lsbCBieSBuZWNl
c3NpdHkgYmUgYXN5bmNocm9ub3VzIHdpdGggY2FsbGJhY2tzLiBGb3Igbm93LCBpbXBseSB0aGlz
IGJlaGF2aW9yIGJ5IHBlcmZvcm1pbmcgaXQgaW4gYW4gYXN5bmMgdGFzay4KLQotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbiksIHJlc3RyaWN0aW9ucyA9IFdURk1vdmUocmVzdHJpY3Rpb25zKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhbV9wcml2YXRlKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3VtdWxh
dGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgaWYgKCFkb2N1
bWVudCkgewotICAgICAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmll
ZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwotICAgICAgICBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luID0gZG9jdW1lbnQtPnRvcE9yaWdpbigpOwotCi0gICAgICAg
IC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQu
Ci0gICAgICAgIC8vIDIxLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3Rp
dmVJZGVudGlmaWVyIHZhbHVlIGlzICJyZXF1aXJlZCIgYW5kIHRoZSBEaXN0aW5jdGl2ZSBJZGVu
dGlmaWVyKHMpIGFzc29jaWF0ZWQKLSAgICAgICAgLy8gICAgIHdpdGggYWNjdW11bGF0ZWQgY29u
ZmlndXJhdGlvbiBhcmUgbm90IHVuaXF1ZSBwZXIgb3JpZ2luIGFuZCBwcm9maWxlIGFuZCBjbGVh
cmFibGU6Ci0gICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAhbV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbikpIHsKLSAgICAgICAgICAgIC8vIDIxLjEuIFVwZGF0ZSBy
ZXN0cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBkZXNjcmliZWQg
YnkgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3QgaGF2ZSB1c2VyIGNvbnNlbnQuCi0g
ICAgICAgICAgICByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5pZWQsIFdU
Rk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RGTW92ZShyZXN0cmljdGlvbnMpKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1jb25zZW50LXN0YXR1cwotICAgICAgICAv
LyAzLjEuMS40IEdldCBDb25zZW50IFN0YXR1cwotICAgICAgICAvLyBHaXZlbiBhbiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiwgdGhpcyBhbGdvcml0
aG0gcmV0dXJucyB0aGUgY29uc2VudCBzdGF0dXMgZm9yIGFjY3VtdWxhdGVkCi0gICAgICAgIC8v
IGNvbmZpZ3VyYXRpb24gYW5kIG9yaWdpbiBhcyBvbmUgb2YgQ29uc2VudERlbmllZCwgSW5mb3Jt
VXNlciBvciBBbGxvd2VkLCB0b2dldGhlciB3aXRoIGFuIHVwZGF0ZWQgdmFsdWUgZm9yIHJlc3Ry
aWN0aW9ucwotICAgICAgICAvLyBpbiB0aGUgQ29uc2VudERlbmllZCBjYXNlLgotCi0gICAgICAg
IC8vIDEuIElmIHRoZXJlIGlzIHBlcnNpc3RlZCBkZW5pYWwgZm9yIG9yaWdpbiBpbmRpY2F0aW5n
IHRoYXQgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBub3QgYWxsb3dlZCwgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIC8vIDEuMS4gVXBkYXRlIHJlc3RyaWN0aW9ucyB0byBy
ZWZsZWN0IHRoZSBjb25maWd1cmF0aW9ucyBmb3Igd2hpY2ggY29uc2VudCBoYXMgYmVlbiBkZW5p
ZWQuCi0gICAgICAgIC8vIDEuMi4gUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3RyaWN0aW9u
cy4KLSAgICAgICAgLy8gMi4gSWYgdGhlcmUgaXMgcGVyc2lzdGVkIGNvbnNlbnQgZm9yIG9yaWdp
biBpbmRpY2F0aW5nIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgYWxsb3dlZCwgcmV0dXJu
IEFsbG93ZWQuCi0gICAgICAgIC8vIE5PVEU6IHBlcnNpc3RlZCBkZW5pYWwgLyBjb25zZW50IHVu
aW1wbGVtZW50ZWQuCi0KLSAgICAgICAgLy8gMy4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJl
IHRydWU6Ci0gICAgICAgIC8vICAgIOKGsyBUaGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJl
ciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCAibm90LWFsbG93ZWQiIGFuZCB0
aGUgY29tYmluYXRpb24gb2YgdGhlIFVzZXIgQWdlbnQsCi0gICAgICAgIC8vICAgICAgIGltcGxl
bWVudGF0aW9uIGFuZCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGRvZXMgbm90IGZvbGxvdyBh
bGwgdGhlIHJlY29tbWVuZGF0aW9ucyBvZiBBbGxvdyBQZXJzaXN0ZW50IERhdGEgdG8gQmUgQ2xl
YXJlZAotICAgICAgICAvLyAgICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUgSWRlbnRp
ZmllcihzKS4KLSAgICAgICAgLy8gTk9URTogYXNzdW1lIHRoYXQgaW1wbGVtZW50YXRpb25zIGZv
bGxvdyBhbGwgcmVjb21tZW5kYXRpb25zLgotCi0gICAgICAgIC8vICAgIOKGsyBUaGUgdXNlciBh
Z2VudCByZXF1aXJlcyBleHBsaWNpdCB1c2VyIGNvbnNlbnQgZm9yIHRoZSBhY2N1bXVsYXRlZCBj
b25maWd1cmF0aW9uIGZvciBvdGhlciByZWFzb25zLgotICAgICAgICAvLyBOT1RFOiBhc3N1bWUg
dGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCi0K
LSAgICAgICAgLy8gMy4xLiBSZXF1ZXN0IHVzZXIgY29uc2VudCB0byB1c2UgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbiBpbiB0aGUgb3JpZ2luIGFuZCB3YWl0IGZvciB0aGUgdXNlciByZXNwb25z
ZS4KLSAgICAgICAgLy8gICAgICBUaGUgY29uc2VudCBtdXN0IGluY2x1ZGUgY29uc2VudCB0byB1
c2UgYSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9vciBEaXN0aW5jdGl2ZSBQZXJtYW5l
bnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZQotICAgICAgICAvLyAgICAgIGlmIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIGlzICJy
ZXF1aXJlZCIuCi0gICAgICAgIC8vIDMuMi4gSWYgY29uc2VudCB3YXMgZGVuaWVkLCBydW4gdGhl
IGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgLy8gMy4yLjEuIFVwZGF0ZSByZXN0cmljdGlvbnMg
dG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHdoaWNoIGNvbnNlbnQgd2FzIGRlbmll
ZC4KLSAgICAgICAgLy8gMy4yLjEuIFJldHVybiBDb25zZW50RGVuaWVkIGFuZCByZXN0cmljdGlv
bnMuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSBpbXBsaWVkIGNvbnNlbnQgaWYgdGhlIGNvbWJp
bmF0aW9uIG9mIG9yaWdpbiBhbmQgdG9wT3JpZ2luIGFsbG93cyBpdC4KLSAgICAgICAgaWYgKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkICYmICFvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0
b3BPcmlnaW4pKSB7Ci0gICAgICAgICAgICByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlm
aWVyRGVuaWVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0dXM6OkNv
bnNlbnREZW5pZWQsIFdURk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RGTW92ZShy
ZXN0cmljdGlvbnMpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIDQuIElmIHRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIsIHJldHVybiBJbmZvcm1Vc2VyLgot
ICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
ciAhPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkgewotICAgICAgICAgICAgY2Fs
bGJhY2soQ29uc2VudFN0YXR1czo6SW5mb3JtVXNlciwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucykpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gNS4gSWYgdGhlIHVzZXIgYWdlbnQgcmVxdWlyZXMgaW5m
b3JtaW5nIHRoZSB1c2VyIGZvciB0aGUgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBmb3Igb3Ro
ZXIgcmVhc29ucywgcmV0dXJuIEluZm9ybVVzZXIuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSB0
aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZXF1aXJlIGluZm9ybWluZyB0aGUgdXNlci4KLQotICAg
ICAgICAvLyA2LiBSZXR1cm4gQWxsb3dlZC4KLSAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1
czo6QWxsb3dlZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJl
c3RyaWN0aW9ucykpOwotICAgIH0pOworICAgIENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vz
cyBhY2Nlc3MgPSBvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0b3BPcmlnaW4pID8gQ0RN
UHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpBbGxvd2VkIDogQ0RNUHJpdmF0ZTo6TG9jYWxT
dG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkOworICAgIG1fcHJpdmF0ZS0+Z2V0U3VwcG9ydGVkQ29u
ZmlndXJhdGlvbihXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBhY2Nlc3MsIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKQEAgLTYx
Miw3ICsxMjAsNyBAQCBib29sIENETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wg
Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5p
dERhdGFUeXBlKGluaXREYXRhVHlwZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZh
dGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggYWU5ODMyNWY2YWQx
MWZmNzlhYzZkMTc0YzZlZGFhOGJkNDVjOWQzMC4uZDU4Y2IwZmVlMzMzMWE4NWE4MjkzZGFmMWRm
N2MwYzQwYTEzY2RmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCkBAIC04MCwyOSArODAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENETShEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIAotICAgIGVudW0gY2xhc3MgQ29uZmln
dXJhdGlvblN0YXR1cyB7Ci0gICAgICAgIFN1cHBvcnRlZCwKLSAgICAgICAgTm90U3VwcG9ydGVk
LAotICAgICAgICBDb25zZW50RGVuaWVkLAotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIENvbnNl
bnRTdGF0dXMgewotICAgICAgICBDb25zZW50RGVuaWVkLAotICAgICAgICBJbmZvcm1Vc2VyLAot
ICAgICAgICBBbGxvd2VkLAotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIEF1ZGlvVmlkZW9UeXBl
IHsKLSAgICAgICAgQXVkaW8sCi0gICAgICAgIFZpZGVvLAotICAgIH07Ci0KLSAgICB2b2lkIGRv
U3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYg
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYsIFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKLSAgICBPcHRpb25hbDxNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24+ICBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJik7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmls
aXR5Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRl
b1R5cGUsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4mIHJlcXVl
c3RlZENhcGFiaWxpdGllcywgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0
aWFsQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJik7Ci0KLSAgICB1c2luZyBD
b25zZW50U3RhdHVzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ29uc2VudFN0YXR1cywg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYmKT47
Ci0gICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYm
IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYsIENvbnNl
bnRTdGF0dXNDYWxsYmFjayYmKTsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+IG1fcHJpdmF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5k
ZXggZGExOWJiZmYyYzdjZTgyYmVmYTgwMzVhZDc1NDJlM2U5ZjIyYTY5ZC4uMjlmYWI0OTkwNjgy
NTgzMmE1YWRkZDk5YTgwZThmMzRkOGQzMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDAx
LDcgKzQwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291
cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0
IHNlc3Npb24gY2xvc2VkIGJlIGZhbHNlLgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhl
IENETSBpbnN0YW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2
YWx1ZS4KICAgICAgICAgLy8gNi43LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dp
bmcgc3RlcHM6Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vz
c2lvbklkLCBtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29s
IHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRp
b24sIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9u
VHlwZSwgc2FuaXRpemVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wg
c2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3lzdGVtQWNjZXNzLmNwcAppbmRleCAzMGMzNGNkYzQ0ZWI4ZDY3Y2QyMjFlYzg5OWNjMGQ2YmEz
MTcyNGU4Li43ZWI3YjIwMjM1ZTE1YTU5MTAzYmIxOGEwM2VmM2ZhMTJiZDM3YzM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVt
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3lzdGVtQWNjZXNzLmNwcApAQCAtODEsMzQgKzgxLDI5IEBAIHZvaWQgTWVkaWFLZXlT
eXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiAgICAgICAgIH0KIAogICAgICAgICAvLyAyLjYuIEluaXRpYWxpemUgaW5zdGFuY2UgdG8g
ZW5hYmxlLCBkaXNhYmxlIGFuZC9vciBzZWxlY3QgS2V5IFN5c3RlbSBmZWF0dXJlcyB1c2luZyBj
b25maWd1cmF0aW9uLgotICAgICAgICBpZiAoaW5zdGFuY2UtPmluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbigqbV9jb25maWd1cmF0aW9uKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7Ci0gICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIDIuNy4gSWYgdXNlIGRpc3RpbmN0aXZlIGlk
ZW50aWZpZXIgaXMgZmFsc2UsIHByZXZlbnQgaW5zdGFuY2UgZnJvbSB1c2luZyBEaXN0aW5jdGl2
ZSBJZGVudGlmaWVyKHMpIGFuZCBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKS4K
LSAgICAgICAgaWYgKCF1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIgJiYgaW5zdGFuY2UtPnNldERp
c3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGZhbHNlKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVk
KSB7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIDIuOC4gSWYgcGVyc2lzdGVu
dCBzdGF0ZSBhbGxvd2VkIGlzIGZhbHNlLCBwcmV2ZW50IGluc3RhbmNlIGZyb20gcGVyc2lzdGlu
ZyBhbnkgc3RhdGUgcmVsYXRlZCB0byB0aGUgYXBwbGljYXRpb24gb3Igb3JpZ2luIG9mIHRoaXMg
b2JqZWN0J3MgRG9jdW1lbnQuCi0gICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlQWxsb3dlZCAm
JiBpbnN0YW5jZS0+c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChmYWxzZSkgPT0gQ0RNSW5zdGFu
Y2U6OkZhaWxlZCkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJv
cik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAyLjkuIElm
IGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBh
IG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFt
ZS4KLSAgICAgICAgLy8gMi4xMC4gTGV0IG1lZGlhIGtleXMgYmUgYSBuZXcgTWVkaWFLZXlzIG9i
amVjdCwgYW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKLSAgICAgICAgLy8gMi4xMC4xLiBM
ZXQgdGhlIHVzZSBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHZhbHVlIGJlIHVzZSBkaXN0aW5jdGl2
ZSBpZGVudGlmaWVyLgotICAgICAgICAvLyAyLjEwLjIuIExldCB0aGUgcGVyc2lzdGVudCBzdGF0
ZSBhbGxvd2VkIHZhbHVlIGJlIHBlcnNpc3RlbnQgc3RhdGUgYWxsb3dlZC4KLSAgICAgICAgLy8g
Mi4xMC4zLiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJlIHRoZSB2
YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KLSAgICAgICAgLy8g
Mi4xMC40LiBMZXQgdGhlIGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBiZSB0aGlzIG9iamVjdCdz
IGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZS4KLSAgICAgICAgLy8gMi4xMC41LiBMZXQgdGhlIGNk
bSBpbnN0YW5jZSB2YWx1ZSBiZSBpbnN0YW5jZS4KLSAgICAgICAgYXV0byBtZWRpYUtleXMgPSBN
ZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQsIG1fY29uZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBtX2ltcGxlbWVudGF0aW9u
LmNvcHlSZWYoKSwgaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0KLSAgICAgICAgLy8gMi4x
MS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KLSAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1lZGlhS2V5cz4+KFdURk1vdmUobWVk
aWFLZXlzKSk7CisgICAgICAgIGF1dG8gYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzID0gdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyID8gQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVu
dGlmaWVyczo6WWVzIDogQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVyczo6
Tm87CisgICAgICAgIGF1dG8gYWxsb3dQZXJzaXN0ZW50U3RhdGUgPSBwZXJzaXN0ZW50U3RhdGVB
bGxvd2VkID8gQ0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOjpZZXMgOiBDRE1JbnN0
YW5jZTo6QWxsb3dQZXJzaXN0ZW50U3RhdGU6Ok5vOworCisgICAgICAgIGluc3RhbmNlLT5pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oKm1fY29uZmlndXJhdGlvbiwgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgW3Nlc3Npb25UeXBlcyA9IG1fY29u
ZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBpbXBsZW1lbnRhdGlvbiA9IG1faW1wbGVtZW50YXRp
b24uY29weVJlZigpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQsIGluc3RhbmNlID0gaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChhdXRvIHN1Y2Nlc3NWYWx1ZSkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoc3VjY2Vzc1ZhbHVlID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIDIuOS4gSWYgYW55IG9mIHRo
ZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4
Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgorICAgICAg
ICAgICAgLy8gMi4xMC4gTGV0IG1lZGlhIGtleXMgYmUgYSBuZXcgTWVkaWFLZXlzIG9iamVjdCwg
YW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgIC8vIDIuMTAuMS4gTGV0
IHRoZSB1c2UgZGlzdGluY3RpdmUgaWRlbnRpZmllciB2YWx1ZSBiZSB1c2UgZGlzdGluY3RpdmUg
aWRlbnRpZmllci4KKyAgICAgICAgICAgIC8vIDIuMTAuMi4gTGV0IHRoZSBwZXJzaXN0ZW50IHN0
YXRlIGFsbG93ZWQgdmFsdWUgYmUgcGVyc2lzdGVudCBzdGF0ZSBhbGxvd2VkLgorICAgICAgICAg
ICAgLy8gMi4xMC4zLiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJl
IHRoZSB2YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KKyAgICAg
ICAgICAgIC8vIDIuMTAuNC4gTGV0IHRoZSBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgYmUgdGhp
cyBvYmplY3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUuCisgICAgICAgICAgICAvLyAyLjEw
LjUuIExldCB0aGUgY2RtIGluc3RhbmNlIHZhbHVlIGJlIGluc3RhbmNlLgorICAgICAgICAgICAg
YXV0byBtZWRpYUtleXMgPSBNZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIHNlc3Npb25UeXBlcywgV1RGTW92ZShpbXBsZW1l
bnRhdGlvbiksIFdURk1vdmUoaW5zdGFuY2UpKTsKKworICAgICAgICAgICAgLy8gMi4xMS4gUmVz
b2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KKyAgICAgICAgICAgIHByb21pc2UtPnJlc29s
dmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxNZWRpYUtleXM+PihXVEZNb3ZlKG1lZGlh
S2V5cykpOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIC8vIDMuIFJldHVybiBwcm9taXNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwCmluZGV4IGM2MjRlNTMyOWU1OTY4ODJmMGQ0MWY1NzQ1ODg1ZmMyM2QzOWE2ZTQuLjE4
N2Q1OWRlZjM0MDU1ZjhjYzVjZDU5YmQ3ZjBhYTc1YTVlOTY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IE1lZGlhS2V5czo6Y3Jl
YXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0K
IAotdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5cy1zZXRzZXJ2ZXJjZXJ0aWZpY2F0ZQogICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CkBAIC0xMDYsMTYgKzEwNiwx
NCBAQCB2b2lkIE1lZGlhS2V5czo6c2V0U2VydmVyQ2VydGlmaWNhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgQnVmZgogICAgIC8vIDQuIExldCBwcm9taXNlIGJlIGEg
bmV3IHByb21pc2UuCiAgICAgLy8gNS4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxs
ZWw6CiAKLSAgICBjb250ZXh0LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgY2VydGlmaWNhdGUgPSBXVEZNb3ZlKGNlcnRpZmljYXRlKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgewotICAgICAgICAvLyA1LjEuIFVzZSB0
aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB0byBwcm9jZXNzIGNlcnRpZmljYXRlLgotICAgICAg
ICBpZiAobV9pbnN0YW5jZS0+c2V0U2VydmVyQ2VydGlmaWNhdGUoV1RGTW92ZShjZXJ0aWZpY2F0
ZSkpID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgIC8vIDUuMi4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhj
ZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCisgICAgLy8g
NS4xLiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZpY2F0
ZS4KKyAgICBtX2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmlj
YXRlKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byBzdWNjZXNzKSB7CisgICAg
ICAgIC8vIDUuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNl
IHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVy
cm9yIG5hbWUuCisgICAgICAgIC8vIDUuMS4gW0Vsc2UsXSBSZXNvbHZlIHByb21pc2Ugd2l0aCB0
cnVlLgorICAgICAgICBpZiAoc3VjY2VzcyA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKQogICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDUuMS4gUmVzb2x2ZSBwcm9taXNlIHdpdGgg
dHJ1ZS4KLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsK
ICAgICB9KTsKIAogICAgIC8vIDYuIFJldHVybiBwcm9taXNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggMWUyZTFhMjc3MTM0
MGU2ZGYxZTBhOThhNTQyY2NkNWY4MmFlMjhkZi4uYjZiNzJhMjcyMjIyYjVjOWJkYzIyNTQwNjZi
ZThkZTI5MWJhNjg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB+TWVkaWFL
ZXlzKCk7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9uPj4gY3JlYXRlU2Vz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFLZXlTZXNzaW9uVHlwZSk7Ci0gICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
QnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
KTsKIAogICAgIHZvaWQgYXR0YWNoQ0RNQ2xpZW50KENETUNsaWVudCYpOwogICAgIHZvaWQgZGV0
YWNoQ0RNQ2xpZW50KENETUNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCmluZGV4IGQ2ZjA0Y2RkYmU1MGQzMTQ4Mzk1
ZjY1ZWM2YmY5MDU3ZmZiZjRkY2UuLmRiMWIwNTM0M2JjMjEzOGM5YjZiYzUyMjVmNzkyOTczMzZm
ZGIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5pZGwKQEAgLTMzLDUgKzMzLDUgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgTWVkaWFLZXlzIHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVT
ZXNzaW9uKG9wdGlvbmFsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUgPSAidGVtcG9y
YXJ5Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8Ym9v
bD4gc2V0U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNlcnZlckNlcnRpZmljYXRlKTsK
KyAgICBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2
ZXJDZXJ0aWZpY2F0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZjQ1YzUxOTcxNWI1YmY4OGEz
MTEzMjMxNzlmYzNhNGJlNmVhYjA2Li5iNThhODFhYWMzZjQ0YWZiZjJkMmQ5YjRhNWFmYjg1MDM2
N2Q3YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTgyMyw2ICsxODIzLDcgQEAgcGxhdGZvcm0vYXVk
aW8vVmVjdG9yTWF0aC5jcHAKIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcAogCiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAorcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5jcHAKIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAogCiBw
bGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5N2UwMGRiMDNhZDBk
NWI0N2NmMmI0YWE4MTQyMjYyYTIwMmRhMWMyLi5iMzE2OTliYWI2OTkzMTk2YTI2ODBkNDE1OTRh
ODFhYjk0MTY0ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC00MDY2LDYgKzQwNjYsMTkgQEAKIAkJQ0QzQTQ5NUYxN0E5RDAx
QjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1NjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2Uu
aCAqLzsgfTsKIAkJQ0QzQTQ5NjIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5
RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFC
MDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlckxpc3QuaCAqLzsgfTsKKwkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJBMDFEIC8qIENETUVuY3J5
cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERjc1NjlCMjE1QzIzQTQwMEVGQ0I1MCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRjky
NDAxQUFEOTAwNEJBMDFEIC8qIENETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQyMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0
b3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QzQ0UwRkEyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUg
LyogQ0RNSW5zdGFuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlDRDNDRTBGQjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VTZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlEMzc1
QTIxNTE2M0U0MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJB
MDFEIC8qIENETUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZE
MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRDFGNzFDQjY5MDBG
NTI1QzUgLyogQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZFMjQwMUFBRDkwMDRCQTAxRCAv
KiBDRE1NZWRpYUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEOTRBNUQzMUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNhcGFiaWxp
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
RDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ2MUY3MUNCNkQwMEY1MjVD
NSAvKiBDRE1NZXNzYWdlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFG
NzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Q
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5
NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1IC8qIENETVByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDIyNDAxQUFEQTAwNEJBMDFEIC8q
IENETVJlcXVpcmVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVxdWlyZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMzI0
MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEMDFGNzFDQjZCMDBGNTI1QzUgLyogQ0RN
UmVzdHJpY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQ0QzQ0UxMDQyNDAxQUFEQTAwNEJBMDFEIC8qIENETVNlc3Npb25UeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVENTFGNzFD
QjZEMDBGNTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1h
Z2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QzRTIxREIyMTgzM0Y1MTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0
aWVzQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRDNFMjUxQzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAv
KiBHcmlkQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNEM0UyNTI0MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNF
MjUyMjE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oICovOyB9
OwpAQCAtNDE5Nyw3ICs0MjEwLDcgQEAKIAkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1v
Y2tUcmFja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERjJCMDBGMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggKi87IH07CiAJCUNERjRC
NzEyMUUwMDg3QUUwMEUyMzVBMiAvKiBMZWdhY3lDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEg
LyogTGVnYWN5Q0RNU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTMxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5jcHAgKi87IH07Ci0JCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAv
KiBDRE0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RjRCNzE0MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCAqLzsgfTsKKwkJQ0RGNEI3MTYxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjRCNzE4MUUwMUNCOTEwMEUy
MzVBMiAvKiBNZWRpYUtleXNSZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE3MUUwMUNCOTEwMEUyMzVBMiAvKiBNZWRpYUtl
eXNSZXN0cmljdGlvbnMuaCAqLzsgfTsKIAkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1l
ZGlhS2V5U2Vzc2lvblR5cGUuaWRsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RGNEI3MTkxRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5
cGUuaWRsICovOyB9OwogCQlDREY0QjcxRTFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNl
c3Npb25UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREY0QjcxQzFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBlLmggKi87
IH07CkBAIC0xMzc3MCw2ICsxMzc4Myw3IEBACiAJCUNEM0E0OTVCMTdBOUQwMUIwMDI3NEU0MiAv
KiBTb3VyY2VCdWZmZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNvdXJjZUJ1ZmZlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEM0E0OTVEMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJM
aXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VCdWZmZXJMaXN0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzQ0UxMUMyNDA0NTFBRjAwNEJBMDFEIC8qIENE
TVByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNUHJpdmF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyMURCMjE4MzNGNTEwMEU2NkY1NSAvKiBJbWFnZUJ1
ZmZlclV0aWxpdGllc0NHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2
IC8qIEdyaWRBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyaWRBcmVh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyNTIxMTgwNDZCQ0QwMEUyN0Y1
NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjYyOTAsNiArMjYzMDQsNyBAQAogCQkJCUNEOTRBNUNEMUY3
MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi8sCiAJCQkJQ0Q5
NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICovLAogCQkJCUNE
OTRBNUQ2MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1NZXNzYWdlVHlwZS5oICovLAorCQkJCUNEM0NF
MTFDMjQwNDUxQUYwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmNwcCAqLywKIAkJCQlDRDk0QTVDRjFG
NzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovLAogCQkJCUNEOTRBNUNGMUY3MUNCNjEw
MEY1MjVENSAvKiBDRE1Qcm94eS5jcHAgKi8sCiAJCQkJQ0Q5NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1
IC8qIENETVByb3h5LmggKi8sCkBAIC0yOTI2Niw5ICsyOTI4MSwyMiBAQAogCQkJCTY1NTBCNjlF
MDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOTRB
NURFMUY3MkY1N0IwMEY1MjVDNSAvKiBDRE1DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
M0NFMEY4MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRDNDRTBGOTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RCNzA0NUExRjc0NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQbGF5U3Ry
ZWFtaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGQTI0MDFBQUQ5MDA0QkEwMUQgLyog
Q0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAx
RCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZDMjQw
MUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NF
MEZEMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmls
aXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RN
TWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAx
RCAvKiBDRE1Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMxODYyMzE5OUYxRTJBMDAz
MEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByb3h5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVxdWlyZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEM0NFMTAzMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1SZXN0cmljdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwNDI0MDFB
QURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVGQTkw
NENBMTc4RTYxRjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTkxQjhGMEI1MjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZUluZm9CYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggOTY5YzUwZDgzMDYxOGE4NzQ5NWI1ZGQxMjkwM2RjNjNlYTQ4YzU3MC4uMjE1
ODQ5YWI5YzgwM2QwMWQzYTMzNjQyNzdlZmQ4MjJmNmM0Mzk2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNTYxLDE1ICsyNTYxLDI1IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0
ZSkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRp
bnVlQWZ0ZXJOZWVkS2V5KCkKK3sKKyAgICBpZiAoIW1fcGxheWVyKQorICAgICAgICByZXR1cm47
CisgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVk
a2V5IikgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZW5jcnlw
dGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRvY3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2VuRW5j
cnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmsoKSk7CisgICAgbV9wbGF5ZXItPnNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkQ29udGludWUpOworfQorI2VuZGlmCisKIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYktpdE1l
ZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBu
dWxscHRyOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFi
bGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKQEAgLTI1ODAsMTQgKzI1OTAsMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgKSB7CiAg
ICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJS
X0VOQ1JZUFRFRCk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZl
bnQpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVu
dCkpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAtNTEyOSw2ICs1
MTM3LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKCkK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRl
TWVkaWFTdGF0ZSgpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB1cGRhdGVTaG91bGRDb250aW51ZUFm
dGVyTmVlZEtleSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJFbmdpbmVVcGRhdGVkKCkKQEAgLTU4OTEsNiArNTkwMywxMSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogCiBib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMm
IG9wdGlvbnMpCiB7CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Vi
a2l0bmVlZGtleUV2ZW50KQorICAgICAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtl
eSgpOworI2VuZGlmCisKICAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRw
bGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9u
cyk7CiAKQEAgLTU5MTIsNiArNTkyOSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaQogCiBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRp
b25zJiBvcHRpb25zKQogeworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
LndlYmtpdG5lZWRrZXlFdmVudCkKKyAgICAgICAgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5l
ZWRLZXkoKTsKKyNlbmRpZgorCiAgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Vi
a2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVy
biBOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDVkZTBkMTExODUx
YWM3ZmE4YzNlOTVkYjZlZWQ5YWYzMWNmNTE1OGQuLmY2OTIwZjY1NDc2ZjI4ZDdlN2IxOTRlNTkx
ZTJjNTk1MmY0NGU5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC02ODAsNyArNjgwLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlhUGxh
eWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5
TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApAQCAtNjk0LDYgKzY5
NCwxMCBAQCBwcml2YXRlOgogICAgIC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0
ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCisKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICB2b2lkIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKICAg
ICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgbWVkaWFQ
bGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29sKSBmaW5hbDsK
QEAgLTExNjYsNiArMTE3MCw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFQcm92aWRlciBtX21lZGlh
UHJvdmlkZXI7CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBib29s
IG1faGFzTmVlZGtleUxpc3RlbmVyIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFL
ZXlzPiBtX3dlYktpdE1lZGlhS2V5czsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVN0cmF0ZWd5LmgKaW5kZXggNWVkMDRjNGNjOGU4ZWNjODQ0OGZlMDUzYTRiNjZiYzY3YTgx
MTdkZC4uNjBhNTg0N2M4Y2VjMTBiNzliNzQ5YTZmYWY4NTAzZDE2YTE5OWI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBBdWRpb0lPQ2Fs
bGJhY2s7CitjbGFzcyBDRE1GYWN0b3J5OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVN0
cmF0ZWd5IHsKIHB1YmxpYzoKQEAgLTM4LDYgKzM5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24o
CiAgICAgICAgIEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSA9IDA7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8
Q0RNRmFjdG9yeSo+JikgPSAwOworI2VuZGlmCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TWVk
aWFTdHJhdGVneSgpID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKaW5kZXgg
NzRiM2FhN2Q3YmRiMDBhMjY3NTZhMDIzNjU2NmYzNjg4MTJiY2UzYi4uMWE3YTU2MjdkYmNhNjQx
YjQ5Y2U3ZTU2ZTY3MTZlMzE4YTk4OGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaApAQCAt
MjcsMTMgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENE
TUVuY3J5cHRpb25TY2hlbWUgeworZW51bSBjbGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIDogdWlu
dDhfdCB7CiAgICAgY2VuYywKICAgICBjYmNzLAogfTsKIAogfQogCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2No
ZW1lPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNRW5jcnlwdGlvblNjaGVtZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVt
ZTo6Y2VuYywKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2JjcworICAg
ID47Cit9OworCit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAppbmRleCA0YmI1OTlmYTgwNzNkM2I4NTVk
ODQ2MTc4NjE5ZGJjMDI2MTA1OGYyLi45OTJkNDlhZWVlZTVhNWYxZjQxMjVlNmYwYjMyMjI3Njkw
MjIxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmNwcApAQCAtMzAsNiArMzAsOCBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MCw3ICs0Miw5IEBAIFZl
Y3RvcjxDRE1GYWN0b3J5Kj4mIENETUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8Q0RNRmFjdG9yeSo+PiBmYWN0b3JpZXM7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25j
ZSwgWyZdIHsgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOyB9KTsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlLCBbJl0geworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bWVkaWFTdHJhdGVneSgpLnJlZ2lzdGVyQ0RNRmFjdG9yaWVzKGZhY3Rvcmllcyk7CisgICAgfSk7
CiAKICAgICByZXR1cm4gZmFjdG9yaWVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDQ0ZWFhYjA3ZTc1N2FmZTU4
YjUzNjFmNWFmMTJiMjQ3NzZhMDM1MmUuLjUyNWM4NGVjYmU3OTFmNDBiNTQ3ZmI3ZmFmZGU5ZDAz
YmE4MTBiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgLy8gUGxh
dGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdGhhdCdzIGNhbGxlZCB3aGVuIHRoZSBsaXN0IG9mCiAg
ICAgLy8gcmVnaXN0ZXJlZCBDRE1GYWN0b3J5IG9iamVjdHMgaXMgcXVlcmllZCBmb3IgdGhlIGZp
cnN0IHRpbWUuCi0gICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0
b3I8Q0RNRmFjdG9yeSo+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGxhdGZv
cm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+Jik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCA4ZjlmM2ViODc0NWMzNTIwMjgzMTRjNjA2ZDI4
OWQ0ZTNmNzFhMDQ4Li43MzRjOTM1MDc1NmQ3OWY3NGQ5MDY1ZTI0MDFjMmVlOGFiYzEzMDc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDRE1NZXNzYWdlVHlwZS5oIgog
I2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CkBAIC01MiwyMyArNTMsMzMgQEAgcHVibGljOgogICAgICAgICBNb2NrLAogICAgICAg
ICBDbGVhcktleSwKICAgICAgICAgRmFpclBsYXlTdHJlYW1pbmcsCisgICAgICAgIFJlbW90ZSwK
ICAgICB9OwogICAgIHZpcnR1YWwgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlw
ZSgpIGNvbnN0ID0gMDsKIAotICAgIGVudW0gU3VjY2Vzc1ZhbHVlIHsKKyAgICBlbnVtIFN1Y2Nl
c3NWYWx1ZSA6IGJvb2wgewogICAgICAgICBGYWlsZWQsCiAgICAgICAgIFN1Y2NlZWRlZCwKICAg
ICB9OworICAgIHVzaW5nIFN1Y2Nlc3NDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3VjY2Vzc1ZhbHVlKT47CiAKLSAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChi
b29sKSA9IDA7Ci0gICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxs
b3dlZChib29sKSA9IDA7Ci0gICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwotICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVl
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgPSAwOworICAgIGVudW0gY2xhc3Mg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAg
ICBZZXMsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQWxsb3dQZXJzaXN0ZW50U3RhdGUgOiBi
b29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcywKKyAgICB9OworCisgICAgdmlydHVhbCB2
b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CiAKLSAg
ICBlbnVtIGNsYXNzIEhEQ1BTdGF0dXMgeworICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyA6IHVp
bnQ4X3QgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWYWxpZCwKICAgICAgICAgT3V0cHV0
UmVzdHJpY3RlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggODcyNWEzMWQ4YmIzZTIyYmUy
MWRmMDdlMzIwYjM2ZTc1MDM4NmUxYS4uZDQ2NGI3NGQxYzcyMDJhOWEzMzlkZmY2NWQwNmUwODIw
ODk2OWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTcyLDkgKzcyLDkgQEAgcHVibGlj
OgogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6
S2V5U3RhdHVzVmVjdG9yOwogICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8
S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdl
ZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKLSAgICBlbnVtIGNs
YXNzIFNlc3Npb25Mb2FkRmFpbHVyZSB7CisgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1
cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKICAgICAgICAgTm9TZXNzaW9uRGF0YSwKICAg
ICAgICAgTWlzbWF0Y2hlZFNlc3Npb25UeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAppbmRleCBhZDk2OTYyMzYwNGNk
MTQ3MDU1YTI3YjczMzZmNjc3YzBiM2FmMmM0Li5jYzVlNzE4NmY3NGVmOGU4MTRjYjNhZjc1NWUx
NjFhNjVjMjA4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNS2V5U3RhdHVzIHsKK2VudW0gY2xhc3MgQ0RN
S2V5U3RhdHVzIDogdWludDhfdCB7CiAgICAgVXNhYmxlLAogICAgIEV4cGlyZWQsCiAgICAgUmVs
ZWFzZWQsCkBAIC00NCw0ICs0NiwyMCBAQCBlbnVtIGNsYXNzIENETUtleVN0YXR1cyB7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXMsCisgICAgV2ViQ29yZTo6
Q0RNS2V5U3RhdHVzOjpVc2FibGUsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpFeHBpcmVk
LAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6UmVsZWFzZWQsCisgICAgV2ViQ29yZTo6Q0RN
S2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6
T3V0cHV0RG93bnNjYWxlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlN0YXR1c1BlbmRp
bmcsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yCisgICAgPjsKK307
CisKK30KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDYxMmQ2NDVmYWE1MjQ4ZjcxZjFjMTU2N2Y0NTA3ZTg5
ZjNiMzFjZTUuLjg1MjU4N2NlZGEwNTEyMTQ0Nzk1MjJmYWMzOGU0YzBmYjk4NzQ5ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTQ4LDYgKzQ4LDY3IEBAIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIHsKICAgICBDRE1SZXF1aXJlbWVudCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXIgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBDRE1SZXF1
aXJlbWVudCBwZXJzaXN0ZW50U3RhdGUgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAg
ICBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+IHNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CisgICAgICAgIGVuY29kZXIgPDwgaW5pdERh
dGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAg
ZW5jb2RlciA8PCB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlOworICAg
ICAgICBlbmNvZGVyIDw8IHNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGxhYmVsOworICAgICAgICBkZWNvZGVyID4+IGxhYmVsOworICAgICAgICBpZiAoIWxhYmVs
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0
YVR5cGVzOworICAgICAgICBpZiAoIWluaXREYXRhVHlwZXMpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxp
dHk+PiBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgZGVjb2RlciA+PiBhdWRpb0NhcGFiaWxp
dGllczsKKyAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJp
bGl0eT4+IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAgICBkZWNvZGVyID4+IHZpZGVvQ2FwYWJp
bGl0aWVzOworICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4gZGlz
dGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRlbnRp
ZmllcjsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXIpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAKKyAgICAgICAgT3B0aW9uYWw8Q0RNUmVxdWly
ZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3Rh
dGU7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+PiBz
ZXNzaW9uVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc2Vzc2lvblR5cGVzOworICAgICAgICBp
ZiAoIXNlc3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCisgICAgICAgICAg
ICBXVEZNb3ZlKCppbml0RGF0YVR5cGVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmF1ZGlvQ2Fw
YWJpbGl0aWVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnZpZGVvQ2FwYWJpbGl0aWVzKSwKKyAg
ICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAqcGVyc2lzdGVu
dFN0YXRlLAorICAgICAgICAgICAgV1RGTW92ZSgqc2Vzc2lvblR5cGVzKSwKKyAgICAgICAgfX07
CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHku
aAppbmRleCA5MDFiNTRmZjA1MDhlZGE5YmJiODhjNWMxZGI4NjUzOGRjZTE0MjgyLi5mODRhMGQx
MmFiNGNkNTIwZTNmMGUwNGQ2NGViZWZjNjMxNjI1ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHku
aApAQCAtMzksNiArMzksMzkgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAgU3Ry
aW5nIGNvbnRlbnRUeXBlOwogICAgIFN0cmluZyByb2J1c3RuZXNzOwogICAgIE9wdGlvbmFsPENE
TUVuY3J5cHRpb25TY2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAg
eworICAgICAgICBlbmNvZGVyIDw8IGNvbnRlbnRUeXBlOworICAgICAgICBlbmNvZGVyIDw8IHJv
YnVzdG5lc3M7CisgICAgICAgIGVuY29kZXIgPDwgZW5jcnlwdGlvblNjaGVtZTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNTWVk
aWFDYXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVudFR5
cGU7CisgICAgICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcm9idXN0bmVzczsKKyAgICAgICAg
ZGVjb2RlciA+PiByb2J1c3RuZXNzOworICAgICAgICBpZiAoIXJvYnVzdG5lc3MpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPENE
TUVuY3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBkZWNvZGVyID4+
IGVuY3J5cHRpb25TY2hlbWU7CisgICAgICAgIGlmICghZW5jcnlwdGlvblNjaGVtZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAg
ICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCisgICAgICAgICAgICBXVEZNb3ZlKCpyb2J1c3Ru
ZXNzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmVuY3J5cHRpb25TY2hlbWUpLAorICAgICAgICB9
fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaAppbmRl
eCBlNWY3OTZhOWUwZTA3NTFhYTAyNzgyYjliNjY2Y2EyMzFlZjdlNjA5Li45NWJmMjhjMmFhOTRh
M2RhNTA0NWI1ZWMwMGYzNThjZDI2ZDk1Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKQEAgLTMwLDkgKzMw
LDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETU1lc3NhZ2VU
eXBlIHsKK2VudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBMaWNlbnNl
UmVxdWVzdCwKICAgICBMaWNlbnNlUmVuZXdhbCwKICAgICBMaWNlbnNlUmVsZWFzZSwKQEAgLTQx
LDQgKzQzLDE4IEBAIGVudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgewogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsCisgICAgICAgIFdlYkNvcmU6
OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVz
c2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZTo6TGljZW5zZVJlbGVhc2UsCisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpJbmRp
dmlkdWFsaXphdGlvblJlcXVlc3QKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY0YmE0OWU0MDYwYWZkNzll
OGMyMDIwNDEyOGQ3YzQ0YjlhYmY1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCkBAIC0wLDAgKzEsNTIwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNETVByaXZhdGUu
aCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiQ0RNTWVkaWFDYXBhYmlsaXR5LmgiCisjaW5j
bHVkZSAiQ0RNUmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlICJDRE1SZXN0cmljdGlvbnMuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NETVByaXZhdGU6OkNETVByaXZhdGUoKSA9IGRlZmF1bHQ7
CitDRE1Qcml2YXRlOjp+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKKwordm9pZCBDRE1Qcml2YXRl
OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBj
YW5kaWRhdGVDb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0
ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRpb24K
KyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gMy4x
LjEuMSBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24KKyAgICAvLyBHaXZlbiBhIEtleSBTeXN0
ZW1zIGltcGxlbWVudGF0aW9uIGltcGxlbWVudGF0aW9uLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLCBhbmQgb3JpZ2luLAorICAgIC8vIHRoaXMgYWxn
b3JpdGhtIHJldHVybnMgYSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBvciBOb3RTdXBwb3J0ZWQg
YXMgYXBwcm9wcmlhdGUuCisKKyAgICAvLyAxLiBMZXQgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24g
YmUgQ29uc2VudERlbmllZC4KKyAgICAvLyAyLiBJbml0aWFsaXplIHJlc3RyaWN0aW9ucyB0byBp
bmRpY2F0ZSB0aGF0IG5vIGNvbmZpZ3VyYXRpb25zIGhhdmUgaGFkIHVzZXIgY29uc2VudCBkZW5p
ZWQuCisgICAgQ0RNUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyB7IH07CisgICAgZG9TdXBwb3J0
ZWRDb25maWd1cmF0aW9uU3RlcChXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBXVEZN
b3ZlKHJlc3RyaWN0aW9ucyksIGFjY2VzcywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lk
IENETVByaXZhdGU6OmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJl
c3RyaWN0aW9ucywgTG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgU3VwcG9ydGVkQ29uZmlndXJh
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uCisgICAgLy8gVzND
IEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYsIGN0ZC4KKworICAgIC8vIDMuMS4xLjEg
R2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uCisgICAgLy8gMy4gUmVwZWF0IHRoZSBmb2xsb3dp
bmcgc3RlcCB3aGlsZSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBpcyBDb25zZW50RGVuaWVkOgor
ICAgIC8vIDMuMS4gTGV0IHN1cHBvcnRlZCBjb25maWd1cmF0aW9uIGFuZCwgaWYgcHJvdmlkZWQs
IHJlc3RyaWN0aW9ucyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUKKyAgICAvLyBHZXQg
U3VwcG9ydGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNlbnQgYWxnb3JpdGhtIHdpdGggaW1wbGVt
ZW50YXRpb24sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLAorICAgIC8vIHJlc3RyaWN0aW9ucyBh
bmQgb3JpZ2luLgorICAgIGF1dG8gb3B0aW9uYWxDb25maWd1cmF0aW9uID0gZ2V0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbihjYW5kaWRhdGVDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMsIGFjY2Vz
cyk7CisgICAgaWYgKCFvcHRpb25hbENvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29uc2Vu
dENhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBhY2Nlc3NdIChDb25zZW50U3RhdHVzIHN0YXR1cywgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJlc3Ry
aWN0aW9ucykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgLy8gMy4xLjEuMiBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNl
bnQsIGN0ZC4KKyAgICAgICAgLy8gMjIuIExldCBjb25zZW50IHN0YXR1cyBhbmQgdXBkYXRlZCBy
ZXN0cmljdGlvbnMgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBHZXQgQ29uc2VudCBTdGF0
dXMgYWxnb3JpdGhtIG9uIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sCisgICAgICAgIC8vICAg
ICByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiBhbmQgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIHZh
bHVlIG9mIGNvbnNlbnQgc3RhdHVzIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgICAgICBz
d2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5p
ZWQ6CisgICAgICAgICAgICAvLyDihrMgQ29uc2VudERlbmllZDoKKyAgICAgICAgICAgIC8vICAg
IFJldHVybiBDb25zZW50RGVuaWVkIGFuZCB1cGRhdGVkIHJlc3RyaWN0aW9ucy4KKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5kb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25TdGVwKFdURk1vdmUoY29uZmln
dXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBDb25zZW50U3RhdHVzOjpJ
bmZvcm1Vc2VyOgorICAgICAgICAgICAgLy8g4oazIEluZm9ybVVzZXIKKyAgICAgICAgICAgIC8v
ICAgIEluZm9ybSB0aGUgdXNlciB0aGF0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgaW4g
dXNlIGluIHRoZSBvcmlnaW4gaW5jbHVkaW5nLCBzcGVjaWZpY2FsbHksIHRoZSBpbmZvcm1hdGlv
biB0aGF0CisgICAgICAgICAgICAvLyAgICBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9v
ciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZSB3aWxs
IGJlIHVzZWQgaWYgdGhlCisgICAgICAgICAgICAvLyAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXIg
bWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgInJlcXVpcmVkIi4gQ29udGlu
dWUgdG8gdGhlIG5leHQgc3RlcC4KKyAgICAgICAgICAgIC8vIE5PVEU6IEltcGxlbWVudC4KKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6QWxsb3dlZDoK
KyAgICAgICAgICAgIC8vIOKGsyBBbGxvd2VkOgorICAgICAgICAgICAgLy8gQ29udGludWUgdG8g
dGhlIG5leHQgc3RlcC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8v
IDIzLiBSZXR1cm4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgfTsKKyAgICBnZXRDb25zZW50U3RhdHVzKFdU
Rk1vdmUob3B0aW9uYWxDb25maWd1cmF0aW9uLnZhbHVlKCkpLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cyksIGFjY2VzcywgV1RGTW92ZShjb25zZW50Q2FsbGJhY2spKTsKK30KKworYm9vbCBDRE1Qcml2
YXRlOjppc1BlcnNpc3RlbnRUeXBlKENETVNlc3Npb25UeXBlIHNlc3Npb25UeXBlKQoreworICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2lzLXBlcnNpc3RlbnQt
c2Vzc2lvbi10eXBlCisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYK
KworICAgIC8vIDUuMS4xLiBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8KKyAgICAvLyAxLiBM
ZXQgdGhlIHNlc3Npb24gdHlwZSBiZSB0aGUgc3BlY2lmaWVkIENETVNlc3Npb25UeXBlIHZhbHVl
LgorICAgIC8vIDIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSB2YWx1ZSBvZiBzZXNzaW9uIHR5
cGUgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgc3dpdGNoIChzZXNzaW9uVHlwZSkgewor
ICAgIGNhc2UgQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeToKKyAgICAgICAgLy8g4oazICJ0ZW1w
b3JhcnkiCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQ
ZXJzaXN0ZW50TGljZW5zZToKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNh
Z2VSZWNvcmQ6CisgICAgICAgIC8vIOKGsyAicGVyc2lzdGVudC1saWNlbnNlIgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETVBy
aXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmlj
dGlvbnMsIExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MpCit7CisgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFu
ZC1jb25zZW50CisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKwor
ICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50Cisg
ICAgLy8gR2l2ZW4gYSBLZXkgU3lzdGVtcyBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbiwg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwKKyAgICAv
LyByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiwgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBv
cnRlZCBjb25maWd1cmF0aW9uLCBOb3RTdXBwb3J0ZWQsIG9yIENvbnNlbnREZW5pZWQKKyAgICAv
LyBhcyBhcHByb3ByaWF0ZSBhbmQsIGluIHRoZSBDb25zZW50RGVuaWVkIGNhc2UsIHJlc3RyaWN0
aW9ucy4KKworICAgIC8vIDEuIExldCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGJlIGEgbmV3
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gZGljdGlvbmFyeS4KKyAgICBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiB7IH07CisKKyAgICAvLyAyLiBT
ZXQgdGhlIGxhYmVsIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFs
IHRoZSBsYWJlbCBtZW1iZXIgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24uCisgICAgYWNjdW11
bGF0ZWRDb25maWd1cmF0aW9uLmxhYmVsID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5sYWJlbDsK
KworICAgIC8vIDMuIElmIHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBjYW5kaWRhdGUgY29u
ZmlndXJhdGlvbiBpcyBub24tZW1wdHksIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIGlm
ICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLmlzRW1wdHkoKSkgeworICAg
ICAgICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgdHlwZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2Yg
RE9NU3RyaW5ncy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkVHlwZXM7CisKKyAg
ICAgICAgLy8gMy4yLiBGb3IgZWFjaCB2YWx1ZSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidz
IGluaXREYXRhVHlwZXMgbWVtYmVyOgorICAgICAgICBmb3IgKGF1dG8gaW5pdERhdGFUeXBlIDog
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKSB7CisgICAgICAgICAgICAvLyAz
LjIuMS4gTGV0IGluaXREYXRhVHlwZSBiZSB0aGUgdmFsdWUuCisgICAgICAgICAgICAvLyAzLjIu
Mi4gSWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGdlbmVyYXRpbmcgcmVxdWVzdHMgYmFz
ZWQgb24gaW5pdERhdGFUeXBlLCBhZGQgaW5pdERhdGFUeXBlCisgICAgICAgICAgICAvLyAgICAg
ICAgdG8gc3VwcG9ydGVkIHR5cGVzLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2
ZS4gVGhlIGVtcHR5IHN0cmluZyBpcyBuZXZlciBzdXBwb3J0ZWQuCisgICAgICAgICAgICBpZiAo
aW5pdERhdGFUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgaWYgKHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5
cGUpKQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChpbml0RGF0YVR5cGUp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4zLiBJZiBzdXBwb3J0ZWQgdHlwZXMgaXMgZW1w
dHksIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChzdXBwb3J0ZWRUeXBlcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIDMu
NC4gU2V0IHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uIHRvIHN1cHBvcnRlZCB0eXBlcy4KKyAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmluaXREYXRhVHlwZXMgPSBXVEZNb3ZlKHN1cHBvcnRlZFR5cGVzKTsKKyAgICB9CisKKyAgICAv
LyA0LiBMZXQgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBiZSB0aGUgdmFsdWUg
b2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVy
LgorICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0g
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisKKyAgICAvLyA1
LiBJZiBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVtZW50IGlzICJvcHRpb25hbCIgYW5k
IERpc3RpbmN0aXZlIElkZW50aWZpZXJzIGFyZSBub3QgYWxsb3dlZCBhY2NvcmRpbmcgdG8KKyAg
ICAvLyAgICByZXN0cmljdGlvbnMsIHNldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVt
ZW50IHRvICJub3QtYWxsb3dlZCIuCisgICAgaWYgKGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVp
cmVtZW50ID09IENETVJlcXVpcmVtZW50OjpPcHRpb25hbCAmJiByZXN0cmljdGlvbnMuZGlzdGlu
Y3RpdmVJZGVudGlmaWVyRGVuaWVkKQorICAgICAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXJSZXF1
aXJlbWVudCA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworCisgICAgLy8gNi4gRm9sbG93
IHRoZSBzdGVwcyBmb3IgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBmcm9tIHRo
ZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBzd2l0Y2ggKGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVp
cmVtZW50KSB7CisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ6CisgICAgICAgIC8v
IOKGsyAicmVxdWlyZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5v
dCBzdXBwb3J0IHVzZSBvZiBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGluIGNvbWJpbmF0aW9u
CisgICAgICAgIC8vIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdHJpY3Rp
b25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9
PSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6T3B0aW9u
YWw6CisgICAgICAgIC8vIOKGsyAib3B0aW9uYWwiCisgICAgICAgIC8vIENvbnRpbnVlIHdpdGgg
dGhlIGZvbGxvd2luZyBzdGVwcy4KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENETVJlcXVp
cmVtZW50OjpOb3RBbGxvd2VkOgorICAgICAgICAvLyDihrMgIm5vdC1hbGxvd2VkIgorICAgICAg
ICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdXNlIERpc3RpbmN0aXZlIElkZW50
aWZpZXIocykgb3IgRGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykKKyAgICAgICAg
Ly8gaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0
cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIDcuIFNldCB0aGUgZGlz
dGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGVxdWFsIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQuCisgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9IGRpc3RpbmN0aXZlSWRlbnRp
ZmllclJlcXVpcmVtZW50OworCisgICAgLy8gOC4gTGV0IHBlcnNpc3RlbnQgc3RhdGUgcmVxdWly
ZW1lbnQgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3Mg
cGVyc2lzdGVudFN0YXRlIG1lbWJlci4KKyAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudCA9IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlOwor
CisgICAgLy8gOS4gSWYgcGVyc2lzdGVudCBzdGF0ZSByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwi
IGFuZCBwZXJzaXN0aW5nIHN0YXRlIGlzIG5vdCBhbGxvd2VkIGFjY29yZGluZyB0byByZXN0cmlj
dGlvbnMsCisgICAgLy8gICAgc2V0IHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQgdG8gIm5v
dC1hbGxvd2VkIi4KKyAgICBpZiAocGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgPT0gQ0RNUmVx
dWlyZW1lbnQ6Ok9wdGlvbmFsICYmIHJlc3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQp
CisgICAgICAgIHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50ID0gQ0RNUmVxdWlyZW1lbnQ6Ok5v
dEFsbG93ZWQ7CisKKyAgICAvLyAxMC4gRm9sbG93IHRoZSBzdGVwcyBmb3IgcGVyc2lzdGVudCBz
dGF0ZSByZXF1aXJlbWVudCBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBzd2l0Y2ggKHBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KSB7CisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6UmVx
dWlyZWQ6CisgICAgICAgIC8vIOKGsyAicmVxdWlyZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBs
ZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBlcnNpc3Rpbmcgc3RhdGUgaW4gY29tYmluYXRp
b24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGFuZCByZXN0cmlj
dGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICh0aGlzLT5wZXJzaXN0ZW50
U3RhdGVSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykg
PT0gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlv
bmFsOgorICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgorICAgICAgICAvLyBDb250aW51ZSB3aXRo
IHRoZSBmb2xsb3dpbmcgc3RlcHMuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDRE1SZXF1
aXJlbWVudDo6Tm90QWxsb3dlZDoKKyAgICAgICAgLy8g4oazICJub3QtYWxsb3dlZCIKKyAgICAg
ICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHBlcnNpc3Rpbmcgc3RhdGUgaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGFu
ZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQKKyAgICAgICAgaWYgKHRoaXMtPnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJp
Y3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyAxMS4gU2V0IHRo
ZSBwZXJzaXN0ZW50U3RhdGUgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8g
ZXF1YWwgdGhlIHZhbHVlIG9mIHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQuCisgICAgYWNj
dW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IHBlcnNpc3RlbnRTdGF0ZVJl
cXVpcmVtZW50OworCisgICAgLy8gMTIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSBmaXJzdCBt
YXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgVmVjdG9yPENE
TVNlc3Npb25UeXBlPiBzZXNzaW9uVHlwZXM7CisKKyAgICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3Vy
YXRpb24uc2Vzc2lvblR5cGVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyDihrMgSWYgdGhlIHNl
c3Npb25UeXBlcyBtZW1iZXIgaXMgcHJlc2VudCBbV2ViSURMXSBpbiBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbgorICAgICAgICAvLyBMZXQgc2Vzc2lvbiB0eXBlcyBiZSBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbidzIHNlc3Npb25UeXBlcyBtZW1iZXIuCisgICAgICAgIHNlc3Npb25UeXBlcyA9IGNh
bmRpZGF0ZUNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIOKGsyBPdGhlcndpc2UKKyAgICAgICAgLy8gTGV0IHNlc3Npb24gdHlwZXMgYmUgWyAidGVt
cG9yYXJ5IiBdLgorICAgICAgICBzZXNzaW9uVHlwZXMgPSB7IENETVNlc3Npb25UeXBlOjpUZW1w
b3JhcnkgfTsKKyAgICB9CisKKyAgICAvLyAxMy4gRm9yIGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0
eXBlczoKKyAgICBmb3IgKGF1dG8mIHNlc3Npb25UeXBlIDogc2Vzc2lvblR5cGVzKSB7CisgICAg
ICAgIC8vIDEzLjEuIExldCBzZXNzaW9uIHR5cGUgYmUgdGhlIHZhbHVlLgorICAgICAgICAvLyAx
My4yLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVl
IGlzICJub3QtYWxsb3dlZCIgYW5kIHRoZQorICAgICAgICAvLyAgICAgICBJcyBwZXJzaXN0ZW50
IHNlc3Npb24gdHlwZT8gYWxnb3JpdGhtIHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJl
dHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24u
cGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lz
dGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICAvLyAxMy4zLiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9y
dCBzZXNzaW9uIHR5cGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uCisgICAgICAgIC8vICAgICAgIGFuZCByZXN0cmljdGlvbnMgZm9yIG90aGVyIHJlYXNvbnMs
IHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKHNlc3Npb25UeXBlLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxMy40IElmIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUgaXMgIm9wdGlv
bmFsIiBhbmQgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBJcworICAgICAgICAvLyAgICAgIHBl
cnNpc3RlbnQgc2Vzc2lvbiB0eXBlPyBhbGdvcml0aG0gb24gc2Vzc2lvbiB0eXBlIGlzIHRydWUs
IGNoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlCisgICAg
ICAgIC8vICAgICAgdmFsdWUgdG8gInJlcXVpcmVkIi4KKyAgICAgICAgaWYgKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
ICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpSZXF1aXJl
ZDsKKyAgICB9CisKKyAgICAvLyAxNC4gU2V0IHRoZSBzZXNzaW9uVHlwZXMgbWVtYmVyIG9mIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gc2Vzc2lvbiB0eXBlcy4KKyAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzID0gc2Vzc2lvblR5cGVzOworCisgICAgLy8gMTUu
IElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBhbmQgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVycyBp
biBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBhcmUgYm90aCBlbXB0eSwgcmV0dXJuIE5vdFN1cHBv
cnRlZC4KKyAgICBpZiAoY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5p
c0VtcHR5KCkgJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyAxNi4g4oazIElm
IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24g
aXMgbm9uLWVtcHR5OgorICAgIGlmICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFi
aWxpdGllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gMTYuMS4gTGV0IHZpZGVvIGNhcGFiaWxp
dGllcyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgR2V0IFN1cHBvcnRlZCBDYXBhYmls
aXRpZXMgZm9yIEF1ZGlvL1ZpZGVvIFR5cGUgYWxnb3JpdGhtIG9uCisgICAgICAgIC8vICAgICAg
IFZpZGVvLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJl
ciwgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwgYW5kIHJlc3RyaWN0aW9ucy4KKyAgICAgICAg
YXV0byB2aWRlb0NhcGFiaWxpdGllcyA9IGdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvckF1ZGlv
VmlkZW9UeXBlKEF1ZGlvVmlkZW9UeXBlOjpWaWRlbywgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52
aWRlb0NhcGFiaWxpdGllcywgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMp
OworCisgICAgICAgIC8vIDE2LjIuIElmIHZpZGVvIGNhcGFiaWxpdGllcyBpcyBudWxsLCByZXR1
cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxNi4zIFNldCB0aGUgdmlk
ZW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gdmlk
ZW8gY2FwYWJpbGl0aWVzLgorICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlkZW9D
YXBhYmlsaXRpZXMgPSBXVEZNb3ZlKHZpZGVvQ2FwYWJpbGl0aWVzLnZhbHVlKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIDE2LiDihrMgT3RoZXJ3aXNlOgorICAgICAgICAvLyAgICAgU2V0
IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlv
biB0byBhbiBlbXB0eSBzZXF1ZW5jZS4KKyAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LnZpZGVvQ2FwYWJpbGl0aWVzID0geyB9OworICAgIH0KKworICAgIC8vIDE3LiDihrMgSWYgdGhl
IGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBpcyBu
b24tZW1wdHk6CisgICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0
aWVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyAxNy4xLiBMZXQgYXVkaW8gY2FwYWJpbGl0aWVz
IGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBHZXQgU3VwcG9ydGVkIENhcGFiaWxpdGll
cyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0gb24KKyAgICAgICAgLy8gICAgICAgQXVk
aW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyLCBh
Y2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVzdHJpY3Rpb25zLgorICAgICAgICBhdXRv
IGF1ZGlvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRl
b1R5cGUoQXVkaW9WaWRlb1R5cGU6OkF1ZGlvLCBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlv
Q2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyk7CisK
KyAgICAgICAgLy8gMTcuMi4gSWYgYXVkaW8gY2FwYWJpbGl0aWVzIGlzIG51bGwsIHJldHVybiBO
b3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIDE3LjMgU2V0IHRoZSBhdWRpb0Nh
cGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBhdWRpbyBj
YXBhYmlsaXRpZXMuCisgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFi
aWxpdGllcyA9IFdURk1vdmUoYXVkaW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgLy8gMTcuIOKGsyBPdGhlcndpc2U6CisgICAgICAgIC8vICAgICBTZXQgdGhl
IGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGFuIGVtcHR5IHNlcXVlbmNlLgorICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uYXVk
aW9DYXBhYmlsaXRpZXMgPSB7IH07CisgICAgfQorCisgICAgLy8gMTguIElmIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMgIm9wdGlvbmFs
IiwgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nCisgICAgLy8gICAgIGNv
bmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBpZiAoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVudDo6T3B0aW9u
YWwpIHsKKyAgICAgICAgLy8g4oazIElmIHRoZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyB1c2Ug
RGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBvciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRp
ZmllcihzKSBmb3IgYW55IG9mIHRoZQorICAgICAgICAvLyAgICBjb21iaW5hdGlvbnMgaW4gYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlmaWVy
c1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBD
RE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpIHsKKyAgICAgICAgICAgIC8vIENoYW5nZSBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRvICJyZXF1
aXJlZCIuCisgICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8g4oazIE90aGVyd2lzZQorICAgICAgICAgICAgLy8gICAgQ2hhbmdlIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgdG8g
Im5vdC1hbGxvd2VkIi4KKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0
aW5jdGl2ZUlkZW50aWZpZXIgPSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIDE5LiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVy
c2lzdGVudFN0YXRlIHZhbHVlIGlzICJvcHRpb25hbCIsIGZvbGxvdyB0aGUgc3RlcHMgZm9yIHRo
ZSBmaXJzdCBtYXRjaGluZworICAgIC8vICAgICBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5n
IGxpc3Q6CisgICAgaWYgKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUg
PT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsKSB7CisgICAgICAgIC8vIOKGsyBJZiB0aGUgaW1w
bGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBzdGF0ZSBmb3IgYW55IG9mIHRoZSBjb21i
aW5hdGlvbnMgaW4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAodGhpcy0+
cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0
cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgeworICAgICAgICAgICAgLy8g
Q2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUg
dG8gInJlcXVpcmVkIi4KKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCisgICAgICAgICAgICAvLyAgICBDaGFuZ2Ug
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0byAibm90
LWFsbG93ZWQiLgorICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3Rl
bnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25maWd1cmF0aW9uIHNwZWNp
ZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uCisgICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90IGFsbG93ZWQgaW4g
dGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KKyAgICBpZiAoIXN1cHBvcnRzQ29uZmln
dXJhdGlvbihhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgaWYgKChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCB8fCBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgJiYg
YWNjZXNzID09IExvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247Cisg
ICAgLy8gTk9URTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0dXMoKS4KK30KKworT3B0aW9u
YWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENh
cGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKENETVByaXZhdGU6OkF1ZGlvVmlkZW9UeXBlIHR5
cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRp
ZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9u
LCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykKK3sKKyAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNhcGFiaWxpdGllcy1mb3It
YXVkaW8tdmlkZW8tdHlwZQorICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAy
MDE2CisKKyAgICAvLyAzLjEuMS4zIEdldCBTdXBwb3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRp
by9WaWRlbyBUeXBlCisKKyAgICAvLyBHaXZlbiBhbiBhdWRpby92aWRlbyB0eXBlLCBDRE1NZWRp
YUNhcGFiaWxpdHkgc2VxdWVuY2UgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdGllcywgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbgorICAgIC8vIHBhcnRpYWwgY29uZmlndXJhdGlvbiwgYW5kIHJl
c3RyaWN0aW9ucywgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIHN1cHBvcnRl
ZCBDRE1NZWRpYUNhcGFiaWxpdHkgdmFsdWVzCisgICAgLy8gZm9yIHRoaXMgYXVkaW8vdmlkZW8g
dHlwZSBvciBudWxsIGFzIGFwcHJvcHJpYXRlLgorCisgICAgLy8gMS4gTGV0IGxvY2FsIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBjb3B5IG9mIHBhcnRpYWwgY29uZmlndXJh
dGlvbi4KKyAgICBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJh
dGlvbiA9IHBhcnRpYWxDb25maWd1cmF0aW9uOworCisgICAgLy8gMi4gTGV0IHN1cHBvcnRlZCBt
ZWRpYSBjYXBhYmlsaXRpZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgQ0RNTWVkaWFDYXBhYmls
aXR5IGRpY3Rpb25hcmllcy4KKyAgICBWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiBzdXBwb3J0
ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07CisKKyAgICAvLyAzLiBGb3IgZWFjaCByZXF1ZXN0ZWQg
bWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzOgorICAgIGZv
ciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJlcXVlc3RlZENhcGFiaWxpdGllcykgewor
ICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFi
aWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCisgICAgICAgIC8vIDMuMi4gTGV0IHJvYnVzdG5l
c3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyByb2J1c3RuZXNzIG1lbWJlci4KKyAg
ICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0ZWRDYXBhYmlsaXR5LnJvYnVzdG5lc3M7
CisKKyAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMgdGhlIGVtcHR5IHN0cmluZywg
cmV0dXJuIG51bGwuCisgICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBhYmlsaXR5LmNvbnRlbnRUeXBl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
Ly8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52YWxpZCBvciB1bnJlY29nbml6ZWQgTUlN
RSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAgICAgIE9wdGlvbmFs
PFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNlZENvbnRlbnRUeXBlOjpjcmVh
dGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9kZTo6UmZjMjA0NSk7CisgICAg
ICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRhaW5lciB0eXBlIHNwZWNpZmllZCBieSBj
b250ZW50IHR5cGUuCisgICAgICAgIFN0cmluZyBjb250YWluZXIgPSBjb250ZW50VHlwZS0+bWlt
ZVR5cGUoKTsKKworICAgICAgICAvLyAzLjYuIElmIHRoZSB1c2VyIGFnZW50IGRvZXMgbm90IHN1
cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uIFRoZSBjYXNl
LXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRl
dGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4KKyAgICAgICAgLy8gMy43LiBMZXQgcGFy
YW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFdIHBhcmFtZXRlcnMsIGlmIGFueSwgc3Bl
Y2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KKyAgICAgICAgLy8gMy44LiBJZiB0aGUgdXNlciBhZ2Vu
dCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1ldGVycywgY29udGludWUgdG8g
dGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAvLyAzLjkuIExldCBtZWRpYSB0eXBlcyBiZSB0
aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMgc3BlY2lmaWVkIGJ5IHBhcmFt
ZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNv
bXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQyBvciBvdGhlciBz
cGVjaWZpY2F0aW9uLgorICAgICAgICBTdHJpbmcgY29kZWNzID0gY29udGVudFR5cGUtPnBhcmFt
ZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7CisgICAgICAgIGlmIChjb250ZW50VHlwZS0+cGFy
YW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgpID8gMCA6IDEpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgLy8gMy4xMC4gSWYgbWVkaWEgdHlwZXMgaXMgZW1wdHk6Cisg
ICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyDihrMgSWYgY29u
dGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVjaWZpYyBzZXQgb2YgY29kZWNzIGFuZCBj
b2RlYyBjb25zdHJhaW50czoKKyAgICAgICAgICAgIC8vIOKGsyBPdGhlcndpc2U6CisgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4xMS4gSWYg
Y29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1ZGlvL3ZpZGVvIHR5cGUsIGNvbnRpbnVl
IHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKyAgICAgICAgLy8gMy4xMi4gSWYgcm9idXN0bmVzcyBp
cyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFpbnMgYW4gdW5yZWNvZ25pemVkIHZhbHVl
IG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQorICAgICAgICAvLyAgICAgICBpbXBsZW1lbnRh
dGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBTdHJpbmcgY29tcGFyaXNvbiBp
cyBjYXNlLXNlbnNpdGl2ZS4KKyAgICAgICAgaWYgKCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAh
c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkuY29udGFpbnMocm9idXN0bmVzcykpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNlciBhZ2VudCBhbmQgaW1w
bGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9mIGVuY3J5cHRlZCBtZWRp
YSBkYXRhIGZvciB0aGUKKyAgICAgICAgLy8gICAgICAgY29tYmluYXRpb24gb2YgY29udGFpbmVy
LCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9jYWwgYWNjdW11bGF0ZWQgY29uZmlndXJh
dGlvbiBpbiBjb21iaW5hdGlvbgorICAgICAgICAvLyAgICAgICB3aXRoIHJlc3RyaWN0aW9uczoK
KyAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAg
ICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShjb250ZW50VHlwZS0+bWltZVR5cGUoKSk7
CisgICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7CisKKyAgICAgICAgICAg
IC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRp
YVNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlw
ZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRl
ZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24sIHJlc3RyaWN0aW9ucykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyAzLjEzLjEuIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byBzdXBwb3J0ZWQgbWVk
aWEgY2FwYWJpbGl0aWVzLgorICAgICAgICBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcy5hcHBl
bmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisKKyAgICAgICAgLy8gMy4xMy4yLiDihrMgSWYgYXVk
aW8vdmlkZW8gdHlwZSBpcyBWaWRlbzoKKyAgICAgICAgLy8gICAgICAgICBBZGQgcmVxdWVzdGVk
IG1lZGlhIGNhcGFiaWxpdHkgdG8gdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBsb2Nh
bCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLgorICAgICAgICBpZiAodHlwZSA9PSBBdWRpb1Zp
ZGVvVHlwZTo6VmlkZW8pCisgICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlk
ZW9DYXBhYmlsaXRpZXMuYXBwZW5kKHJlcXVlc3RlZENhcGFiaWxpdHkpOworICAgICAgICAvLyAz
LjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlzIEF1ZGlvOgorICAgICAgICAvLyAgICAg
ICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byB0aGUgYXVkaW9DYXBhYmlsaXRp
ZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGll
cy5hcHBlbmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisgICAgfQorCisgICAgLy8gNC4gSWYgc3Vw
cG9ydGVkIG1lZGlhIGNhcGFiaWxpdGllcyBpcyBlbXB0eSwgcmV0dXJuIG51bGwuCisgICAgaWYg
KHN1cHBvcnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIC8vIDUuIFJldHVybiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0
aWVzLgorICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllczsKK30KKwordm9pZCBD
RE1Qcml2YXRlOjpnZXRDb25zZW50U3RhdHVzKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJlc3RyaWN0aW9ucywg
TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0
LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25zZW50CisgICAgLy8gVzNDIEVkaXRvcidz
IERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKworICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBD
b25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQuCisgICAgLy8gMjEuIElmIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMgInJlcXVpcmVk
IiBhbmQgdGhlIERpc3RpbmN0aXZlIElkZW50aWZpZXIocykgYXNzb2NpYXRlZAorICAgIC8vICAg
ICB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYXJlIG5vdCB1bmlxdWUgcGVyIG9yaWdp
biBhbmQgcHJvZmlsZSBhbmQgY2xlYXJhYmxlOgorICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAm
JiAhZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKSB7CisgICAgICAgIC8vIDIxLjEuIFVwZGF0ZSByZXN0
cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBkZXNjcmliZWQgYnkg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3QgaGF2ZSB1c2VyIGNvbnNlbnQuCisgICAg
ICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVlOworICAg
ICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhLyNnZXQtY29uc2VudC1zdGF0dXMKKyAgICAvLyAzLjEuMS40IEdldCBDb25zZW50IFN0YXR1
cworICAgIC8vIEdpdmVuIGFuIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9u
cyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIHRoZSBjb25zZW50IHN0YXR1cyBm
b3IgYWNjdW11bGF0ZWQKKyAgICAvLyBjb25maWd1cmF0aW9uIGFuZCBvcmlnaW4gYXMgb25lIG9m
IENvbnNlbnREZW5pZWQsIEluZm9ybVVzZXIgb3IgQWxsb3dlZCwgdG9nZXRoZXIgd2l0aCBhbiB1
cGRhdGVkIHZhbHVlIGZvciByZXN0cmljdGlvbnMKKyAgICAvLyBpbiB0aGUgQ29uc2VudERlbmll
ZCBjYXNlLgorCisgICAgLy8gMS4gSWYgdGhlcmUgaXMgcGVyc2lzdGVkIGRlbmlhbCBmb3Igb3Jp
Z2luIGluZGljYXRpbmcgdGhhdCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCBhbGxv
d2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLjEuIFVwZGF0ZSByZXN0cmlj
dGlvbnMgdG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHdoaWNoIGNvbnNlbnQgaGFz
IGJlZW4gZGVuaWVkLgorICAgIC8vIDEuMi4gUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3Ry
aWN0aW9ucy4KKyAgICAvLyAyLiBJZiB0aGVyZSBpcyBwZXJzaXN0ZWQgY29uc2VudCBmb3Igb3Jp
Z2luIGluZGljYXRpbmcgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBhbGxvd2VkLCByZXR1
cm4gQWxsb3dlZC4KKyAgICAvLyBOT1RFOiBwZXJzaXN0ZWQgZGVuaWFsIC8gY29uc2VudCB1bmlt
cGxlbWVudGVkLgorCisgICAgLy8gMy4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6
CisgICAgLy8gICAg4oazIFRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIgYW5kIHRoZSBjb21iaW5h
dGlvbiBvZiB0aGUgVXNlciBBZ2VudCwKKyAgICAvLyAgICAgICBpbXBsZW1lbnRhdGlvbiBhbmQg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBmb2xsb3cgYWxsIHRoZSByZWNvbW1l
bmRhdGlvbnMgb2YgQWxsb3cgUGVyc2lzdGVudCBEYXRhIHRvIEJlIENsZWFyZWQKKyAgICAvLyAg
ICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKS4KKyAgICAvLyBO
T1RFOiBhc3N1bWUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgZm9sbG93IGFsbCByZWNvbW1lbmRhdGlv
bnMuCisKKyAgICAvLyAgICDihrMgVGhlIHVzZXIgYWdlbnQgcmVxdWlyZXMgZXhwbGljaXQgdXNl
ciBjb25zZW50IGZvciB0aGUgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBmb3Igb3RoZXIgcmVh
c29ucy4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWly
ZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCisKKyAgICAvLyAzLjEuIFJlcXVlc3QgdXNlciBjb25z
ZW50IHRvIHVzZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGluIHRoZSBvcmlnaW4gYW5kIHdh
aXQgZm9yIHRoZSB1c2VyIHJlc3BvbnNlLgorICAgIC8vICAgICAgVGhlIGNvbnNlbnQgbXVzdCBp
bmNsdWRlIGNvbnNlbnQgdG8gdXNlIGEgRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBhbmQvb3Ig
RGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykgYXMgYXBwcm9wcmlhdGUKKyAgICAv
LyAgICAgIGlmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXIgbWVtYmVyIGlzICJyZXF1aXJlZCIuCisgICAgLy8gMy4yLiBJZiBjb25zZW50IHdhcyBkZW5p
ZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDMuMi4xLiBVcGRhdGUgcmVzdHJp
Y3Rpb25zIHRvIHJlZmxlY3QgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB3aGljaCBjb25zZW50IHdh
cyBkZW5pZWQuCisgICAgLy8gMy4yLjEuIFJldHVybiBDb25zZW50RGVuaWVkIGFuZCByZXN0cmlj
dGlvbnMuCisgICAgLy8gTk9URTogYXNzdW1lIGltcGxpZWQgY29uc2VudCBpZiB0aGUgY29tYmlu
YXRpb24gb2Ygb3JpZ2luIGFuZCB0b3BPcmlnaW4gYWxsb3dzIGl0LgorICAgIGlmIChhY2N1bXVs
YXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50
OjpSZXF1aXJlZCAmJiBhY2Nlc3MgPT0gTG9jYWxTdG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkKSB7
CisgICAgICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVl
OworICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3Zl
KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0LiBJZiB0aGUgZGlzdGluY3RpdmVJZGVudGlm
aWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCAibm90LWFsbG93
ZWQiLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmRpc3RpbmN0aXZlSWRlbnRpZmllciAhPSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkgewor
ICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpJbmZvcm1Vc2VyLCBXVEZNb3ZlKGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyA1LiBJZiB0aGUgdXNlciBhZ2VudCByZXF1aXJlcyBpbmZv
cm1pbmcgdGhlIHVzZXIgZm9yIHRoZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGZvciBvdGhl
ciByZWFzb25zLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVz
ZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBpbmZvcm1pbmcgdGhlIHVzZXIuCisKKyAgICAvLyA2
LiBSZXR1cm4gQWxsb3dlZC4KKyAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpBbGxvd2VkLCBX
VEZNb3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7
Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCAyNWY3ODE2YTJmZTFkYTZmOTBjMmZlZjc3
NzU1MTQwNmFhMGY0YTAzLi5mOGQyYzEzOWIwN2EzM2M3YmIzZDMyMzhjNjE4ZTE3ZmI4ZjQzYTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCkBAIC0zMSwyMSArMzEsMzEgQEAKICNpbmNsdWRlICJDRE1SZXF1aXJlbWVudC5o
IgogI2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eTsK
IHN0cnVjdCBDRE1SZXN0cmljdGlvbnM7CiAKLWNsYXNzIENETVByaXZhdGUgeworY2xhc3MgQ0RN
UHJpdmF0ZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1Qcml2YXRlPiB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5DRE1Qcml2YXRlKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0ID0gMDsKKyAgICBlbnVtIGNsYXNzIExvY2Fs
U3RvcmFnZUFjY2VzcyA6IGJvb2wgeworICAgICAgICBOb3RBbGxvd2VkLAorICAgICAgICBBbGxv
d2VkLAorICAgIH07CisKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4p
PjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbihDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwg
TG9jYWxTdG9yYWdlQWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CisK
KyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lv
blR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVz
dG5lc3NlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENETVJlcXVpcmVtZW50IGRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ0RNUmVx
dWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFy
YWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwpAQCAtNTYs
NiArNjYsMzQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VC
Q09SRV9FWFBPUlQgQ0RNUHJpdmF0ZSgpOworICAgIHN0YXRpYyBib29sIGlzUGVyc2lzdGVudFR5
cGUoQ0RNU2Vzc2lvblR5cGUpOworCisgICAgZW51bSBjbGFzcyBDb25maWd1cmF0aW9uU3RhdHVz
IHsKKyAgICAgICAgU3VwcG9ydGVkLAorICAgICAgICBOb3RTdXBwb3J0ZWQsCisgICAgICAgIENv
bnNlbnREZW5pZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQ29uc2VudFN0YXR1cyB7Cisg
ICAgICAgIENvbnNlbnREZW5pZWQsCisgICAgICAgIEluZm9ybVVzZXIsCisgICAgICAgIEFsbG93
ZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQXVkaW9WaWRlb1R5cGUgeworICAgICAgICBB
dWRpbywKKyAgICAgICAgVmlkZW8sCisgICAgfTsKKworICAgIHZvaWQgZG9TdXBwb3J0ZWRDb25m
aWd1cmF0aW9uU3RlcChDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmln
dXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiYsIExvY2FsU3RvcmFnZUFjY2VzcywgU3VwcG9ydGVk
Q29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOworICAgIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24+IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiwgTG9j
YWxTdG9yYWdlQWNjZXNzKTsKKyAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5
Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5
cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRp
ZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9u
LCBDRE1SZXN0cmljdGlvbnMmKTsKKworICAgIHVzaW5nIENvbnNlbnRTdGF0dXNDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChDb25zZW50U3RhdHVzLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiYsIENETVJlc3RyaWN0aW9ucyYmKT47CisgICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJl
c3RyaWN0aW9ucyYmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIENvbnNlbnRTdGF0dXNDYWxsYmFjayYm
KTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVJlcXVpcmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCmluZGV4IDY5YWMxMmQzMTZiZjY2NTdiYjBhMjRkYWY3
YWU0ZmEwZmQ0ZjFjOTguLjViMGI3NzgwZDI3ZGZlYjE5M2RjZTZlY2RhNzE3ODUyOGY3Y2Q1OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJl
cXVpcmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUmVxdWlyZW1lbnQuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgeworZW51bSBjbGFzcyBDRE1SZXF1aXJl
bWVudCA6IHVpbnQ4X3QgewogICAgIFJlcXVpcmVkLAogICAgIE9wdGlvbmFsLAogICAgIE5vdEFs
bG93ZWQKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgewogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQsCisgICAg
ICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpSZXF1aXJlZCwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsLAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVu
dDo6Tm90QWxsb3dlZAorICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAppbmRleCBjNTJlMjgyYTEyZTkxYTQ4ODEwYmQxOGI4
N2ViNmFkNjM4ZjIxMGE4Li45Y2EyYWM1OWU4YjEzNTQ2M2E1MmRiNDVlODA3MzFmNTBjNjk0ZjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1S
ZXN0cmljdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1SZXN0cmljdGlvbnMuaApAQCAtMzYsNiArMzYsMzkgQEAgc3RydWN0IENETVJlc3RyaWN0
aW9ucyB7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlRGVuaWVkIHsgZmFsc2UgfTsKICAgICBIYXNoU2V0PENE
TVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJE
ZW5pZWQ7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlRGVuaWVkOworICAgICAg
ICBlbmNvZGVyIDw8IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNUmVzdHJpY3Rpb25zPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3Rp
bmN0aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJEZW5pZWQ7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVk
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxi
b29sPiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVu
dFN0YXRlRGVuaWVkOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZURlbmllZCkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8SGFzaFNldDxD
RE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRIYXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdF
bnVtSGFzaFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAg
ICAgIGRlY29kZXIgPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworICAgICAgICBpZiAoIWRlbmllZFNl
c3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
cmV0dXJuIHt7CisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkLAorICAg
ICAgICAgICAgKnBlcnNpc3RlbnRTdGF0ZURlbmllZCwKKyAgICAgICAgICAgIFdURk1vdmUoKmRl
bmllZFNlc3Npb25UeXBlcyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVNlc3Npb25UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oCmluZGV4IDYwNTc0YTVhNjkzYTk2YzQ5ZjQ5ZmI3MzQ5
NmVkNzViN2UxZTZmYmIuLmUwN2MzMDAyNzkzMDVmNzc0M2YyMmZjZjU0MDZmMmNmYTY4MWRlMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNl
c3Npb25UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNU2Vzc2lvblR5cGUuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgeworZW51bSBjbGFzcyBDRE1TZXNzaW9u
VHlwZSA6IHVpbnQ4X3QgewogICAgIFRlbXBvcmFyeSwKICAgICBQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQsCiAgICAgUGVyc2lzdGVudExpY2Vuc2UKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3Mg
Q0RNU2Vzc2lvblR5cGUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNU2Vzc2lvblR5cGUsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpUZW1wb3Jh
cnksCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZQor
ICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDQ1MTExZGM3NWI1NTA4MGNlZjRlNWZiMzhh
ZTI2MzNiMzllYTcyMzMuLmRhYTNjZWMyNTMwNjcxNDBhMmZlM2I1MjIyOTQ1MGQwODg5MjNmYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ0RNUmVzdHJpY3Rp
b25zLmgiCiAjaW5jbHVkZSAiQ0RNU2Vzc2lvblR5cGUuaCIKKyNpbmNsdWRlICJJbml0RGF0YVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI5MCwxMCArMjkxLDEzIEBAIGJvb2wgQ0RNRmFj
dG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkK
IENETVByaXZhdGVDbGVhcktleTo6Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogQ0RN
UHJpdmF0ZUNsZWFyS2V5Ojp+Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1ib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7Ci0gICAgLy8gYGtleWlkc2Ag
YW5kICdjZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgotICAgIHJl
dHVybiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRz
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgIndlYm0iKSk7
CisgICAgcmV0dXJuIHsKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6a2V5aWRzTmFtZSgpLAor
ICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpLAorICAgICAgICBJbml0RGF0YVJl
Z2lzdHJ5Ojp3ZWJtTmFtZSgpLAorICAgIH07CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zUGVy
c2lzdGVudExpY2Vuc2VUeXBlKGNvbnN0IFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4mIHR5cGVzKQpA
QCAtMzM3LDcgKzM0MSw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0NvbmZp
Z3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAorYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1T
ZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgLy8gT25seSBzdXBwb3J0IHRoZSAndGVtcG9y
YXJ5JyBhbmQgJ3BlcnNpc3RlbnQtbGljZW5zZScgc2Vzc2lvbiB0eXBlcy4KICAgICBpZiAoc2Vz
c2lvblR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSAmJiBzZXNzaW9uVHlwZSAhPSBD
RE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2UpCkBAIC0zNDUsMTAgKzM0OSwxMCBAQCBi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKENETVNlc3Npb25UeXBlJiBzZQogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Jv
YnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJp
bmc+IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsK
ICAgICAvLyBPbmx5IGVtcHR5IGByb2J1c3RuZXNzYCBzdHJpbmcgaXMgc3VwcG9ydGVkLgotICAg
IHJldHVybiByb2J1c3RuZXNzLmlzRW1wdHkoKTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSB9
OwogfQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlQ2xlYXJLZXk6OmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0CkBAIC00MzIsMzQgKzQzNiwy
MCBAQCBPcHRpb25hbDxTdHJpbmc+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVTZXNzaW9u
SWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCiAKIENETUluc3RhbmNlQ2xlYXJLZXk6On5DRE1J
bnN0YW5jZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1DRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgZGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxs
b3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICAvLyBOby1vcC4KLSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQotCi1DRE1J
bnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldERpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGlu
ZyBkaXN0aW5jdGl2ZSBpZGVudGlmaWVycyBhcyBhbGxvd2VkLgotICAgIHJldHVybiAhYWxsb3dl
ZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKLX0KLQotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBD
RE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dl
ZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGluZyBwZXJzaXN0ZW50IHN0YXRlIGFzIGFsbG93ZWQu
Ci0gICAgcmV0dXJuICFhbGxvd2VkID8gU3VjY2VlZGVkIDogRmFpbGVkOworICAgIFN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0
aXZlSWRlbnRpZmllcnM6Ok5vICYmIHBlcnNpc3RlbnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3RlbnRT
dGF0ZTo6Tm8pID8gU3VjY2VlZGVkIDogRmFpbGVkOworICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7
CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ0RNSW5zdGFuY2VD
bGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZl
ciBjZXJ0aWZpY2F0ZS4KLSAgICByZXR1cm4gRmFpbGVkOworICAgIGNhbGxiYWNrKEZhaWxlZCk7
CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCit2b2lkIENE
TUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikKIHsK
LSAgICAvLyBSZWplY3QgYW55IHBlcnNpc3RlbnQgc3RhdGUgc3RvcmFnZS4KLSAgICByZXR1cm4g
c3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7CiB9CiAKIGNv
bnN0IFN0cmluZyYgQ0RNSW5zdGFuY2VDbGVhcktleTo6a2V5U3lzdGVtKCkgY29uc3QKQEAgLTQ5
OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRo
ZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBj
aGVja3MgYXJlIGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDY3MDRhZTdh
OTU3ZjMyZmUxZjg0OTgzZWQzYjNmNjUwMmE1MzE1YTIuLjY2OTdhMDQ1NWJlZjI5MTU1YmY1OTAz
ODRmNTJmMDQyOTFhZGMwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNzQsMTEg
Kzc0LDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUo
Y29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOwogICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJl
c3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3QgZmluYWw7CkBAIC05NywxMSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICAv
LyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkNsZWFyS2V5OyB9Ci0g
ICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQ
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKLSAgICBTdWNjZXNz
VmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIH07CkBAIC0xMTEsNyArMTA5LDcgQEAgcHVibGlj
OgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBh
cmVudCkKICAgICAgICAgOiBtX3BhcmVudEluc3RhbmNlKHBhcmVudCkgeyB9CiAgICAgdm9pZCBy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCmluZGV4IDU3ZGZjYmY0YmM3YzQ4ODQ0ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIu
LmRiMGIyZjhhN2UwZjI2OTZhMWQ4ZGI2ZjRkNGY0N2FhZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2
NTcsMTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShD
RE1JbnN0YW5jZSYgaW5zdGFuY2UpCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVy
OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1f
c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCA9IHNob3VsZDsKKyAgICBtX3ByaXZhdGUtPnNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRpZgorCiBNZWRp
YVRpbWUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2
YXRlLT5kdXJhdGlvbk1lZGlhVGltZSgpOwpAQCAtMTMxMiw5ICsxMzIwLDkgQEAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBNZWRpYVBsYXllcjo6Y2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBr
ZXlJZCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChrZXlJZCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5
KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSkKIHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERh
dGEpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKIH0KIAog
U3RyaW5nIE1lZGlhUGxheWVyOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdl
NmNiOGEzOTBkZjdmZTFhN2FhZTAxNzM5ZGM5NDhmNzc2NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBj
NTY5ZTY3YTQxZTEyMGI3NjQwZWZhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5
QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoVWludDhBcnJheSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0
cmluZygpOyB9CiAjZW5kaWYKIApAQCAtMzY2LDYgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJik7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyAg
ICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQ7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBwYXVzZWQo
KSBjb25zdDsKICAgICBib29sIHNlZWtpbmcoKSBjb25zdDsKIApAQCAtNTE5LDcgKzUyNCw3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29u
c3Q7Ci0gICAgYm9vbCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQg
a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4gbV9tZWRpYVN0cmVhbTsKICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggOWY3ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0
YjBkY2ExY2MxNzVhOC4uN2E4MjA0NzBmOTk5YWM5OWE2YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKQEAgLTI0Myw2ICsyNDMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkg
eyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAppbmRleCA0ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJh
YmZjZGU1YTBkNGI4MTE4ZDAzY2M5MmYxZDYxOWQ2MWQ3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI0Nyw5ICsyNDcsOSBAQCBib29sIENETUZh
Y3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZygpID0gZGVmYXVsdDsKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewotICAgIHJldHVy
biB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOworICAgIHJldHVy
biBjb3B5VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5cGVzKCkpOwogfQogCiBib29sIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0zMDUsNyArMzA1LDcg
QEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzQ29uZmlndXJhdGlv
bldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0QKICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBz
ZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBl
LCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAog
ewogICAgIGlmIChzZXNzaW9uVHlwZSA9PSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAg
ICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVu
dDo6UmVxdWlyZWQpCkBAIC0zMTYsMTMgKzMxNiwxMCBAQCBib29sIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Np
bwogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAK
LWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29u
c3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAg
ICBpZiAocm9idXN0bmVzcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAg
Ly8gRklYTUU6IERldGVybWluZSBhbiBlbnVtZXJhdGVkIGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1
ZXMgc3VwcG9ydGVkIGJ5IEZQUy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHsgZW1w
dHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyAr
MzYzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdAogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0
RGF0YVR5cGUpKQorICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERh
dGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9
PSBzaW5mTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmlu
ZGV4IDUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZkMTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFk
N2FmYmFlMmQyYzU2MTJmODRiNDM0YzBmMTBmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oCkBAIC01NSwxMSArNTUsMTEgQEAgcHVibGljOgogICAgIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZygpOwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3Ry
aW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZElu
aXREYXRhVHlwZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1T
ZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBj
b25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVz
c2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBw
ZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IDcwZWFjMzZhNDc5NzgxNWExYWYyNGUyZDU3YjAyMjZmYjQ5NzljNDYuLjVkOWE5YTBh
ZjU3NTNhMTBiMmRkMTdjMWU5NWI3OTQyYTE0MTgyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAt
MTkzMSw5ICsxOTMxLDcgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKIAogICAgICAgICB1bnNp
Z25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAgICAg
YXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVy
KSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPmtleU5l
ZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAg
ICAgbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CiAgICAgICAg
IHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJLCBhdlJlcXVlc3QpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCBiMTFmNzFhOWI1ZTM4YmY2OThi
MTM5NDlkZGRlODZmM2RkOTk0Y2MxLi4wMGI2ZmI4MjIwY2E3ZjA1YzA5MWYyNjUzODZlMjk5MmY0
MGU2M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTc0LDExICs3NCw5IEBAIHB1Ymxp
YzoKIAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAK
LSAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNl
dFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwotICAgIFN1Y2Nl
c3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZv
aWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRl
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxD
RE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIAogICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CkBAIC0xMjAsNyArMTE4LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3MzI2Nzc1ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0
NjQ3Y2I4ZDMxLi4yYThiYjM4YzcwMzMwN2E3MmE3MTM1MTNmYTZiMjM4NDE0M2FhMWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjY4LDcyICsyNjgsNjMgQEAgYm9vbCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNNZWRpYUNhcGFiaWxpdHkoY29u
c3QgQ0RNTWVkaWEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NW
YWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSBwZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8v
IEZJWE1FOiB2ZXJpZnkgdGhhdCBGYWlyUGxheVN0cmVhbWluZyBkb2VzIG5vdCAoYW5kIGNhbm5v
dCkgZXhwb3NlIGEgZGlzdGluY3RpdmUgaWRlbnRpZmllciB0byB0aGUgY2xpZW50Ci0gICAgaWYg
KGNvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpS
ZXF1aXJlZCkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKLQotICAgIGlmIChjb25maWd1cmF0aW9u
LnBlcnNpc3RlbnRTdGF0ZSAhPSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQgJiYgKGNvbmZpZ3Vy
YXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNh
Z2VSZWNvcmQpIHx8IGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Np
b25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkpKQotICAgICAgICByZXR1cm4gRmFpbGVkOwotCi0g
ICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpS
ZXF1aXJlZCAmJiAhbV9zdG9yYWdlVVJMKQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgIGF1
dG8gaW5pdGlhbGl6ZSA9IFsmXSAoKSB7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLmRpc3Rp
bmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAgICAg
ICByZXR1cm4gRmFpbGVkOwogCi0gICAgaWYgKGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNv
bnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkgJiYgIXN1cHBvcnRzUGVy
c2lzdGVudEtleXMoKSkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKKyAgICAgICAgaWYgKGNvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlICE9IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAo
Y29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNp
c3RlbnRVc2FnZVJlY29yZCkgfHwgY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMo
Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKSkpCisgICAgICAgICAgICByZXR1cm4g
RmFpbGVkOwogCi0gICAgaWYgKCFQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWQ29udGVudEtl
eVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCkpCi0gICAgICAgIHJldHVybiBGYWlsZWQ7CisgICAg
ICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6
UmVxdWlyZWQgJiYgIW1fc3RvcmFnZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7CiAK
LSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQorICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5zZXNz
aW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKSAmJiAh
c3VwcG9ydHNQZXJzaXN0ZW50S2V5cygpKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAot
Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkKLXsKLSAgICAvLyBG
SVhNRTogdmVyaWZ5IHRoYXQgRmFpclBsYXlTdHJlYW1pbmcgZG9lcyBub3QgKGFuZCBjYW5ub3Qp
IGV4cG9zZSBhIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgdG8gdGhlIGNsaWVudAotICAgIHJldHVy
biBTdWNjZWVkZWQ7Ci19CisgICAgICAgIGlmICghUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9B
VkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpKQorICAgICAgICAgICAgcmV0dXJu
IEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sIHBlcnNpc3Rl
bnRTdGF0ZUFsbG93ZWQpCi17Ci0gICAgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVyc2lz
dGVudFN0YXRlQWxsb3dlZDsKLSAgICByZXR1cm4gU3VjY2VlZGVkOworICAgICAgICBtX3BlcnNp
c3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3RhdGUgPT0gQWxsb3dQZXJzaXN0ZW50U3Rh
dGU6OlllczsKKyAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICB9OworICAgIGNhbGxiYWNr
KGluaXRpYWxpemUoKSk7CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUpCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBt
X3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0
dXJuIFN1Y2NlZWRlZDsKKyAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi1DRE1JbnN0YW5j
ZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRT
dG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSkKK3ZvaWQgQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KQogewogICAgIGlmIChzdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkgewogICAgICAgICBtX3N0b3JhZ2VVUkwgPSBuaWw7Ci0gICAgICAgIHJldHVy
biBTdWNjZWVkZWQ7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHN0b3JhZ2VQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rv
cnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVk
OworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJ
c0RpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5LCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1i
b2xpY0xpbmtzOjpZZXMpKSB7CiAgICAgICAgIGF1dG8gdGVtcERpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIk1lZGlhS2V5cyIpOwogICAgICAgICBpZiAo
IXRlbXBEaXJlY3RvcnkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGF1dG8gdGVtcFN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBEaXJlY3RvcnksIEZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShzdG9yYWdlUGF0aCkpOwogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1vdmVGaWxl
KHN0b3JhZ2VEaXJlY3RvcnksIHRlbXBTdG9yYWdlUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4g
RmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
bW92ZUZpbGUodGVtcERpcmVjdG9yeSwgc3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICBy
ZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fc3RvcmFn
ZVVSTCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpzdG9yYWdl
UGF0aCBpc0RpcmVjdG9yeTpOT10pOwotICAgIHJldHVybiBTdWNjZWVkZWQ7CiB9CiAKIFJlZlB0
cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpjcmVhdGVTZXNzaW9uKCkKQEAgLTU4MCw3ICs1NzEsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFs
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1
cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VE
YXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9u
cy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7
CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CkBAIC03MTEsNyArNzAyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBbbV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJl
cXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsK
IAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxi
YWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNj
ZXNzIGNhbGxiYWNrLgogICAgIHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiBtZXRob2Qg
PSBwcm90b2NvbF9nZXRNZXRob2REZXNjcmlwdGlvbihAcHJvdG9jb2woQVZDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNzaW9uOmNvbnRlbnRLZXlSZXF1
ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVTKTsKQEAgLTExNDAsNyArMTEzMSw4IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmll
ckNoYW5nZWQoTlNEYXRhCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2Vzc2lvbklkID0gc2Vz
c2lvbklkOwotICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vz
c2lvbklkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKEFWQ29udGVudEtleVJlcG9ydEdy
b3VwKiBncm91cCwgTlNEYXRhICpzZXNzaW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IGYyYTg2Y2FiZjY4Yzg4NjgxY2MyZGZkMWVlYmY1YmJjOWQ0ZGZhYmIuLjZkZmMw
MTMzN2ZmODQ5YTc3NDJjMTFhMDAxYjYxNzkxOTFjY2NjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMTY3OCw4ICsxNjc4LDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAg
ICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7
CiAKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGlu
aXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghcGxheWVyKCktPmtl
eU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikK
QEAgLTE3MTMsNyArMTcxNiw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXRE
YXRhLnB0cigpKTsKKworICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVy
S2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9rZXlV
UklUb1JlcXVlc3RNYXAuc2V0KGtleUlELCBhdlJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCBjZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2
ZDcxYjM2OTY2MzJkLi44OTE5NjRiYWQ1NTA0OTNkY2Q3YjgxOGY3MDBhZWViZjdjYmYyYzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtOTgsNiArOTgs
MTEgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxT
dHJpbmc+JiYgdHlwZXMpCiAgICAgICAgIG1fc3VwcG9ydGVkRGF0YVR5cGVzLmFwcGVuZCh0eXBl
KTsKIH0KIAordm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3NlcykKK3sKKyAgICBtX3N1cHBvcnRlZFJvYnVzdG5lc3Mg
PSByb2J1c3RuZXNzZXMubWFwKFtdIChhdXRvJiByb2J1c3RuZXNzKSAtPiBBdG9tU3RyaW5nIHsg
cmV0dXJuIHJvYnVzdG5lc3M7IH0pOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
TW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBt
YWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CkBAIC0xMDgsMTEgKzExMywx
OCBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCiB7
CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06OnN1cHBv
cnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpOworICAgIHJldHVybiB7IH07
Cit9CisKK1ZlY3RvcjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMo
KSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCi0gICAgICAgIHJldHVybiBtX2ZhY3Rvcnkt
PnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCk7
CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25z
dApAQCAtMTM5LDcgKzE1MSw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9u
V2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5
cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkuY29udGFp
bnMoc2Vzc2lvblR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDgsMTMgKzE2MCw2
IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1l
ZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
TW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29u
c3QKLXsKLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBw
b3J0ZWRSb2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0bmVzcyk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
TWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QKIHsKICAgICBpZiAobV9mYWN0b3J5KQpAQCAt
MTk5LDcgKzIwNCw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAK
IGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFz
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghc3VwcG9ydGVkSW5p
dERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YSk7CkBAIC0yMzEsNTUgKzIzNiw0OCBAQCBN
b2NrQ0RNSW5zdGFuY2U6Ok1vY2tDRE1JbnN0YW5jZShXZWFrUHRyPE1vY2tDRE0+IGNkbSkKIHsK
IH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93
UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7Ci0gICAgaWYgKCFtX2NkbSB8fCAhbV9jZG0tPnN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKKyAgICBhdXRvIGluaXRpYWxp
emUgPSBbJl0geworICAgICAgICBpZiAoIW1fY2RtIHx8ICFtX2NkbS0+c3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbmZpZ3VyYXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAg
IHJldHVybiBTdWNjZWVkZWQ7Ci19CisgICAgICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKCFmYWN0b3J5
KQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1
ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi17Ci0gICAgaWYgKG1fZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FsbG93ZWQgPT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi0gICAg
ICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FsbG93ZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnM6Olllcyk7CiAKLSAgICBhdXRvKiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFj
dG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fs
bG93ZWQgIT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpIHsKKyAgICAgICAgICAgIGlm
ICghZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgJiYgZmFjdG9yeS0+ZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc1JlcXVpcmVtZW50KCkgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVk
KQorICAgICAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7CiAKLSAgICBpZiAoIWZhY3RvcnkgfHwg
KCFkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCAmJiBmYWN0b3J5LT5kaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQp
KQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9kaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQWxsb3dlZCA9IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkOworICAgICAgICB9
CiAKLSAgICBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkID0gZGlzdGluY3RpdmVJZGVu
dGlmaWVyc0FsbG93ZWQ7Ci0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKLX0KKyAgICAgICAgYm9vbCBw
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gKHBlcnNpc3RlbnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3Rl
bnRTdGF0ZTo6WWVzKTsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFu
Y2U6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
KQotewotICAgIGlmIChtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPT0gcGVyc2lzdGVudFN0YXRl
QWxsb3dlZCkKLSAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICAgICAgaWYgKG1fcGVyc2lz
dGVudFN0YXRlQWxsb3dlZCAhPSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKSB7CisgICAgICAgICAg
ICBpZiAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKLQotICAgIGlmICghZmFjdG9yeSB8
fCAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpKQotICAgICAgICBy
ZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVy
c2lzdGVudFN0YXRlQWxsb3dlZDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gU3VjY2VlZGVk
OworICAgIH07CiAKLSAgICBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkOwotICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgY2FsbGJhY2soaW5pdGlhbGl6
ZSgpKTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUpCit2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgU3RyaW5n
VmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNh
dGUtPnNpemUoKSk7CiAKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpKQotICAgICAgICByZXR1cm4gU3VjY2VlZGVkOwotICAgIHJl
dHVybiBGYWlsZWQ7CisgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KIAotQ0RN
SW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJikKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgLy8gT24gZGlzayBzdG9yYWdlIGlzIHVudXNlZDsg
bm8tb3AuCi0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKIH0KIAogY29uc3QgU3RyaW5nJiBNb2NrQ0RN
SW5zdGFuY2U6OmtleVN5c3RlbSgpIGNvbnN0CkBAIC0zMjUsNyArMzIzLDcgQEAgdm9pZCBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNl
LmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1
ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9y
eSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlm
ICghZmFjdG9yeSkgewpAQCAtMzMzLDcgKzMzMSw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUs
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZl
Y3RvciA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAn
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+
ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNl
VmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCmluZGV4IDM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5ZjEuLjM3MGI2
ZTI4MGQ5MWRiYTY3OWFiNDBjNWM2NDY0Y2NiYzM5MDI2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIGNvbnN0
IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkgY29u
c3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7IH0KICAgICB2b2lkIHNldFN1cHBv
cnRlZFNlc3Npb25UeXBlcyhWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mJiB0eXBlcykgeyBt
X3N1cHBvcnRlZFNlc3Npb25UeXBlcyA9IFdURk1vdmUodHlwZXMpOyB9CiAKLSAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vw
cG9ydGVkUm9idXN0bmVzczsgfQotICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3MpIHsgbV9zdXBwb3J0ZWRSb2J1c3RuZXNzID0gV1RGTW92
ZShyb2J1c3RuZXNzKTsgfQorICAgIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgc3VwcG9ydGVk
Um9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsgfQorICAg
IHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmKTsKIAogICAgIE1l
ZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50OyB9CiAgICAg
dm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoTWVkaWFLZXlzUmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQpIHsgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQg
PSByZXF1aXJlbWVudDsgfQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5
c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBNZWRpYUtleXNSZXF1
aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRE
YXRhVHlwZXM7CiAgICAgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+IG1fc3VwcG9ydGVkU2Vz
c2lvblR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkUm9idXN0bmVzczsKKyAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwogICAgIFZlY3RvcjxN
ZWRpYUtleUVuY3J5cHRpb25TY2hlbWU+IG1fc3VwcG9ydGVkRW5jcnlwdGlvblNjaGVtZXM7CiAg
ICAgYm9vbCBtX3JlZ2lzdGVyZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3Rh
bmNlcyB7IHRydWUgfTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKLWNsYXNz
IE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1vY2tD
RE0+IHsKK2NsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0
b3J5Pik7CkBAIC0xMDksMTEgKzEwOSwxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBNb2NrQ0RNSW5zdGFuY2U7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBl
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMo
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJl
bWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmlu
YWw7CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQo
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJl
VW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0IGZpbmFsOwpAQCAtMTM4LDExICsxMzgsOSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQotICAgIFN1Y2Nlc3NWYWx1
ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmll
cnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0U3Rv
cmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTdG9yYWdl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOwogCkBAIC0xNTcsNyArMTU1LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA1ZWZlNjYyNWQ2
ZjJmOTBhZGVkNzdkOGM1NTk3ZGYzYzc4OGYzMWRiLi41YjBmYTE5Y2UyZWIyZTNlODM5MDE0OGUx
NTY2NDg3ZGMwODkzYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC00OTAsMTAgKzQ5MCw5IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJD
YWNoZWRLZXlGb3JLZXlJZChjb25zdCBTCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSop
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE2YmIyZGRmYTIxNDc0NzBlODYwMGFiNzEzOTZh
NTljZGY1NDQ5ZmEuLjRhNzM5ZmI0ZjliNWQ2NzNkNGU5ZjJiNWFmNTM5NTFlM2VlZGQwY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxh
eWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9pZCBtZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKQEAg
LTI1Miw2ICsyNTIsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpMYXlvdXRSZWN0IG1fdmlk
ZW9Db250ZW50Qm94UmVjdDsKICAgICBmbG9hdCBtX3ZpZGVvQ29udGVudFNjYWxlIHsgMS4wIH07
CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICBib29sIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCB7IGZhbHNl
IH07CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbV9sb2dnZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IDM5MTJiNDAxNGExMTAxYjNm
MjE0MDQ3ODIwMWI1M2IxYzczYTE0NDguLjNkNDNhYzg0OGQzZGJiZjkxNGJiMDVkN2RiODEyZTIx
NjI0Nzg5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0
aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00Nyw0
ICs0OCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gV2Vi
TWVkaWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdAogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQordm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZh
Y3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpCit7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKaW5kZXggZTE5YTUz
YWZmYzhhYmU0MzIxZGVlZGFlNTFiODIyM2JhMTJiNzEzYi4uNTM0MDE0MTkwYWNjNjc5ZjRhYWI4
ZWIyYWZlODU2ZTM4MTQwMGNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKQEAgLTQyLDYgKzQyLDkgQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2smLAogICAgICAgICBjb25z
dCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgb3ZlcnJp
ZGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgcmVnaXN0
ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPENETUZhY3RvcnkqPiYpIG92ZXJyaWRlOworI2VuZGlmCiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3MgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDYwZjM0NTE3OWY0OTE0Yjc3
OWEwYTJiN2FhNzVlZjQzZGI2ZTFmM2UuLmI5MDllY2M0MzliY2QzYzZmNmRhODA0MWM2ZWYyOTNm
ZjM0NjY5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTMwLDYgKzMwLDcg
QEAKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Jsb2JSZWdpc3RyeUltcGwu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVN0
cmF0ZWd5Lmg+CkBAIC03Myw2ICs3NCwxMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKGNhbGxiYWNrLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogICAgIH0K
ICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCByZWdpc3RlckNE
TUZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpIG92ZXJyaWRlCisgICAg
eworICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZh
Y3RvcmllcyhmYWN0b3JpZXMpOworICAgIH0KKyNlbmRpZgogfTsKIAogTWVkaWFTdHJhdGVneSog
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0cmF0ZWd5KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391985</attachid>
            <date>2020-02-28 09:49:45 -0800</date>
            <delta_ts>2020-02-28 10:43:20 -0800</delta_ts>
            <desc>Patch for landing: Part 1: WebCore</desc>
            <filename>bug-208090-20200228094944.patch</filename>
            <type>text/plain</type>
            <size>156690</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM2ZGFjZjZmZWE3MTU3
YzdhNDkyMGFhMzMxNjMwZDkzNWNiMzYwMS4uMGNjYzhjODY5ZTI3ZTE0ODJkNGY2OWQ4ZTBiMDRh
ZWYzYWQwY2UxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0wMi0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50
IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIFRvIGVuYWJsZSBjYWNoaW5nIG9mIGNlcnRhaW4gQ0RN
IHByb3BlcnRpZXMsIGFsbG93IHRoZW0gdG8gYmUgZmV0Y2hlZCByYXRoZXIgdGhhbiBxdWVyaWVz
LiBBcyBzdWNoLAorICAgICAgICBDRE1Qcml2YXRlOjpzdXBwb3J0c0luaXREYXRhVHlwZSAtPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzLCBzdXBwb3J0c1JvYnVzdG5lc3MgLT4gc3VwcG9ydGVkUm9i
dXN0bmVzc2VzLgorCisgICAgICAgIFRvIGVuYWJsZSBDRE0gdHlwZXMgdG8gYmUgcGFzc2VkIGFj
cm9zcyBYUEMsIGFkZCBleHBsaWNpdCBzaXplcyB0byB0aGUgZW51bWVyYXRpb25zLCBhbmQgYWRk
IGVuY29kZSBhbmQKKyAgICAgICAgZGVjb2RlIHRlbXBsYXRlcyB0byB0aGUgZGF0YSB0eXBlcy4K
KworICAgICAgICBUbyBlbmFibGUgYXN5bmMgbWVzc2FnaW5nIGZvcm0gdGhlIEdQVSBwcm9jZXNz
J3MgTWVkaWFQbGF5ZXIsIHNlbmQgdGhlIE1lZGlhUGxheWVyIHRoZSBpbmZvcm1hdGlvbiBpdAor
ICAgICAgICBuZWVkcyB3aGVuIGJvdGggbGVnYWN5LSBhbmQgbW9kZXJuLUVNRSBBUElzIGFyZSBi
b3RoIGVuYWJsZWQsIHJhdGhlciB0aGFuIGFsbG93IHRoZSBNZWRpYVBsYXllclByaXZhdGUKKyAg
ICAgICAgdG8gcXVlcnkgdGhlIE1lZGlhUGxheWVyLgorCisgICAgICAgIE1vdmUgbW9zdCBvZiB0
aGUgYWxnb3JpdGhpbWljIGltcGxlbWVudGF0aW9uIGZyb20gQ0RNIGludG8gQ0RNUHJpdmF0ZSwg
YWxsb3dpbmcgaXQgdG8gYmUgcnVuIGZyb20gd2l0aGluCisgICAgICAgIHRoZSBHUFUgcHJvY2Vz
cy4gU2ltaWxtYXJseSwgbWFrZSBtb3N0IG9mIHRoZSBzeW5jaHJvbm91cyBtZXRob2RzIGluIENE
TUluc3RhbmNlIGluc3RlYWQgdGFrZSBhIGNhbGxiYWNrCisgICAgICAgIHBhcmFtZXRlciwgYWxs
b3dpbmcgdGhlbSB0byBiZSBpbXBsZW1lbnRlZCBpbiBhIHJlbW90ZSBwcm9jZXNzLgorCisgICAg
ICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN5
c3RlbUFjY2Vzczo6Y3JlYXRlTWVkaWFLZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNl
cnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJO
ZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
S2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5n
aW5lV2FzVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1LZXlTdGF0dXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETU1lZGlhQ2Fw
YWJpbGl0eTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETU1lZGlhQ2FwYWJp
bGl0eTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNz
YWdlVHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlOjpkb1N1cHBvcnRlZENvbmZpZ3Vy
YXRpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGU6OmlzUGVyc2lzdGVudFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0
aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0
Q29uc2VudFN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJp
dmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmg6
CisgICAgICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmtleU5lZWRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3Jh
cHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE06OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NETTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzIGNvbnN0KToK
KwogMjAyMC0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBDcmVhdGUgQXVkaW9EZXN0aW5hdGlvbiBpbiB0aGUgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NjkyNTk3NTE1ZjY4NTkwNGRmMTdiYWE2OGZlYTljNzc4MmU3YzgxNy4uMWVlNDllNjkxNjVmOWUz
ZjQyZTlkMDRjNDc2YmJmMTU1ZjUzYmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
UF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkb3B0IGNoYW5nZXMgdG8gTWVk
aWFQbGF5ZXJQcm94eS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJN
ZWRpYVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJhdGVneTo6cmVn
aXN0ZXJDRE1GYWN0b3JpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1l
ZGlhU3RyYXRlZ3kuaDoKKwogMjAyMC0wMi0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQW5ub3RhdGUgbWVkaWFUeXBlIHdpdGggYW4gYXZhaWxhYmlsaXR5
IG1hY3JvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkNGQwZmUzYjZhZDBjYjE2
NjI3YjZmYjRlNWZiOWViNDQxNjVjZTMuLmY4ZWFkNjI5NzQyMGNlMzNlMjEyY2Y4Mzg5YTg3MzFl
Y2M2Zjk3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0wMi0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkb3B0IGNoYW5nZXMgdG8g
UGxhdGZvcm1TdHJhdGVnaWVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBDcmVhdGUgQXVkaW9EZXN0aW5hdGlvbiBpbiB0aGUgR1BV
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGRjMTNhOGMwM2Q4Y2Y0NWYyODIxZmNjNmFl
MjI4N2NiZTBhZmIzNTYuLjZlODNlZWNiZDZkMTE1NDFhNzIyZWRmNDM1ODg1ZDgxOWM3YTQxZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTAzNSw2ICsxMDM1LDIwIEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCiAgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKIAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAor
ICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorICAgIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZVNlc3Npb24uaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0
YXR1cy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgK
KyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisgICAgcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
LmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAorICAgIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKKwogICAgIHBsYXRmb3JtL2dh
bWVwYWQvR2FtZXBhZFByb3ZpZGVyLmgKICAgICBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92
aWRlckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDRiYmIy
YmNlNjE4NzRiN2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAuLmM1NWJlMDY0MjE2NTAwZWQwYjI3
ZDVhOWU5Y2M5NjIxZjdhNGEwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKQEAgLTc5LDUxMCArNzksMTggQEAgdm9pZCBDRE06OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRl
Q29uZmkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNn
ZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRpb24KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkg
Tm92ZW1iZXIgMjAxNgorICAgIC8vIEltcGxlbWVudGVkIGluIENETVByaXZhdGU6OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oKQogCi0gICAgLy8gMy4xLjEuMSBHZXQgU3VwcG9ydGVkIENvbmZp
Z3VyYXRpb24KLSAgICAvLyBHaXZlbiBhIEtleSBTeXN0ZW1zIGltcGxlbWVudGF0aW9uIGltcGxl
bWVudGF0aW9uLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlIGNvbmZpZ3Vy
YXRpb24sIGFuZCBvcmlnaW4sCi0gICAgLy8gdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBv
cnRlZCBjb25maWd1cmF0aW9uIG9yIE5vdFN1cHBvcnRlZCBhcyBhcHByb3ByaWF0ZS4KLQotICAg
IC8vIDEuIExldCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBiZSBDb25zZW50RGVuaWVkLgotICAg
IC8vIDIuIEluaXRpYWxpemUgcmVzdHJpY3Rpb25zIHRvIGluZGljYXRlIHRoYXQgbm8gY29uZmln
dXJhdGlvbnMgaGF2ZSBoYWQgdXNlciBjb25zZW50IGRlbmllZC4KLSAgICBNZWRpYUtleXNSZXN0
cmljdGlvbnMgcmVzdHJpY3Rpb25zIHsgfTsKLSAgICBkb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25T
dGVwKFdURk1vdmUoY2FuZGlkYXRlQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25z
KSwgV1RGTW92ZShjYWxsYmFjaykpOwotfQotCi12b2lkIENETTo6ZG9TdXBwb3J0ZWRDb25maWd1
cmF0aW9uU3RlcChNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1
cmF0aW9uLCBNZWRpYUtleXNSZXN0cmljdGlvbnMmJiByZXN0cmljdGlvbnMsIFN1cHBvcnRlZENv
bmZpZ3VyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbgotICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2LCBjdGQuCi0KLSAgICAvLyAz
LjEuMS4xIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbgotICAgIC8vIDMuIFJlcGVhdCB0aGUg
Zm9sbG93aW5nIHN0ZXAgd2hpbGUgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gaXMgQ29uc2VudERl
bmllZDoKLSAgICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBhbmQsIGlmIHBy
b3ZpZGVkLCByZXN0cmljdGlvbnMgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlCi0gICAg
Ly8gR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50IGFsZ29yaXRobSB3aXRo
IGltcGxlbWVudGF0aW9uLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwKLSAgICAvLyByZXN0cmlj
dGlvbnMgYW5kIG9yaWdpbi4KLSAgICBhdXRvIG9wdGlvbmFsQ29uZmlndXJhdGlvbiA9IGdldFN1
cHBvcnRlZENvbmZpZ3VyYXRpb24oY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KTsKLSAgICBpZiAoIW9wdGlvbmFsQ29uZmlndXJhdGlvbikgeworICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IGlmICghZG9jdW1lbnQgfHwgIW1fcHJpdmF0ZSkgewogICAgICAgICBjYWxsYmFjayhXVEY6Om51
bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb25zZW50Q2FsbGJh
Y2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChDb25zZW50U3RhdHVzIHN0YXR1cywgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiYgY29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYgcmVzdHJpY3Rpb25z
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAgY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICAvLyAzLjEuMS4yIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbiBhbmQgQ29uc2VudCwgY3Rk
LgotICAgICAgICAvLyAyMi4gTGV0IGNvbnNlbnQgc3RhdHVzIGFuZCB1cGRhdGVkIHJlc3RyaWN0
aW9ucyBiZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIEdldCBDb25zZW50IFN0YXR1cyBhbGdv
cml0aG0gb24gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwKLSAgICAgICAgLy8gICAgIHJlc3Ry
aWN0aW9ucyBhbmQgb3JpZ2luIGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2Yg
Y29uc2VudCBzdGF0dXMgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgICAgIHN3aXRjaCAo
c3RhdHVzKSB7Ci0gICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmllZDoKLSAg
ICAgICAgICAgIC8vIOKGsyBDb25zZW50RGVuaWVkOgotICAgICAgICAgICAgLy8gICAgUmV0dXJu
IENvbnNlbnREZW5pZWQgYW5kIHVwZGF0ZWQgcmVzdHJpY3Rpb25zLgotICAgICAgICAgICAgd2Vh
a1RoaXMtPmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoV1RGTW92ZShjb25maWd1cmF0aW9u
KSwgV1RGTW92ZShyZXN0cmljdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSBDb25zZW50U3RhdHVzOjpJbmZvcm1Vc2VyOgotICAg
ICAgICAgICAgLy8g4oazIEluZm9ybVVzZXIKLSAgICAgICAgICAgIC8vICAgIEluZm9ybSB0aGUg
dXNlciB0aGF0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgaW4gdXNlIGluIHRoZSBvcmln
aW4gaW5jbHVkaW5nLCBzcGVjaWZpY2FsbHksIHRoZSBpbmZvcm1hdGlvbiB0aGF0Ci0gICAgICAg
ICAgICAvLyAgICBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9vciBEaXN0aW5jdGl2ZSBQ
ZXJtYW5lbnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZSB3aWxsIGJlIHVzZWQgaWYgdGhl
Ci0gICAgICAgICAgICAvLyAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgInJlcXVpcmVkIi4gQ29udGludWUgdG8gdGhlIG5leHQg
c3RlcC4KLSAgICAgICAgICAgIC8vIE5PVEU6IEltcGxlbWVudC4KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6QWxsb3dlZDoKLSAgICAgICAgICAgIC8v
IOKGsyBBbGxvd2VkOgotICAgICAgICAgICAgLy8gQ29udGludWUgdG8gdGhlIG5leHQgc3RlcC4K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8vIDIzLiBSZXR1cm4gYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjb25maWd1
cmF0aW9uKSk7Ci0gICAgfTsKLSAgICBnZXRDb25zZW50U3RhdHVzKFdURk1vdmUob3B0aW9uYWxD
b25maWd1cmF0aW9uLnZhbHVlKCkpLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucyksIFdURk1vdmUoY29u
c2VudENhbGxiYWNrKSk7Ci19Ci0KLWJvb2wgQ0RNOjppc1BlcnNpc3RlbnRUeXBlKE1lZGlhS2V5
U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUpCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jaXMtcGVyc2lzdGVudC1zZXNzaW9uLXR5cGUKLSAgICAvLyBXM0Mg
RWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotCi0gICAgLy8gNS4xLjEuIElzIHBlcnNp
c3RlbnQgc2Vzc2lvbiB0eXBlPwotICAgIC8vIDEuIExldCB0aGUgc2Vzc2lvbiB0eXBlIGJlIHRo
ZSBzcGVjaWZpZWQgTWVkaWFLZXlTZXNzaW9uVHlwZSB2YWx1ZS4KLSAgICAvLyAyLiBGb2xsb3cg
dGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2Ygc2Vzc2lvbiB0eXBlIGZyb20gdGhlIGZvbGxvd2lu
ZyBsaXN0OgotICAgIHN3aXRjaCAoc2Vzc2lvblR5cGUpIHsKLSAgICBjYXNlIE1lZGlhS2V5U2Vz
c2lvblR5cGU6OlRlbXBvcmFyeToKLSAgICAgICAgLy8g4oazICJ0ZW1wb3JhcnkiCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1lZGlhS2V5U2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRM
aWNlbnNlOgotICAgIGNhc2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVj
b3JkOgotICAgICAgICAvLyDihrMgInBlcnNpc3RlbnQtbGljZW5zZSIKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1PcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETTo6Z2V0
U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYgcmVzdHJpY3Rp
b25zKQotewotICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dl
dC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbi1hbmQtY29uc2VudAotICAgIC8vIFczQyBFZGl0b3In
cyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2Ci0KLSAgICBBU1NFUlQobV9wcml2YXRlKTsKLSAgICBp
ZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIC8vIDMu
MS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50Ci0gICAgLy8gR2l2
ZW4gYSBLZXkgU3lzdGVtcyBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbiwgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLAotICAgIC8vIHJlc3Ry
aWN0aW9ucyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIGEgc3VwcG9ydGVkIGNv
bmZpZ3VyYXRpb24sIE5vdFN1cHBvcnRlZCwgb3IgQ29uc2VudERlbmllZAotICAgIC8vIGFzIGFw
cHJvcHJpYXRlIGFuZCwgaW4gdGhlIENvbnNlbnREZW5pZWQgY2FzZSwgcmVzdHJpY3Rpb25zLgot
Ci0gICAgLy8gMS4gTGV0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBuZXcgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uIGRpY3Rpb25hcnkuCi0gICAgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiB7IH07Ci0KLSAgICAvLyAyLiBTZXQg
dGhlIGxhYmVsIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFsIHRo
ZSBsYWJlbCBtZW1iZXIgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24uCi0gICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmxhYmVsID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5sYWJlbDsKLQot
ICAgIC8vIDMuIElmIHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbiBpcyBub24tZW1wdHksIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgIGlmICgh
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLmlzRW1wdHkoKSkgewotICAgICAg
ICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgdHlwZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgRE9N
U3RyaW5ncy4KLSAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkVHlwZXM7Ci0KLSAgICAg
ICAgLy8gMy4yLiBGb3IgZWFjaCB2YWx1ZSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGlu
aXREYXRhVHlwZXMgbWVtYmVyOgotICAgICAgICBmb3IgKGF1dG8gaW5pdERhdGFUeXBlIDogY2Fu
ZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKSB7Ci0gICAgICAgICAgICAvLyAzLjIu
MS4gTGV0IGluaXREYXRhVHlwZSBiZSB0aGUgdmFsdWUuCi0gICAgICAgICAgICAvLyAzLjIuMi4g
SWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGdlbmVyYXRpbmcgcmVxdWVzdHMgYmFzZWQg
b24gaW5pdERhdGFUeXBlLCBhZGQgaW5pdERhdGFUeXBlCi0gICAgICAgICAgICAvLyAgICAgICAg
dG8gc3VwcG9ydGVkIHR5cGVzLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4g
VGhlIGVtcHR5IHN0cmluZyBpcyBuZXZlciBzdXBwb3J0ZWQuCi0gICAgICAgICAgICBpZiAoaW5p
dERhdGFUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgaWYgKG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBlKGlu
aXREYXRhVHlwZSkpCi0gICAgICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKGluaXRE
YXRhVHlwZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAzLjMuIElmIHN1cHBvcnRlZCB0eXBl
cyBpcyBlbXB0eSwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKHN1cHBvcnRlZFR5
cGVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAg
ICAgLy8gMy40LiBTZXQgdGhlIGluaXREYXRhVHlwZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNv
bmZpZ3VyYXRpb24gdG8gc3VwcG9ydGVkIHR5cGVzLgotICAgICAgICBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24uaW5pdERhdGFUeXBlcyA9IFdURk1vdmUoc3VwcG9ydGVkVHlwZXMpOwotICAgIH0K
LQotICAgIC8vIDQuIExldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVtZW50IGJlIHRo
ZSB2YWx1ZSBvZiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmll
ciBtZW1iZXIuCi0gICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVy
UmVxdWlyZW1lbnQgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
cjsKLQotICAgIC8vIDUuIElmIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQgaXMg
Im9wdGlvbmFsIiBhbmQgRGlzdGluY3RpdmUgSWRlbnRpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGFj
Y29yZGluZyB0bwotICAgIC8vICAgIHJlc3RyaWN0aW9ucywgc2V0IGRpc3RpbmN0aXZlIGlkZW50
aWZpZXIgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICBpZiAoZGlzdGluY3RpdmVJ
ZGVudGlmaWVyUmVxdWlyZW1lbnQgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYm
IHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQpCi0gICAgICAgIGRpc3Rp
bmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFs
bG93ZWQ7Ci0KLSAgICAvLyA2LiBGb2xsb3cgdGhlIHN0ZXBzIGZvciBkaXN0aW5jdGl2ZSBpZGVu
dGlmaWVyIHJlcXVpcmVtZW50IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIHN3aXRjaCAo
ZGlzdGluY3RpdmVJZGVudGlmaWVyUmVxdWlyZW1lbnQpIHsKLSAgICBjYXNlIE1lZGlhS2V5c1Jl
cXVpcmVtZW50OjpSZXF1aXJlZDoKLSAgICAgICAgLy8g4oazICJyZXF1aXJlZCIKLSAgICAgICAg
Ly8gSWYgdGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdXNlIG9mIERpc3RpbmN0
aXZlIElkZW50aWZpZXIocykgaW4gY29tYmluYXRpb24KLSAgICAgICAgLy8gd2l0aCBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQu
Ci0gICAgICAgIGlmIChtX3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVx
dWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
OgotICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgotICAgICAgICAvLyBDb250aW51ZSB3aXRoIHRo
ZSBmb2xsb3dpbmcgc3RlcHMuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNZWRpYUtleXNS
ZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKLSAgICAgICAgLy8g4oazICJub3QtYWxsb3dlZCIKLSAg
ICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJ
ZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVyKHMpCi0gICAg
ICAgIC8vIGluIGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQg
cmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgotICAgICAgICBpZiAobV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0
aW9uLCByZXN0cmljdGlvbnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIC8vIDcuIFNldCB0aGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFsIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWly
ZW1lbnQuCi0gICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
ciA9IGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50OwotCi0gICAgLy8gOC4gTGV0IHBl
cnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGNhbmRp
ZGF0ZSBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIG1lbWJlci4KLSAgICBNZWRpYUtl
eXNSZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCA9IGNhbmRpZGF0ZUNvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlOwotCi0gICAgLy8gOS4gSWYgcGVyc2lzdGVudCBzdGF0
ZSByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwiIGFuZCBwZXJzaXN0aW5nIHN0YXRlIGlzIG5vdCBh
bGxvd2VkIGFjY29yZGluZyB0byByZXN0cmljdGlvbnMsCi0gICAgLy8gICAgc2V0IHBlcnNpc3Rl
bnQgc3RhdGUgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICBpZiAocGVyc2lzdGVu
dFN0YXRlUmVxdWlyZW1lbnQgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYmIHJl
c3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQpCi0gICAgICAgIHBlcnNpc3RlbnRTdGF0
ZVJlcXVpcmVtZW50ID0gIE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwotCi0gICAg
Ly8gMTAuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQg
ZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgc3dpdGNoIChwZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudCkgewotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOgotICAg
ICAgICAvLyDihrMgInJlcXVpcmVkIgotICAgICAgICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBwZXJzaXN0aW5nIHN0YXRlIGluIGNvbWJpbmF0aW9uIHdpdGggYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbgotICAgICAgICAvLyBhbmQgcmVzdHJpY3Rpb25zLCByZXR1
cm4gTm90U3VwcG9ydGVkLgotICAgICAgICBpZiAobV9wcml2YXRlLT5wZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVk
aWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6
Ok9wdGlvbmFsOgotICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgotICAgICAgICAvLyBDb250aW51
ZSB3aXRoIHRoZSBmb2xsb3dpbmcgc3RlcHMuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKLSAgICAgICAgLy8g4oazICJub3QtYWxs
b3dlZCIKLSAgICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHBlcnNpc3Rp
bmcgc3RhdGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0g
ICAgICAgIC8vIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQKLSAgICAgICAg
aWYgKG1fcHJpdmF0ZS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLCByZXN0cmljdGlvbnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJl
ZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIC8vIDExLiBTZXQgdGhlIHBlcnNpc3RlbnRTdGF0ZSBtZW1iZXIgb2YgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiB0byBlcXVhbCB0aGUgdmFsdWUgb2YgcGVyc2lzdGVudCBzdGF0
ZSByZXF1aXJlbWVudC4KLSAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0
YXRlID0gcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQ7Ci0KLSAgICAvLyAxMi4gRm9sbG93IHRo
ZSBzdGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dp
bmcgbGlzdDoKLSAgICBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4gc2Vzc2lvblR5cGVzOwot
Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnNlc3Npb25UeXBlcy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgLy8g4oazIElmIHRoZSBzZXNzaW9uVHlwZXMgbWVtYmVyIGlzIHByZXNlbnQg
W1dlYklETF0gaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgLy8gTGV0IHNlc3Np
b24gdHlwZXMgYmUgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBzZXNzaW9uVHlwZXMgbWVtYmVy
LgotICAgICAgICBzZXNzaW9uVHlwZXMgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLnNlc3Npb25U
eXBlczsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCi0gICAgICAgIC8v
IExldCBzZXNzaW9uIHR5cGVzIGJlIFsgInRlbXBvcmFyeSIgXS4KLSAgICAgICAgc2Vzc2lvblR5
cGVzID0geyBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkgfTsKLSAgICB9Ci0KLSAgICAv
LyAxMy4gRm9yIGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0eXBlczoKLSAgICBmb3IgKGF1dG8mIHNl
c3Npb25UeXBlIDogc2Vzc2lvblR5cGVzKSB7Ci0gICAgICAgIC8vIDEzLjEuIExldCBzZXNzaW9u
IHR5cGUgYmUgdGhlIHZhbHVlLgotICAgICAgICAvLyAxMy4yLiBJZiBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVlIGlzICJub3QtYWxsb3dlZCIgYW5kIHRo
ZQotICAgICAgICAvLyAgICAgICBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8gYWxnb3JpdGht
IHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAg
ICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IE1lZGlh
S2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5
cGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICAvLyAxMy4z
LiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzZXNzaW9uIHR5cGUgaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIC8vICAg
ICAgIGFuZCByZXN0cmljdGlvbnMgZm9yIG90aGVyIHJlYXNvbnMsIHJldHVybiBOb3RTdXBwb3J0
ZWQuCi0gICAgICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oc2Vzc2lvblR5cGUsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDEzLjQgSWYgYWNjdW11bGF0
ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSBpcyAib3B0aW9uYWwiIGFu
ZCB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIElzCi0gICAgICAgIC8vICAgICAgcGVyc2lzdGVu
dCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSBvbiBzZXNzaW9uIHR5cGUgaXMgdHJ1ZSwgY2hhbmdl
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUKLSAgICAgICAgLy8g
ICAgICB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1
cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwg
JiYgaXNQZXJzaXN0ZW50VHlwZShzZXNzaW9uVHlwZSkpCi0gICAgICAgICAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJl
cXVpcmVkOwotICAgIH0KLQotICAgIC8vIDE0LiBTZXQgdGhlIHNlc3Npb25UeXBlcyBtZW1iZXIg
b2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBzZXNzaW9uIHR5cGVzLgotICAgIGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMgPSBzZXNzaW9uVHlwZXM7Ci0KLSAgICAv
LyAxNS4gSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIGFuZCBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXJzIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uIGFyZSBib3RoIGVtcHR5LCByZXR1cm4gTm90
U3VwcG9ydGVkLgotICAgIGlmIChjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVvQ2FwYWJpbGl0
aWVzLmlzRW1wdHkoKSAmJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIC8vIDE2LiDi
hrMgSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJh
dGlvbiBpcyBub24tZW1wdHk6Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVv
Q2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICAvLyAxNi4xLiBMZXQgdmlkZW8gY2Fw
YWJpbGl0aWVzIGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBHZXQgU3VwcG9ydGVkIENh
cGFiaWxpdGllcyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0gb24KLSAgICAgICAgLy8g
ICAgICAgVmlkZW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgdmlkZW9DYXBhYmlsaXRpZXMg
bWVtYmVyLCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVzdHJpY3Rpb25zLgotICAg
ICAgICBhdXRvIHZpZGVvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9y
QXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5cGU6OlZpZGVvLCBjYW5kaWRhdGVDb25maWd1cmF0
aW9uLnZpZGVvQ2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0
aW9ucyk7Ci0KLSAgICAgICAgLy8gMTYuMi4gSWYgdmlkZW8gY2FwYWJpbGl0aWVzIGlzIG51bGws
IHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDE2LjMgU2V0IHRo
ZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0
byB2aWRlbyBjYXBhYmlsaXRpZXMuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi52
aWRlb0NhcGFiaWxpdGllcyA9IFdURk1vdmUodmlkZW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLy8gMTYuIOKGsyBPdGhlcndpc2U6Ci0gICAgICAgIC8vICAg
ICBTZXQgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1
cmF0aW9uIHRvIGFuIGVtcHR5IHNlcXVlbmNlLgotICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24udmlkZW9DYXBhYmlsaXRpZXMgPSB7IH07Ci0gICAgfQotCi0gICAgLy8gMTcuIOKGsyBJ
ZiB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9u
IGlzIG5vbi1lbXB0eToKLSAgICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24uYXVkaW9DYXBh
YmlsaXRpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIDE3LjEuIExldCBhdWRpbyBjYXBhYmls
aXRpZXMgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIEdldCBTdXBwb3J0ZWQgQ2FwYWJp
bGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlIGFsZ29yaXRobSBvbgotICAgICAgICAvLyAgICAg
ICBBdWRpbywgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXIsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMuCi0gICAgICAg
IGF1dG8gYXVkaW9DYXBhYmlsaXRpZXMgPSBnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRp
b1ZpZGVvVHlwZShBdWRpb1ZpZGVvVHlwZTo6QXVkaW8sIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24u
YXVkaW9DYXBhYmlsaXRpZXMsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KTsKLQotICAgICAgICAvLyAxNy4yLiBJZiBhdWRpbyBjYXBhYmlsaXRpZXMgaXMgbnVsbCwgcmV0
dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgLy8gMTcuMyBTZXQgdGhlIGF1
ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGF1
ZGlvIGNhcGFiaWxpdGllcy4KLSAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmF1ZGlv
Q2FwYWJpbGl0aWVzID0gV1RGTW92ZShhdWRpb0NhcGFiaWxpdGllcy52YWx1ZSgpKTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyAxNy4g4oazIE90aGVyd2lzZToKLSAgICAgICAgLy8gICAgIFNl
dCB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRp
b24gdG8gYW4gZW1wdHkgc2VxdWVuY2UuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlv
bi5hdWRpb0NhcGFiaWxpdGllcyA9IHsgfTsKLSAgICB9Ci0KLSAgICAvLyAxOC4gSWYgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmllciB2YWx1ZSBpcyAib3B0
aW9uYWwiLCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcKLSAgICAvLyAg
ICAgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIGlmIChhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpPcHRpb25hbCkgewotICAgICAgICAvLyDihrMgSWYgdGhlIGltcGxlbWVudGF0aW9uIHJl
cXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1h
bmVudCBJZGVudGlmaWVyKHMpIGZvciBhbnkgb2YgdGhlCi0gICAgICAgIC8vICAgIGNvbWJpbmF0
aW9ucyBpbiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIGlmIChtX3ByaXZhdGUt
PmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRp
b24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSB7Ci0g
ICAgICAgICAgICAvLyBDaGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0
aXZlSWRlbnRpZmllciB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpSZXF1aXJlZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIOKGsyBPdGhl
cndpc2UKLSAgICAgICAgICAgIC8vICAgIENoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9u
J3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRvICJub3QtYWxsb3dlZCIuCi0gICAgICAg
ICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID0gTWVk
aWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyAxOS4gSWYgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1
ZSBpcyAib3B0aW9uYWwiLCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcK
LSAgICAvLyAgICAgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIGlmIChh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IE1lZGlhS2V5c1JlcXVp
cmVtZW50OjpPcHRpb25hbCkgewotICAgICAgICAvLyDihrMgSWYgdGhlIGltcGxlbWVudGF0aW9u
IHJlcXVpcmVzIHBlcnNpc3Rpbmcgc3RhdGUgZm9yIGFueSBvZiB0aGUgY29tYmluYXRpb25zIGlu
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgaWYgKG1fcHJpdmF0ZS0+cGVyc2lz
dGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkgewotICAgICAgICAgICAgLy8g
Q2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUg
dG8gInJlcXVpcmVkIi4KLSAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQ7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCi0gICAgICAgICAgICAvLyAgICBD
aGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0
byAibm90LWFsbG93ZWQiLgotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBl
cnNpc3RlbnRTdGF0ZSA9IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25maWd1
cmF0aW9uIHNwZWNpZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhY2N1
bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90
IGFsbG93ZWQgaW4gdGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICBpZiAoIW1f
cHJpdmF0ZS0+c3VwcG9ydHNDb25maWd1cmF0aW9uKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBpZiAo
IWRvY3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCiAgICAgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwogICAgIFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4gPSBkb2N1bWVudC0+dG9wT3JpZ2luKCk7Ci0KLSAgICBpZiAoKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkIHx8IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0
ZW50U3RhdGUgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSAmJiAhb3JpZ2luLmNh
bkFjY2Vzc0xvY2FsU3RvcmFnZSgmdG9wT3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247Ci0gICAgLy8gTk9U
RTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0dXMoKS4KLX0KLQotT3B0aW9uYWw8VmVjdG9y
PE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmls
aXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShDRE06OkF1ZGlvVmlkZW9UeXBlIHR5cGUsIGNvbnN0IFZl
Y3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4mIHJlcXVlc3RlZENhcGFiaWxpdGll
cywgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlv
biwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCi17Ci0gICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jYXBhYmlsaXRp
ZXMtZm9yLWF1ZGlvLXZpZGVvLXR5cGUKLSAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92
ZW1iZXIgMjAxNgotCi0gICAgQVNTRVJUKG1fcHJpdmF0ZSk7Ci0gICAgaWYgKCFtX3ByaXZhdGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAvLyAzLjEuMS4zIEdldCBTdXBw
b3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlCi0KLSAgICAvLyBHaXZlbiBh
biBhdWRpby92aWRlbyB0eXBlLCBNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eSBzZXF1ZW5j
ZSByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24KLSAgICAvLyBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMsIHRoaXMg
YWxnb3JpdGhtIHJldHVybnMgYSBzZXF1ZW5jZSBvZiBzdXBwb3J0ZWQgTWVkaWFLZXlTeXN0ZW1N
ZWRpYUNhcGFiaWxpdHkgdmFsdWVzCi0gICAgLy8gZm9yIHRoaXMgYXVkaW8vdmlkZW8gdHlwZSBv
ciBudWxsIGFzIGFwcHJvcHJpYXRlLgotCi0gICAgLy8gMS4gTGV0IGxvY2FsIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBjb3B5IG9mIHBhcnRpYWwgY29uZmlndXJhdGlvbi4K
LSAgICBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
ID0gcGFydGlhbENvbmZpZ3VyYXRpb247Ci0KLSAgICAvLyAyLiBMZXQgc3VwcG9ydGVkIG1lZGlh
IGNhcGFiaWxpdGllcyBiZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBNZWRpYUtleVN5c3RlbU1lZGlh
Q2FwYWJpbGl0eSBkaWN0aW9uYXJpZXMuCi0gICAgVmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFD
YXBhYmlsaXR5PiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07Ci0KLSAgICAvLyAzLiBG
b3IgZWFjaCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVkaWEgY2Fw
YWJpbGl0aWVzOgotICAgIGZvciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJlcXVlc3Rl
ZENhcGFiaWxpdGllcykgewotICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUgYmUgcmVx
dWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCi0gICAgICAgIC8v
IDMuMi4gTGV0IHJvYnVzdG5lc3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyByb2J1
c3RuZXNzIG1lbWJlci4KLSAgICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0ZWRDYXBh
YmlsaXR5LnJvYnVzdG5lc3M7Ci0KLSAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMg
dGhlIGVtcHR5IHN0cmluZywgcmV0dXJuIG51bGwuCi0gICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBh
YmlsaXR5LmNvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICAgICAgLy8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52YWxpZCBv
ciB1bnJlY29nbml6ZWQgTUlNRSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24u
Ci0gICAgICAgIE9wdGlvbmFsPFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNl
ZENvbnRlbnRUeXBlOjpjcmVhdGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9k
ZTo6UmZjMjA0NSk7Ci0gICAgICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAvLyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRhaW5lciB0
eXBlIHNwZWNpZmllZCBieSBjb250ZW50IHR5cGUuCi0gICAgICAgIFN0cmluZyBjb250YWluZXIg
PSBjb250ZW50VHlwZS0+bWltZVR5cGUoKTsKLQotICAgICAgICAvLyAzLjYuIElmIHRoZSB1c2Vy
IGFnZW50IGRvZXMgbm90IHN1cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUgbmV4dCBp
dGVyYXRpb24uIFRoZSBjYXNlLXNlbnNpdGl2aXR5Ci0gICAgICAgIC8vICAgICAgb2Ygc3RyaW5n
IGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4KLSAgICAg
ICAgLy8gMy43LiBMZXQgcGFyYW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFdIHBhcmFt
ZXRlcnMsIGlmIGFueSwgc3BlY2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KLSAgICAgICAgLy8gMy44
LiBJZiB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1l
dGVycywgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgotICAgICAgICAvLyAzLjkuIExl
dCBtZWRpYSB0eXBlcyBiZSB0aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMg
c3BlY2lmaWVkIGJ5IHBhcmFtZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5Ci0gICAgICAgIC8v
ICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJp
YXRlIFJGQyBvciBvdGhlciBzcGVjaWZpY2F0aW9uLgotICAgICAgICBTdHJpbmcgY29kZWNzID0g
Y29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7Ci0gICAgICAgIGlm
IChjb250ZW50VHlwZS0+cGFyYW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgpID8gMCA6
IDEpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gMy4xMC4gSWYgbWVkaWEg
dHlwZXMgaXMgZW1wdHk6Ci0gICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAvLyDihrMgSWYgY29udGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVjaWZpYyBz
ZXQgb2YgY29kZWNzIGFuZCBjb2RlYyBjb25zdHJhaW50czoKLSAgICAgICAgICAgIC8vIOKGsyBP
dGhlcndpc2U6Ci0gICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gMy4xMS4gSWYgY29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1ZGlvL3Zp
ZGVvIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAgICAgICAgLy8gMy4x
Mi4gSWYgcm9idXN0bmVzcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFpbnMgYW4g
dW5yZWNvZ25pemVkIHZhbHVlIG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQotICAgICAgICAv
LyAgICAgICBpbXBsZW1lbnRhdGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBT
dHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAgICAgICAgaWYgKCFyb2J1c3Ru
ZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRlLT5zdXBwb3J0c1JvYnVzdG5lc3Mocm9idXN0bmVz
cykpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNl
ciBhZ2VudCBhbmQgaW1wbGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9m
IGVuY3J5cHRlZCBtZWRpYSBkYXRhIGZvciB0aGUKLSAgICAgICAgLy8gICAgICAgY29tYmluYXRp
b24gb2YgY29udGFpbmVyLCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9jYWwgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiBpbiBjb21iaW5hdGlvbgotICAgICAgICAvLyAgICAgICB3aXRo
IHJlc3RyaWN0aW9uczoKLSAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShjb250ZW50VHlw
ZS0+bWltZVR5cGUoKSk7Ci0gICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBh
cmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7
Ci0KLSAgICAgICAgICAgIC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKLSAgICAgICAgICAgIHBh
cmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJp
Y3Rpb25zKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIDMuMTMuMS4gQWRkIHJlcXVlc3RlZCBtZWRpYSBj
YXBhYmlsaXR5IHRvIHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMuCi0gICAgICAgIHN1cHBv
cnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsKLQotICAg
ICAgICAvLyAzLjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlzIFZpZGVvOgotICAgICAg
ICAvLyAgICAgICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byB0aGUgdmlkZW9D
YXBhYmlsaXRpZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24uCi0g
ICAgICAgIGlmICh0eXBlID09IEF1ZGlvVmlkZW9UeXBlOjpWaWRlbykKLSAgICAgICAgICAgIGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5hcHBlbmQocmVxdWVzdGVk
Q2FwYWJpbGl0eSk7Ci0gICAgICAgIC8vIDMuMTMuMi4g4oazIElmIGF1ZGlvL3ZpZGVvIHR5cGUg
aXMgQXVkaW86Ci0gICAgICAgIC8vICAgICAgICAgQWRkIHJlcXVlc3RlZCBtZWRpYSBjYXBhYmls
aXR5IHRvIHRoZSBhdWRpb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgbG9jYWwgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbi4KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsK
LSAgICB9Ci0KLSAgICAvLyA0LiBJZiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzIGlzIGVt
cHR5LCByZXR1cm4gbnVsbC4KLSAgICBpZiAoc3VwcG9ydGVkTWVkaWFDYXBhYmlsaXRpZXMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgLy8gNS4gUmV0dXJu
IHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMuCi0gICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlh
Q2FwYWJpbGl0aWVzOwotfQotCi12b2lkIENETTo6Z2V0Q29uc2VudFN0YXR1cyhNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jl
c3RyaWN0aW9ucyYmIHJlc3RyaWN0aW9ucywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJh
Y2spCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0
LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25zZW50Ci0gICAgLy8gVzNDIEVkaXRvcidz
IERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgewotICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZN
b3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBOT1RFOiBJbiB0aGUgZnV0dXJlLCB0aGVz
ZSBjaGVja3MgYmVsb3dlIHdpbGwgaW52b2x2ZSBhc2tpbmcgdGhlIHBhZ2UgY2xpZW50LCBwb3Nz
aWJseSBhY3Jvc3MgYSBwcm9jZXNzIGJvdW5kYXJ5LgotICAgIC8vIFRoZXkgd2lsbCBieSBuZWNl
c3NpdHkgYmUgYXN5bmNocm9ub3VzIHdpdGggY2FsbGJhY2tzLiBGb3Igbm93LCBpbXBseSB0aGlz
IGJlaGF2aW9yIGJ5IHBlcmZvcm1pbmcgaXQgaW4gYW4gYXN5bmMgdGFzay4KLQotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbiksIHJlc3RyaWN0aW9ucyA9IFdURk1vdmUocmVzdHJpY3Rpb25zKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhbV9wcml2YXRlKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3VtdWxh
dGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgaWYgKCFkb2N1
bWVudCkgewotICAgICAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmll
ZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwotICAgICAgICBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luID0gZG9jdW1lbnQtPnRvcE9yaWdpbigpOwotCi0gICAgICAg
IC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQu
Ci0gICAgICAgIC8vIDIxLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3Rp
dmVJZGVudGlmaWVyIHZhbHVlIGlzICJyZXF1aXJlZCIgYW5kIHRoZSBEaXN0aW5jdGl2ZSBJZGVu
dGlmaWVyKHMpIGFzc29jaWF0ZWQKLSAgICAgICAgLy8gICAgIHdpdGggYWNjdW11bGF0ZWQgY29u
ZmlndXJhdGlvbiBhcmUgbm90IHVuaXF1ZSBwZXIgb3JpZ2luIGFuZCBwcm9maWxlIGFuZCBjbGVh
cmFibGU6Ci0gICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAhbV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbikpIHsKLSAgICAgICAgICAgIC8vIDIxLjEuIFVwZGF0ZSBy
ZXN0cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBkZXNjcmliZWQg
YnkgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3QgaGF2ZSB1c2VyIGNvbnNlbnQuCi0g
ICAgICAgICAgICByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5pZWQsIFdU
Rk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RGTW92ZShyZXN0cmljdGlvbnMpKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1jb25zZW50LXN0YXR1cwotICAgICAgICAv
LyAzLjEuMS40IEdldCBDb25zZW50IFN0YXR1cwotICAgICAgICAvLyBHaXZlbiBhbiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiwgdGhpcyBhbGdvcml0
aG0gcmV0dXJucyB0aGUgY29uc2VudCBzdGF0dXMgZm9yIGFjY3VtdWxhdGVkCi0gICAgICAgIC8v
IGNvbmZpZ3VyYXRpb24gYW5kIG9yaWdpbiBhcyBvbmUgb2YgQ29uc2VudERlbmllZCwgSW5mb3Jt
VXNlciBvciBBbGxvd2VkLCB0b2dldGhlciB3aXRoIGFuIHVwZGF0ZWQgdmFsdWUgZm9yIHJlc3Ry
aWN0aW9ucwotICAgICAgICAvLyBpbiB0aGUgQ29uc2VudERlbmllZCBjYXNlLgotCi0gICAgICAg
IC8vIDEuIElmIHRoZXJlIGlzIHBlcnNpc3RlZCBkZW5pYWwgZm9yIG9yaWdpbiBpbmRpY2F0aW5n
IHRoYXQgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBub3QgYWxsb3dlZCwgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIC8vIDEuMS4gVXBkYXRlIHJlc3RyaWN0aW9ucyB0byBy
ZWZsZWN0IHRoZSBjb25maWd1cmF0aW9ucyBmb3Igd2hpY2ggY29uc2VudCBoYXMgYmVlbiBkZW5p
ZWQuCi0gICAgICAgIC8vIDEuMi4gUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3RyaWN0aW9u
cy4KLSAgICAgICAgLy8gMi4gSWYgdGhlcmUgaXMgcGVyc2lzdGVkIGNvbnNlbnQgZm9yIG9yaWdp
biBpbmRpY2F0aW5nIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgYWxsb3dlZCwgcmV0dXJu
IEFsbG93ZWQuCi0gICAgICAgIC8vIE5PVEU6IHBlcnNpc3RlZCBkZW5pYWwgLyBjb25zZW50IHVu
aW1wbGVtZW50ZWQuCi0KLSAgICAgICAgLy8gMy4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJl
IHRydWU6Ci0gICAgICAgIC8vICAgIOKGsyBUaGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJl
ciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCAibm90LWFsbG93ZWQiIGFuZCB0
aGUgY29tYmluYXRpb24gb2YgdGhlIFVzZXIgQWdlbnQsCi0gICAgICAgIC8vICAgICAgIGltcGxl
bWVudGF0aW9uIGFuZCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGRvZXMgbm90IGZvbGxvdyBh
bGwgdGhlIHJlY29tbWVuZGF0aW9ucyBvZiBBbGxvdyBQZXJzaXN0ZW50IERhdGEgdG8gQmUgQ2xl
YXJlZAotICAgICAgICAvLyAgICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUgSWRlbnRp
ZmllcihzKS4KLSAgICAgICAgLy8gTk9URTogYXNzdW1lIHRoYXQgaW1wbGVtZW50YXRpb25zIGZv
bGxvdyBhbGwgcmVjb21tZW5kYXRpb25zLgotCi0gICAgICAgIC8vICAgIOKGsyBUaGUgdXNlciBh
Z2VudCByZXF1aXJlcyBleHBsaWNpdCB1c2VyIGNvbnNlbnQgZm9yIHRoZSBhY2N1bXVsYXRlZCBj
b25maWd1cmF0aW9uIGZvciBvdGhlciByZWFzb25zLgotICAgICAgICAvLyBOT1RFOiBhc3N1bWUg
dGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCi0K
LSAgICAgICAgLy8gMy4xLiBSZXF1ZXN0IHVzZXIgY29uc2VudCB0byB1c2UgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbiBpbiB0aGUgb3JpZ2luIGFuZCB3YWl0IGZvciB0aGUgdXNlciByZXNwb25z
ZS4KLSAgICAgICAgLy8gICAgICBUaGUgY29uc2VudCBtdXN0IGluY2x1ZGUgY29uc2VudCB0byB1
c2UgYSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9vciBEaXN0aW5jdGl2ZSBQZXJtYW5l
bnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZQotICAgICAgICAvLyAgICAgIGlmIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIGlzICJy
ZXF1aXJlZCIuCi0gICAgICAgIC8vIDMuMi4gSWYgY29uc2VudCB3YXMgZGVuaWVkLCBydW4gdGhl
IGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgLy8gMy4yLjEuIFVwZGF0ZSByZXN0cmljdGlvbnMg
dG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHdoaWNoIGNvbnNlbnQgd2FzIGRlbmll
ZC4KLSAgICAgICAgLy8gMy4yLjEuIFJldHVybiBDb25zZW50RGVuaWVkIGFuZCByZXN0cmljdGlv
bnMuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSBpbXBsaWVkIGNvbnNlbnQgaWYgdGhlIGNvbWJp
bmF0aW9uIG9mIG9yaWdpbiBhbmQgdG9wT3JpZ2luIGFsbG93cyBpdC4KLSAgICAgICAgaWYgKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkICYmICFvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0
b3BPcmlnaW4pKSB7Ci0gICAgICAgICAgICByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlm
aWVyRGVuaWVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0dXM6OkNv
bnNlbnREZW5pZWQsIFdURk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RGTW92ZShy
ZXN0cmljdGlvbnMpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIDQuIElmIHRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIsIHJldHVybiBJbmZvcm1Vc2VyLgot
ICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
ciAhPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkgewotICAgICAgICAgICAgY2Fs
bGJhY2soQ29uc2VudFN0YXR1czo6SW5mb3JtVXNlciwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucykpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gNS4gSWYgdGhlIHVzZXIgYWdlbnQgcmVxdWlyZXMgaW5m
b3JtaW5nIHRoZSB1c2VyIGZvciB0aGUgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBmb3Igb3Ro
ZXIgcmVhc29ucywgcmV0dXJuIEluZm9ybVVzZXIuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSB0
aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZXF1aXJlIGluZm9ybWluZyB0aGUgdXNlci4KLQotICAg
ICAgICAvLyA2LiBSZXR1cm4gQWxsb3dlZC4KLSAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1
czo6QWxsb3dlZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJl
c3RyaWN0aW9ucykpOwotICAgIH0pOworICAgIENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vz
cyBhY2Nlc3MgPSBvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0b3BPcmlnaW4pID8gQ0RN
UHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpBbGxvd2VkIDogQ0RNUHJpdmF0ZTo6TG9jYWxT
dG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkOworICAgIG1fcHJpdmF0ZS0+Z2V0U3VwcG9ydGVkQ29u
ZmlndXJhdGlvbihXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBhY2Nlc3MsIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKQEAgLTYx
Miw3ICsxMjAsNyBAQCBib29sIENETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wg
Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5p
dERhdGFUeXBlKGluaXREYXRhVHlwZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZh
dGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggYWU5ODMyNWY2YWQx
MWZmNzlhYzZkMTc0YzZlZGFhOGJkNDVjOWQzMC4uZDU4Y2IwZmVlMzMzMWE4NWE4MjkzZGFmMWRm
N2MwYzQwYTEzY2RmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCkBAIC04MCwyOSArODAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENETShEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIAotICAgIGVudW0gY2xhc3MgQ29uZmln
dXJhdGlvblN0YXR1cyB7Ci0gICAgICAgIFN1cHBvcnRlZCwKLSAgICAgICAgTm90U3VwcG9ydGVk
LAotICAgICAgICBDb25zZW50RGVuaWVkLAotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIENvbnNl
bnRTdGF0dXMgewotICAgICAgICBDb25zZW50RGVuaWVkLAotICAgICAgICBJbmZvcm1Vc2VyLAot
ICAgICAgICBBbGxvd2VkLAotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIEF1ZGlvVmlkZW9UeXBl
IHsKLSAgICAgICAgQXVkaW8sCi0gICAgICAgIFZpZGVvLAotICAgIH07Ci0KLSAgICB2b2lkIGRv
U3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYg
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYsIFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKLSAgICBPcHRpb25hbDxNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24+ICBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJik7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmls
aXR5Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRl
b1R5cGUsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4mIHJlcXVl
c3RlZENhcGFiaWxpdGllcywgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0
aWFsQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJik7Ci0KLSAgICB1c2luZyBD
b25zZW50U3RhdHVzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ29uc2VudFN0YXR1cywg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYmKT47
Ci0gICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYm
IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYsIENvbnNl
bnRTdGF0dXNDYWxsYmFjayYmKTsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+IG1fcHJpdmF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5k
ZXggZGExOWJiZmYyYzdjZTgyYmVmYTgwMzVhZDc1NDJlM2U5ZjIyYTY5ZC4uMjlmYWI0OTkwNjgy
NTgzMmE1YWRkZDk5YTgwZThmMzRkOGQzMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDAx
LDcgKzQwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291
cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0
IHNlc3Npb24gY2xvc2VkIGJlIGZhbHNlLgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhl
IENETSBpbnN0YW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2
YWx1ZS4KICAgICAgICAgLy8gNi43LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dp
bmcgc3RlcHM6Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vz
c2lvbklkLCBtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29s
IHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRp
b24sIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9u
VHlwZSwgc2FuaXRpemVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wg
c2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3lzdGVtQWNjZXNzLmNwcAppbmRleCAzMGMzNGNkYzQ0ZWI4ZDY3Y2QyMjFlYzg5OWNjMGQ2YmEz
MTcyNGU4Li43ZWI3YjIwMjM1ZTE1YTU5MTAzYmIxOGEwM2VmM2ZhMTJiZDM3YzM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVt
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3lzdGVtQWNjZXNzLmNwcApAQCAtODEsMzQgKzgxLDI5IEBAIHZvaWQgTWVkaWFLZXlT
eXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiAgICAgICAgIH0KIAogICAgICAgICAvLyAyLjYuIEluaXRpYWxpemUgaW5zdGFuY2UgdG8g
ZW5hYmxlLCBkaXNhYmxlIGFuZC9vciBzZWxlY3QgS2V5IFN5c3RlbSBmZWF0dXJlcyB1c2luZyBj
b25maWd1cmF0aW9uLgotICAgICAgICBpZiAoaW5zdGFuY2UtPmluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbigqbV9jb25maWd1cmF0aW9uKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7Ci0gICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIDIuNy4gSWYgdXNlIGRpc3RpbmN0aXZlIGlk
ZW50aWZpZXIgaXMgZmFsc2UsIHByZXZlbnQgaW5zdGFuY2UgZnJvbSB1c2luZyBEaXN0aW5jdGl2
ZSBJZGVudGlmaWVyKHMpIGFuZCBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKS4K
LSAgICAgICAgaWYgKCF1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIgJiYgaW5zdGFuY2UtPnNldERp
c3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGZhbHNlKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVk
KSB7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIDIuOC4gSWYgcGVyc2lzdGVu
dCBzdGF0ZSBhbGxvd2VkIGlzIGZhbHNlLCBwcmV2ZW50IGluc3RhbmNlIGZyb20gcGVyc2lzdGlu
ZyBhbnkgc3RhdGUgcmVsYXRlZCB0byB0aGUgYXBwbGljYXRpb24gb3Igb3JpZ2luIG9mIHRoaXMg
b2JqZWN0J3MgRG9jdW1lbnQuCi0gICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlQWxsb3dlZCAm
JiBpbnN0YW5jZS0+c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChmYWxzZSkgPT0gQ0RNSW5zdGFu
Y2U6OkZhaWxlZCkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJv
cik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAyLjkuIElm
IGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBh
IG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFt
ZS4KLSAgICAgICAgLy8gMi4xMC4gTGV0IG1lZGlhIGtleXMgYmUgYSBuZXcgTWVkaWFLZXlzIG9i
amVjdCwgYW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKLSAgICAgICAgLy8gMi4xMC4xLiBM
ZXQgdGhlIHVzZSBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHZhbHVlIGJlIHVzZSBkaXN0aW5jdGl2
ZSBpZGVudGlmaWVyLgotICAgICAgICAvLyAyLjEwLjIuIExldCB0aGUgcGVyc2lzdGVudCBzdGF0
ZSBhbGxvd2VkIHZhbHVlIGJlIHBlcnNpc3RlbnQgc3RhdGUgYWxsb3dlZC4KLSAgICAgICAgLy8g
Mi4xMC4zLiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJlIHRoZSB2
YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KLSAgICAgICAgLy8g
Mi4xMC40LiBMZXQgdGhlIGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBiZSB0aGlzIG9iamVjdCdz
IGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZS4KLSAgICAgICAgLy8gMi4xMC41LiBMZXQgdGhlIGNk
bSBpbnN0YW5jZSB2YWx1ZSBiZSBpbnN0YW5jZS4KLSAgICAgICAgYXV0byBtZWRpYUtleXMgPSBN
ZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQsIG1fY29uZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBtX2ltcGxlbWVudGF0aW9u
LmNvcHlSZWYoKSwgaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0KLSAgICAgICAgLy8gMi4x
MS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KLSAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1lZGlhS2V5cz4+KFdURk1vdmUobWVk
aWFLZXlzKSk7CisgICAgICAgIGF1dG8gYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzID0gdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyID8gQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVu
dGlmaWVyczo6WWVzIDogQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVyczo6
Tm87CisgICAgICAgIGF1dG8gYWxsb3dQZXJzaXN0ZW50U3RhdGUgPSBwZXJzaXN0ZW50U3RhdGVB
bGxvd2VkID8gQ0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOjpZZXMgOiBDRE1JbnN0
YW5jZTo6QWxsb3dQZXJzaXN0ZW50U3RhdGU6Ok5vOworCisgICAgICAgIGluc3RhbmNlLT5pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oKm1fY29uZmlndXJhdGlvbiwgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgW3Nlc3Npb25UeXBlcyA9IG1fY29u
ZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBpbXBsZW1lbnRhdGlvbiA9IG1faW1wbGVtZW50YXRp
b24uY29weVJlZigpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQsIGluc3RhbmNlID0gaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChhdXRvIHN1Y2Nlc3NWYWx1ZSkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoc3VjY2Vzc1ZhbHVlID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIDIuOS4gSWYgYW55IG9mIHRo
ZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4
Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgorICAgICAg
ICAgICAgLy8gMi4xMC4gTGV0IG1lZGlhIGtleXMgYmUgYSBuZXcgTWVkaWFLZXlzIG9iamVjdCwg
YW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgIC8vIDIuMTAuMS4gTGV0
IHRoZSB1c2UgZGlzdGluY3RpdmUgaWRlbnRpZmllciB2YWx1ZSBiZSB1c2UgZGlzdGluY3RpdmUg
aWRlbnRpZmllci4KKyAgICAgICAgICAgIC8vIDIuMTAuMi4gTGV0IHRoZSBwZXJzaXN0ZW50IHN0
YXRlIGFsbG93ZWQgdmFsdWUgYmUgcGVyc2lzdGVudCBzdGF0ZSBhbGxvd2VkLgorICAgICAgICAg
ICAgLy8gMi4xMC4zLiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJl
IHRoZSB2YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KKyAgICAg
ICAgICAgIC8vIDIuMTAuNC4gTGV0IHRoZSBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgYmUgdGhp
cyBvYmplY3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUuCisgICAgICAgICAgICAvLyAyLjEw
LjUuIExldCB0aGUgY2RtIGluc3RhbmNlIHZhbHVlIGJlIGluc3RhbmNlLgorICAgICAgICAgICAg
YXV0byBtZWRpYUtleXMgPSBNZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIHNlc3Npb25UeXBlcywgV1RGTW92ZShpbXBsZW1l
bnRhdGlvbiksIFdURk1vdmUoaW5zdGFuY2UpKTsKKworICAgICAgICAgICAgLy8gMi4xMS4gUmVz
b2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KKyAgICAgICAgICAgIHByb21pc2UtPnJlc29s
dmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxNZWRpYUtleXM+PihXVEZNb3ZlKG1lZGlh
S2V5cykpOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIC8vIDMuIFJldHVybiBwcm9taXNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwCmluZGV4IGM2MjRlNTMyOWU1OTY4ODJmMGQ0MWY1NzQ1ODg1ZmMyM2QzOWE2ZTQuLjE4
N2Q1OWRlZjM0MDU1ZjhjYzVjZDU5YmQ3ZjBhYTc1YTVlOTY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IE1lZGlhS2V5czo6Y3Jl
YXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0K
IAotdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5cy1zZXRzZXJ2ZXJjZXJ0aWZpY2F0ZQogICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CkBAIC0xMDYsMTYgKzEwNiwx
NCBAQCB2b2lkIE1lZGlhS2V5czo6c2V0U2VydmVyQ2VydGlmaWNhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgQnVmZgogICAgIC8vIDQuIExldCBwcm9taXNlIGJlIGEg
bmV3IHByb21pc2UuCiAgICAgLy8gNS4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxs
ZWw6CiAKLSAgICBjb250ZXh0LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgY2VydGlmaWNhdGUgPSBXVEZNb3ZlKGNlcnRpZmljYXRlKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgewotICAgICAgICAvLyA1LjEuIFVzZSB0
aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB0byBwcm9jZXNzIGNlcnRpZmljYXRlLgotICAgICAg
ICBpZiAobV9pbnN0YW5jZS0+c2V0U2VydmVyQ2VydGlmaWNhdGUoV1RGTW92ZShjZXJ0aWZpY2F0
ZSkpID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgIC8vIDUuMi4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhj
ZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCisgICAgLy8g
NS4xLiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZpY2F0
ZS4KKyAgICBtX2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmlj
YXRlKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byBzdWNjZXNzKSB7CisgICAg
ICAgIC8vIDUuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNl
IHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVy
cm9yIG5hbWUuCisgICAgICAgIC8vIDUuMS4gW0Vsc2UsXSBSZXNvbHZlIHByb21pc2Ugd2l0aCB0
cnVlLgorICAgICAgICBpZiAoc3VjY2VzcyA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKQogICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDUuMS4gUmVzb2x2ZSBwcm9taXNlIHdpdGgg
dHJ1ZS4KLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsK
ICAgICB9KTsKIAogICAgIC8vIDYuIFJldHVybiBwcm9taXNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggMWUyZTFhMjc3MTM0
MGU2ZGYxZTBhOThhNTQyY2NkNWY4MmFlMjhkZi4uYjZiNzJhMjcyMjIyYjVjOWJkYzIyNTQwNjZi
ZThkZTI5MWJhNjg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB+TWVkaWFL
ZXlzKCk7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9uPj4gY3JlYXRlU2Vz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFLZXlTZXNzaW9uVHlwZSk7Ci0gICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
QnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
KTsKIAogICAgIHZvaWQgYXR0YWNoQ0RNQ2xpZW50KENETUNsaWVudCYpOwogICAgIHZvaWQgZGV0
YWNoQ0RNQ2xpZW50KENETUNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCmluZGV4IGQ2ZjA0Y2RkYmU1MGQzMTQ4Mzk1
ZjY1ZWM2YmY5MDU3ZmZiZjRkY2UuLmRiMWIwNTM0M2JjMjEzOGM5YjZiYzUyMjVmNzkyOTczMzZm
ZGIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5pZGwKQEAgLTMzLDUgKzMzLDUgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgTWVkaWFLZXlzIHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVT
ZXNzaW9uKG9wdGlvbmFsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUgPSAidGVtcG9y
YXJ5Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8Ym9v
bD4gc2V0U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNlcnZlckNlcnRpZmljYXRlKTsK
KyAgICBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2
ZXJDZXJ0aWZpY2F0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZjQ1YzUxOTcxNWI1YmY4OGEz
MTEzMjMxNzlmYzNhNGJlNmVhYjA2Li5iNThhODFhYWMzZjQ0YWZiZjJkMmQ5YjRhNWFmYjg1MDM2
N2Q3YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTgyMyw2ICsxODIzLDcgQEAgcGxhdGZvcm0vYXVk
aW8vVmVjdG9yTWF0aC5jcHAKIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcAogCiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAorcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5jcHAKIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAogCiBw
bGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5N2UwMGRiMDNhZDBk
NWI0N2NmMmI0YWE4MTQyMjYyYTIwMmRhMWMyLi5iMzE2OTliYWI2OTkzMTk2YTI2ODBkNDE1OTRh
ODFhYjk0MTY0ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC00MDY2LDYgKzQwNjYsMTkgQEAKIAkJQ0QzQTQ5NUYxN0E5RDAx
QjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1NjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2Uu
aCAqLzsgfTsKIAkJQ0QzQTQ5NjIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5
RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFC
MDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlckxpc3QuaCAqLzsgfTsKKwkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJBMDFEIC8qIENETUVuY3J5
cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERjc1NjlCMjE1QzIzQTQwMEVGQ0I1MCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRjky
NDAxQUFEOTAwNEJBMDFEIC8qIENETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQyMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0
b3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QzQ0UwRkEyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUg
LyogQ0RNSW5zdGFuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlDRDNDRTBGQjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VTZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlEMzc1
QTIxNTE2M0U0MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJB
MDFEIC8qIENETUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZE
MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRDFGNzFDQjY5MDBG
NTI1QzUgLyogQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZFMjQwMUFBRDkwMDRCQTAxRCAv
KiBDRE1NZWRpYUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEOTRBNUQzMUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNhcGFiaWxp
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
RDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ2MUY3MUNCNkQwMEY1MjVD
NSAvKiBDRE1NZXNzYWdlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFG
NzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Q
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5
NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1IC8qIENETVByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDIyNDAxQUFEQTAwNEJBMDFEIC8q
IENETVJlcXVpcmVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVxdWlyZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMzI0
MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEMDFGNzFDQjZCMDBGNTI1QzUgLyogQ0RN
UmVzdHJpY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQ0QzQ0UxMDQyNDAxQUFEQTAwNEJBMDFEIC8qIENETVNlc3Npb25UeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVENTFGNzFD
QjZEMDBGNTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1h
Z2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QzRTIxREIyMTgzM0Y1MTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0
aWVzQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRDNFMjUxQzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAv
KiBHcmlkQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNEM0UyNTI0MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNF
MjUyMjE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oICovOyB9
OwpAQCAtNDE5Nyw3ICs0MjEwLDcgQEAKIAkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1v
Y2tUcmFja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERjJCMDBGMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggKi87IH07CiAJCUNERjRC
NzEyMUUwMDg3QUUwMEUyMzVBMiAvKiBMZWdhY3lDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEg
LyogTGVnYWN5Q0RNU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTMxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5jcHAgKi87IH07Ci0JCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAv
KiBDRE0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RjRCNzE0MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCAqLzsgfTsKKwkJQ0RGNEI3MTYxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjRCNzE4MUUwMUNCOTEwMEUy
MzVBMiAvKiBNZWRpYUtleXNSZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE3MUUwMUNCOTEwMEUyMzVBMiAvKiBNZWRpYUtl
eXNSZXN0cmljdGlvbnMuaCAqLzsgfTsKIAkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1l
ZGlhS2V5U2Vzc2lvblR5cGUuaWRsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RGNEI3MTkxRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5
cGUuaWRsICovOyB9OwogCQlDREY0QjcxRTFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNl
c3Npb25UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREY0QjcxQzFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBlLmggKi87
IH07CkBAIC0xMzc3MCw2ICsxMzc4Myw3IEBACiAJCUNEM0E0OTVCMTdBOUQwMUIwMDI3NEU0MiAv
KiBTb3VyY2VCdWZmZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNvdXJjZUJ1ZmZlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEM0E0OTVEMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJM
aXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VCdWZmZXJMaXN0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzQ0UxMUMyNDA0NTFBRjAwNEJBMDFEIC8qIENE
TVByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNUHJpdmF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyMURCMjE4MzNGNTEwMEU2NkY1NSAvKiBJbWFnZUJ1
ZmZlclV0aWxpdGllc0NHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2
IC8qIEdyaWRBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyaWRBcmVh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyNTIxMTgwNDZCQ0QwMEUyN0Y1
NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjYyOTAsNiArMjYzMDQsNyBAQAogCQkJCUNEOTRBNUNEMUY3
MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi8sCiAJCQkJQ0Q5
NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICovLAogCQkJCUNE
OTRBNUQ2MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1NZXNzYWdlVHlwZS5oICovLAorCQkJCUNEM0NF
MTFDMjQwNDUxQUYwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmNwcCAqLywKIAkJCQlDRDk0QTVDRjFG
NzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovLAogCQkJCUNEOTRBNUNGMUY3MUNCNjEw
MEY1MjVENSAvKiBDRE1Qcm94eS5jcHAgKi8sCiAJCQkJQ0Q5NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1
IC8qIENETVByb3h5LmggKi8sCkBAIC0yOTI2Niw5ICsyOTI4MSwyMiBAQAogCQkJCTY1NTBCNjlF
MDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOTRB
NURFMUY3MkY1N0IwMEY1MjVDNSAvKiBDRE1DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
M0NFMEY4MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRDNDRTBGOTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RCNzA0NUExRjc0NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQbGF5U3Ry
ZWFtaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGQTI0MDFBQUQ5MDA0QkEwMUQgLyog
Q0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAx
RCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZDMjQw
MUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NF
MEZEMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmls
aXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RN
TWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAx
RCAvKiBDRE1Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMxODYyMzE5OUYxRTJBMDAz
MEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByb3h5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVxdWlyZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEM0NFMTAzMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1SZXN0cmljdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwNDI0MDFB
QURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVGQTkw
NENBMTc4RTYxRjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTkxQjhGMEI1MjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZUluZm9CYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggOTY5YzUwZDgzMDYxOGE4NzQ5NWI1ZGQxMjkwM2RjNjNlYTQ4YzU3MC4uMjE1
ODQ5YWI5YzgwM2QwMWQzYTMzNjQyNzdlZmQ4MjJmNmM0Mzk2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNTYxLDE1ICsyNTYxLDI1IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0
ZSkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRp
bnVlQWZ0ZXJOZWVkS2V5KCkKK3sKKyAgICBpZiAoIW1fcGxheWVyKQorICAgICAgICByZXR1cm47
CisgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVk
a2V5IikgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZW5jcnlw
dGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRvY3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2VuRW5j
cnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmsoKSk7CisgICAgbV9wbGF5ZXItPnNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkQ29udGludWUpOworfQorI2VuZGlmCisKIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYktpdE1l
ZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBu
dWxscHRyOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFi
bGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKQEAgLTI1ODAsMTQgKzI1OTAsMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgKSB7CiAg
ICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJS
X0VOQ1JZUFRFRCk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZl
bnQpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVu
dCkpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAtNTEyOSw2ICs1
MTM3LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKCkK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRl
TWVkaWFTdGF0ZSgpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB1cGRhdGVTaG91bGRDb250aW51ZUFm
dGVyTmVlZEtleSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJFbmdpbmVVcGRhdGVkKCkKQEAgLTU4OTEsNiArNTkwMywxMSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogCiBib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMm
IG9wdGlvbnMpCiB7CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Vi
a2l0bmVlZGtleUV2ZW50KQorICAgICAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtl
eSgpOworI2VuZGlmCisKICAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRw
bGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9u
cyk7CiAKQEAgLTU5MTIsNiArNTkyOSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaQogCiBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRp
b25zJiBvcHRpb25zKQogeworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
LndlYmtpdG5lZWRrZXlFdmVudCkKKyAgICAgICAgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5l
ZWRLZXkoKTsKKyNlbmRpZgorCiAgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Vi
a2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVy
biBOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDVkZTBkMTExODUx
YWM3ZmE4YzNlOTVkYjZlZWQ5YWYzMWNmNTE1OGQuLmY2OTIwZjY1NDc2ZjI4ZDdlN2IxOTRlNTkx
ZTJjNTk1MmY0NGU5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC02ODAsNyArNjgwLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlhUGxh
eWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5
TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApAQCAtNjk0LDYgKzY5
NCwxMCBAQCBwcml2YXRlOgogICAgIC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0
ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCisKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICB2b2lkIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKICAg
ICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgbWVkaWFQ
bGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29sKSBmaW5hbDsK
QEAgLTExNjYsNiArMTE3MCw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFQcm92aWRlciBtX21lZGlh
UHJvdmlkZXI7CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBib29s
IG1faGFzTmVlZGtleUxpc3RlbmVyIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFL
ZXlzPiBtX3dlYktpdE1lZGlhS2V5czsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVN0cmF0ZWd5LmgKaW5kZXggNWVkMDRjNGNjOGU4ZWNjODQ0OGZlMDUzYTRiNjZiYzY3YTgx
MTdkZC4uNjBhNTg0N2M4Y2VjMTBiNzliNzQ5YTZmYWY4NTAzZDE2YTE5OWI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBBdWRpb0lPQ2Fs
bGJhY2s7CitjbGFzcyBDRE1GYWN0b3J5OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVN0
cmF0ZWd5IHsKIHB1YmxpYzoKQEAgLTM4LDYgKzM5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24o
CiAgICAgICAgIEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSA9IDA7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8
Q0RNRmFjdG9yeSo+JikgPSAwOworI2VuZGlmCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TWVk
aWFTdHJhdGVneSgpID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKaW5kZXgg
NzRiM2FhN2Q3YmRiMDBhMjY3NTZhMDIzNjU2NmYzNjg4MTJiY2UzYi4uMWE3YTU2MjdkYmNhNjQx
YjQ5Y2U3ZTU2ZTY3MTZlMzE4YTk4OGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaApAQCAt
MjcsMTMgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENE
TUVuY3J5cHRpb25TY2hlbWUgeworZW51bSBjbGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIDogdWlu
dDhfdCB7CiAgICAgY2VuYywKICAgICBjYmNzLAogfTsKIAogfQogCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2No
ZW1lPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNRW5jcnlwdGlvblNjaGVtZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVt
ZTo6Y2VuYywKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2JjcworICAg
ID47Cit9OworCit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAppbmRleCA0YmI1OTlmYTgwNzNkM2I4NTVk
ODQ2MTc4NjE5ZGJjMDI2MTA1OGYyLi45OTJkNDlhZWVlZTVhNWYxZjQxMjVlNmYwYjMyMjI3Njkw
MjIxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmNwcApAQCAtMzAsNiArMzAsOCBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MCw3ICs0Miw5IEBAIFZl
Y3RvcjxDRE1GYWN0b3J5Kj4mIENETUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8Q0RNRmFjdG9yeSo+PiBmYWN0b3JpZXM7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25j
ZSwgWyZdIHsgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOyB9KTsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlLCBbJl0geworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bWVkaWFTdHJhdGVneSgpLnJlZ2lzdGVyQ0RNRmFjdG9yaWVzKGZhY3Rvcmllcyk7CisgICAgfSk7
CiAKICAgICByZXR1cm4gZmFjdG9yaWVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDQ0ZWFhYjA3ZTc1N2FmZTU4
YjUzNjFmNWFmMTJiMjQ3NzZhMDM1MmUuLjUyNWM4NGVjYmU3OTFmNDBiNTQ3ZmI3ZmFmZGU5ZDAz
YmE4MTBiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgLy8gUGxh
dGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdGhhdCdzIGNhbGxlZCB3aGVuIHRoZSBsaXN0IG9mCiAg
ICAgLy8gcmVnaXN0ZXJlZCBDRE1GYWN0b3J5IG9iamVjdHMgaXMgcXVlcmllZCBmb3IgdGhlIGZp
cnN0IHRpbWUuCi0gICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0
b3I8Q0RNRmFjdG9yeSo+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGxhdGZv
cm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+Jik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCA4ZjlmM2ViODc0NWMzNTIwMjgzMTRjNjA2ZDI4
OWQ0ZTNmNzFhMDQ4Li43MzRjOTM1MDc1NmQ3OWY3NGQ5MDY1ZTI0MDFjMmVlOGFiYzEzMDc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDRE1NZXNzYWdlVHlwZS5oIgog
I2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CkBAIC01MiwyMyArNTMsMzMgQEAgcHVibGljOgogICAgICAgICBNb2NrLAogICAgICAg
ICBDbGVhcktleSwKICAgICAgICAgRmFpclBsYXlTdHJlYW1pbmcsCisgICAgICAgIFJlbW90ZSwK
ICAgICB9OwogICAgIHZpcnR1YWwgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlw
ZSgpIGNvbnN0ID0gMDsKIAotICAgIGVudW0gU3VjY2Vzc1ZhbHVlIHsKKyAgICBlbnVtIFN1Y2Nl
c3NWYWx1ZSA6IGJvb2wgewogICAgICAgICBGYWlsZWQsCiAgICAgICAgIFN1Y2NlZWRlZCwKICAg
ICB9OworICAgIHVzaW5nIFN1Y2Nlc3NDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3VjY2Vzc1ZhbHVlKT47CiAKLSAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChi
b29sKSA9IDA7Ci0gICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxs
b3dlZChib29sKSA9IDA7Ci0gICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwotICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVl
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgPSAwOworICAgIGVudW0gY2xhc3Mg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAg
ICBZZXMsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQWxsb3dQZXJzaXN0ZW50U3RhdGUgOiBi
b29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcywKKyAgICB9OworCisgICAgdmlydHVhbCB2
b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CiAKLSAg
ICBlbnVtIGNsYXNzIEhEQ1BTdGF0dXMgeworICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyA6IHVp
bnQ4X3QgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWYWxpZCwKICAgICAgICAgT3V0cHV0
UmVzdHJpY3RlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggODcyNWEzMWQ4YmIzZTIyYmUy
MWRmMDdlMzIwYjM2ZTc1MDM4NmUxYS4uZDQ2NGI3NGQxYzcyMDJhOWEzMzlkZmY2NWQwNmUwODIw
ODk2OWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTcyLDkgKzcyLDkgQEAgcHVibGlj
OgogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6
S2V5U3RhdHVzVmVjdG9yOwogICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8
S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdl
ZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKLSAgICBlbnVtIGNs
YXNzIFNlc3Npb25Mb2FkRmFpbHVyZSB7CisgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1
cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKICAgICAgICAgTm9TZXNzaW9uRGF0YSwKICAg
ICAgICAgTWlzbWF0Y2hlZFNlc3Npb25UeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAppbmRleCBhZDk2OTYyMzYwNGNk
MTQ3MDU1YTI3YjczMzZmNjc3YzBiM2FmMmM0Li5jYzVlNzE4NmY3NGVmOGU4MTRjYjNhZjc1NWUx
NjFhNjVjMjA4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNS2V5U3RhdHVzIHsKK2VudW0gY2xhc3MgQ0RN
S2V5U3RhdHVzIDogdWludDhfdCB7CiAgICAgVXNhYmxlLAogICAgIEV4cGlyZWQsCiAgICAgUmVs
ZWFzZWQsCkBAIC00NCw0ICs0NiwyMCBAQCBlbnVtIGNsYXNzIENETUtleVN0YXR1cyB7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXMsCisgICAgV2ViQ29yZTo6
Q0RNS2V5U3RhdHVzOjpVc2FibGUsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpFeHBpcmVk
LAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6UmVsZWFzZWQsCisgICAgV2ViQ29yZTo6Q0RN
S2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6
T3V0cHV0RG93bnNjYWxlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlN0YXR1c1BlbmRp
bmcsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yCisgICAgPjsKK307
CisKK30KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDYxMmQ2NDVmYWE1MjQ4ZjcxZjFjMTU2N2Y0NTA3ZTg5
ZjNiMzFjZTUuLjg1MjU4N2NlZGEwNTEyMTQ0Nzk1MjJmYWMzOGU0YzBmYjk4NzQ5ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTQ4LDYgKzQ4LDY3IEBAIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIHsKICAgICBDRE1SZXF1aXJlbWVudCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXIgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBDRE1SZXF1
aXJlbWVudCBwZXJzaXN0ZW50U3RhdGUgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAg
ICBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+IHNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CisgICAgICAgIGVuY29kZXIgPDwgaW5pdERh
dGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAg
ZW5jb2RlciA8PCB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlOworICAg
ICAgICBlbmNvZGVyIDw8IHNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGxhYmVsOworICAgICAgICBkZWNvZGVyID4+IGxhYmVsOworICAgICAgICBpZiAoIWxhYmVs
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0
YVR5cGVzOworICAgICAgICBpZiAoIWluaXREYXRhVHlwZXMpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxp
dHk+PiBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgZGVjb2RlciA+PiBhdWRpb0NhcGFiaWxp
dGllczsKKyAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJp
bGl0eT4+IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAgICBkZWNvZGVyID4+IHZpZGVvQ2FwYWJp
bGl0aWVzOworICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4gZGlz
dGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRlbnRp
ZmllcjsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXIpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAKKyAgICAgICAgT3B0aW9uYWw8Q0RNUmVxdWly
ZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3Rh
dGU7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+PiBz
ZXNzaW9uVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc2Vzc2lvblR5cGVzOworICAgICAgICBp
ZiAoIXNlc3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCisgICAgICAgICAg
ICBXVEZNb3ZlKCppbml0RGF0YVR5cGVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmF1ZGlvQ2Fw
YWJpbGl0aWVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnZpZGVvQ2FwYWJpbGl0aWVzKSwKKyAg
ICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAqcGVyc2lzdGVu
dFN0YXRlLAorICAgICAgICAgICAgV1RGTW92ZSgqc2Vzc2lvblR5cGVzKSwKKyAgICAgICAgfX07
CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHku
aAppbmRleCA5MDFiNTRmZjA1MDhlZGE5YmJiODhjNWMxZGI4NjUzOGRjZTE0MjgyLi5mODRhMGQx
MmFiNGNkNTIwZTNmMGUwNGQ2NGViZWZjNjMxNjI1ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHku
aApAQCAtMzksNiArMzksMzkgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAgU3Ry
aW5nIGNvbnRlbnRUeXBlOwogICAgIFN0cmluZyByb2J1c3RuZXNzOwogICAgIE9wdGlvbmFsPENE
TUVuY3J5cHRpb25TY2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAg
eworICAgICAgICBlbmNvZGVyIDw8IGNvbnRlbnRUeXBlOworICAgICAgICBlbmNvZGVyIDw8IHJv
YnVzdG5lc3M7CisgICAgICAgIGVuY29kZXIgPDwgZW5jcnlwdGlvblNjaGVtZTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNTWVk
aWFDYXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVudFR5
cGU7CisgICAgICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcm9idXN0bmVzczsKKyAgICAgICAg
ZGVjb2RlciA+PiByb2J1c3RuZXNzOworICAgICAgICBpZiAoIXJvYnVzdG5lc3MpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPENE
TUVuY3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBkZWNvZGVyID4+
IGVuY3J5cHRpb25TY2hlbWU7CisgICAgICAgIGlmICghZW5jcnlwdGlvblNjaGVtZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAg
ICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCisgICAgICAgICAgICBXVEZNb3ZlKCpyb2J1c3Ru
ZXNzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmVuY3J5cHRpb25TY2hlbWUpLAorICAgICAgICB9
fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaAppbmRl
eCBlNWY3OTZhOWUwZTA3NTFhYTAyNzgyYjliNjY2Y2EyMzFlZjdlNjA5Li45NWJmMjhjMmFhOTRh
M2RhNTA0NWI1ZWMwMGYzNThjZDI2ZDk1Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKQEAgLTMwLDkgKzMw
LDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETU1lc3NhZ2VU
eXBlIHsKK2VudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBMaWNlbnNl
UmVxdWVzdCwKICAgICBMaWNlbnNlUmVuZXdhbCwKICAgICBMaWNlbnNlUmVsZWFzZSwKQEAgLTQx
LDQgKzQzLDE4IEBAIGVudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgewogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsCisgICAgICAgIFdlYkNvcmU6
OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVz
c2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZTo6TGljZW5zZVJlbGVhc2UsCisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpJbmRp
dmlkdWFsaXphdGlvblJlcXVlc3QKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY0YmE0OWU0MDYwYWZkNzll
OGMyMDIwNDEyOGQ3YzQ0YjlhYmY1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCkBAIC0wLDAgKzEsNTIwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNETVByaXZhdGUu
aCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiQ0RNTWVkaWFDYXBhYmlsaXR5LmgiCisjaW5j
bHVkZSAiQ0RNUmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlICJDRE1SZXN0cmljdGlvbnMuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NETVByaXZhdGU6OkNETVByaXZhdGUoKSA9IGRlZmF1bHQ7
CitDRE1Qcml2YXRlOjp+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKKwordm9pZCBDRE1Qcml2YXRl
OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBj
YW5kaWRhdGVDb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0
ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRpb24K
KyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gMy4x
LjEuMSBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24KKyAgICAvLyBHaXZlbiBhIEtleSBTeXN0
ZW1zIGltcGxlbWVudGF0aW9uIGltcGxlbWVudGF0aW9uLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLCBhbmQgb3JpZ2luLAorICAgIC8vIHRoaXMgYWxn
b3JpdGhtIHJldHVybnMgYSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBvciBOb3RTdXBwb3J0ZWQg
YXMgYXBwcm9wcmlhdGUuCisKKyAgICAvLyAxLiBMZXQgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24g
YmUgQ29uc2VudERlbmllZC4KKyAgICAvLyAyLiBJbml0aWFsaXplIHJlc3RyaWN0aW9ucyB0byBp
bmRpY2F0ZSB0aGF0IG5vIGNvbmZpZ3VyYXRpb25zIGhhdmUgaGFkIHVzZXIgY29uc2VudCBkZW5p
ZWQuCisgICAgQ0RNUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyB7IH07CisgICAgZG9TdXBwb3J0
ZWRDb25maWd1cmF0aW9uU3RlcChXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBXVEZN
b3ZlKHJlc3RyaWN0aW9ucyksIGFjY2VzcywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lk
IENETVByaXZhdGU6OmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJl
c3RyaWN0aW9ucywgTG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgU3VwcG9ydGVkQ29uZmlndXJh
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uCisgICAgLy8gVzND
IEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYsIGN0ZC4KKworICAgIC8vIDMuMS4xLjEg
R2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uCisgICAgLy8gMy4gUmVwZWF0IHRoZSBmb2xsb3dp
bmcgc3RlcCB3aGlsZSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBpcyBDb25zZW50RGVuaWVkOgor
ICAgIC8vIDMuMS4gTGV0IHN1cHBvcnRlZCBjb25maWd1cmF0aW9uIGFuZCwgaWYgcHJvdmlkZWQs
IHJlc3RyaWN0aW9ucyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUKKyAgICAvLyBHZXQg
U3VwcG9ydGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNlbnQgYWxnb3JpdGhtIHdpdGggaW1wbGVt
ZW50YXRpb24sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLAorICAgIC8vIHJlc3RyaWN0aW9ucyBh
bmQgb3JpZ2luLgorICAgIGF1dG8gb3B0aW9uYWxDb25maWd1cmF0aW9uID0gZ2V0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbihjYW5kaWRhdGVDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMsIGFjY2Vz
cyk7CisgICAgaWYgKCFvcHRpb25hbENvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29uc2Vu
dENhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBhY2Nlc3NdIChDb25zZW50U3RhdHVzIHN0YXR1cywgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJlc3Ry
aWN0aW9ucykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgLy8gMy4xLjEuMiBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNl
bnQsIGN0ZC4KKyAgICAgICAgLy8gMjIuIExldCBjb25zZW50IHN0YXR1cyBhbmQgdXBkYXRlZCBy
ZXN0cmljdGlvbnMgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBHZXQgQ29uc2VudCBTdGF0
dXMgYWxnb3JpdGhtIG9uIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sCisgICAgICAgIC8vICAg
ICByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiBhbmQgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIHZh
bHVlIG9mIGNvbnNlbnQgc3RhdHVzIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgICAgICBz
d2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5p
ZWQ6CisgICAgICAgICAgICAvLyDihrMgQ29uc2VudERlbmllZDoKKyAgICAgICAgICAgIC8vICAg
IFJldHVybiBDb25zZW50RGVuaWVkIGFuZCB1cGRhdGVkIHJlc3RyaWN0aW9ucy4KKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5kb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25TdGVwKFdURk1vdmUoY29uZmln
dXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBDb25zZW50U3RhdHVzOjpJ
bmZvcm1Vc2VyOgorICAgICAgICAgICAgLy8g4oazIEluZm9ybVVzZXIKKyAgICAgICAgICAgIC8v
ICAgIEluZm9ybSB0aGUgdXNlciB0aGF0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgaW4g
dXNlIGluIHRoZSBvcmlnaW4gaW5jbHVkaW5nLCBzcGVjaWZpY2FsbHksIHRoZSBpbmZvcm1hdGlv
biB0aGF0CisgICAgICAgICAgICAvLyAgICBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9v
ciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZSB3aWxs
IGJlIHVzZWQgaWYgdGhlCisgICAgICAgICAgICAvLyAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXIg
bWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgInJlcXVpcmVkIi4gQ29udGlu
dWUgdG8gdGhlIG5leHQgc3RlcC4KKyAgICAgICAgICAgIC8vIE5PVEU6IEltcGxlbWVudC4KKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6QWxsb3dlZDoK
KyAgICAgICAgICAgIC8vIOKGsyBBbGxvd2VkOgorICAgICAgICAgICAgLy8gQ29udGludWUgdG8g
dGhlIG5leHQgc3RlcC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8v
IDIzLiBSZXR1cm4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgfTsKKyAgICBnZXRDb25zZW50U3RhdHVzKFdU
Rk1vdmUob3B0aW9uYWxDb25maWd1cmF0aW9uLnZhbHVlKCkpLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cyksIGFjY2VzcywgV1RGTW92ZShjb25zZW50Q2FsbGJhY2spKTsKK30KKworYm9vbCBDRE1Qcml2
YXRlOjppc1BlcnNpc3RlbnRUeXBlKENETVNlc3Npb25UeXBlIHNlc3Npb25UeXBlKQoreworICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2lzLXBlcnNpc3RlbnQt
c2Vzc2lvbi10eXBlCisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYK
KworICAgIC8vIDUuMS4xLiBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8KKyAgICAvLyAxLiBM
ZXQgdGhlIHNlc3Npb24gdHlwZSBiZSB0aGUgc3BlY2lmaWVkIENETVNlc3Npb25UeXBlIHZhbHVl
LgorICAgIC8vIDIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSB2YWx1ZSBvZiBzZXNzaW9uIHR5
cGUgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgc3dpdGNoIChzZXNzaW9uVHlwZSkgewor
ICAgIGNhc2UgQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeToKKyAgICAgICAgLy8g4oazICJ0ZW1w
b3JhcnkiCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQ
ZXJzaXN0ZW50TGljZW5zZToKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNh
Z2VSZWNvcmQ6CisgICAgICAgIC8vIOKGsyAicGVyc2lzdGVudC1saWNlbnNlIgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETVBy
aXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmlj
dGlvbnMsIExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MpCit7CisgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFu
ZC1jb25zZW50CisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKwor
ICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50Cisg
ICAgLy8gR2l2ZW4gYSBLZXkgU3lzdGVtcyBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbiwg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwKKyAgICAv
LyByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiwgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBv
cnRlZCBjb25maWd1cmF0aW9uLCBOb3RTdXBwb3J0ZWQsIG9yIENvbnNlbnREZW5pZWQKKyAgICAv
LyBhcyBhcHByb3ByaWF0ZSBhbmQsIGluIHRoZSBDb25zZW50RGVuaWVkIGNhc2UsIHJlc3RyaWN0
aW9ucy4KKworICAgIC8vIDEuIExldCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGJlIGEgbmV3
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gZGljdGlvbmFyeS4KKyAgICBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiB7IH07CisKKyAgICAvLyAyLiBT
ZXQgdGhlIGxhYmVsIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFs
IHRoZSBsYWJlbCBtZW1iZXIgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24uCisgICAgYWNjdW11
bGF0ZWRDb25maWd1cmF0aW9uLmxhYmVsID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5sYWJlbDsK
KworICAgIC8vIDMuIElmIHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBjYW5kaWRhdGUgY29u
ZmlndXJhdGlvbiBpcyBub24tZW1wdHksIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIGlm
ICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLmlzRW1wdHkoKSkgeworICAg
ICAgICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgdHlwZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2Yg
RE9NU3RyaW5ncy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkVHlwZXM7CisKKyAg
ICAgICAgLy8gMy4yLiBGb3IgZWFjaCB2YWx1ZSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidz
IGluaXREYXRhVHlwZXMgbWVtYmVyOgorICAgICAgICBmb3IgKGF1dG8gaW5pdERhdGFUeXBlIDog
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKSB7CisgICAgICAgICAgICAvLyAz
LjIuMS4gTGV0IGluaXREYXRhVHlwZSBiZSB0aGUgdmFsdWUuCisgICAgICAgICAgICAvLyAzLjIu
Mi4gSWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGdlbmVyYXRpbmcgcmVxdWVzdHMgYmFz
ZWQgb24gaW5pdERhdGFUeXBlLCBhZGQgaW5pdERhdGFUeXBlCisgICAgICAgICAgICAvLyAgICAg
ICAgdG8gc3VwcG9ydGVkIHR5cGVzLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2
ZS4gVGhlIGVtcHR5IHN0cmluZyBpcyBuZXZlciBzdXBwb3J0ZWQuCisgICAgICAgICAgICBpZiAo
aW5pdERhdGFUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgaWYgKHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5
cGUpKQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChpbml0RGF0YVR5cGUp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4zLiBJZiBzdXBwb3J0ZWQgdHlwZXMgaXMgZW1w
dHksIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChzdXBwb3J0ZWRUeXBlcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIDMu
NC4gU2V0IHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uIHRvIHN1cHBvcnRlZCB0eXBlcy4KKyAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmluaXREYXRhVHlwZXMgPSBXVEZNb3ZlKHN1cHBvcnRlZFR5cGVzKTsKKyAgICB9CisKKyAgICAv
LyA0LiBMZXQgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBiZSB0aGUgdmFsdWUg
b2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVy
LgorICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0g
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisKKyAgICAvLyA1
LiBJZiBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVtZW50IGlzICJvcHRpb25hbCIgYW5k
IERpc3RpbmN0aXZlIElkZW50aWZpZXJzIGFyZSBub3QgYWxsb3dlZCBhY2NvcmRpbmcgdG8KKyAg
ICAvLyAgICByZXN0cmljdGlvbnMsIHNldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVt
ZW50IHRvICJub3QtYWxsb3dlZCIuCisgICAgaWYgKGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVp
cmVtZW50ID09IENETVJlcXVpcmVtZW50OjpPcHRpb25hbCAmJiByZXN0cmljdGlvbnMuZGlzdGlu
Y3RpdmVJZGVudGlmaWVyRGVuaWVkKQorICAgICAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXJSZXF1
aXJlbWVudCA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworCisgICAgLy8gNi4gRm9sbG93
IHRoZSBzdGVwcyBmb3IgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBmcm9tIHRo
ZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBzd2l0Y2ggKGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVp
cmVtZW50KSB7CisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ6CisgICAgICAgIC8v
IOKGsyAicmVxdWlyZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5v
dCBzdXBwb3J0IHVzZSBvZiBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGluIGNvbWJpbmF0aW9u
CisgICAgICAgIC8vIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdHJpY3Rp
b25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9
PSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6T3B0aW9u
YWw6CisgICAgICAgIC8vIOKGsyAib3B0aW9uYWwiCisgICAgICAgIC8vIENvbnRpbnVlIHdpdGgg
dGhlIGZvbGxvd2luZyBzdGVwcy4KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENETVJlcXVp
cmVtZW50OjpOb3RBbGxvd2VkOgorICAgICAgICAvLyDihrMgIm5vdC1hbGxvd2VkIgorICAgICAg
ICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdXNlIERpc3RpbmN0aXZlIElkZW50
aWZpZXIocykgb3IgRGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykKKyAgICAgICAg
Ly8gaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0
cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIDcuIFNldCB0aGUgZGlz
dGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGVxdWFsIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQuCisgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9IGRpc3RpbmN0aXZlSWRlbnRp
ZmllclJlcXVpcmVtZW50OworCisgICAgLy8gOC4gTGV0IHBlcnNpc3RlbnQgc3RhdGUgcmVxdWly
ZW1lbnQgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3Mg
cGVyc2lzdGVudFN0YXRlIG1lbWJlci4KKyAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudCA9IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlOwor
CisgICAgLy8gOS4gSWYgcGVyc2lzdGVudCBzdGF0ZSByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwi
IGFuZCBwZXJzaXN0aW5nIHN0YXRlIGlzIG5vdCBhbGxvd2VkIGFjY29yZGluZyB0byByZXN0cmlj
dGlvbnMsCisgICAgLy8gICAgc2V0IHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQgdG8gIm5v
dC1hbGxvd2VkIi4KKyAgICBpZiAocGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgPT0gQ0RNUmVx
dWlyZW1lbnQ6Ok9wdGlvbmFsICYmIHJlc3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQp
CisgICAgICAgIHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50ID0gQ0RNUmVxdWlyZW1lbnQ6Ok5v
dEFsbG93ZWQ7CisKKyAgICAvLyAxMC4gRm9sbG93IHRoZSBzdGVwcyBmb3IgcGVyc2lzdGVudCBz
dGF0ZSByZXF1aXJlbWVudCBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBzd2l0Y2ggKHBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KSB7CisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6UmVx
dWlyZWQ6CisgICAgICAgIC8vIOKGsyAicmVxdWlyZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBs
ZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBlcnNpc3Rpbmcgc3RhdGUgaW4gY29tYmluYXRp
b24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGFuZCByZXN0cmlj
dGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICh0aGlzLT5wZXJzaXN0ZW50
U3RhdGVSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykg
PT0gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlv
bmFsOgorICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgorICAgICAgICAvLyBDb250aW51ZSB3aXRo
IHRoZSBmb2xsb3dpbmcgc3RlcHMuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDRE1SZXF1
aXJlbWVudDo6Tm90QWxsb3dlZDoKKyAgICAgICAgLy8g4oazICJub3QtYWxsb3dlZCIKKyAgICAg
ICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHBlcnNpc3Rpbmcgc3RhdGUgaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGFu
ZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQKKyAgICAgICAgaWYgKHRoaXMtPnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJp
Y3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyAxMS4gU2V0IHRo
ZSBwZXJzaXN0ZW50U3RhdGUgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8g
ZXF1YWwgdGhlIHZhbHVlIG9mIHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQuCisgICAgYWNj
dW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IHBlcnNpc3RlbnRTdGF0ZVJl
cXVpcmVtZW50OworCisgICAgLy8gMTIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSBmaXJzdCBt
YXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgVmVjdG9yPENE
TVNlc3Npb25UeXBlPiBzZXNzaW9uVHlwZXM7CisKKyAgICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3Vy
YXRpb24uc2Vzc2lvblR5cGVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyDihrMgSWYgdGhlIHNl
c3Npb25UeXBlcyBtZW1iZXIgaXMgcHJlc2VudCBbV2ViSURMXSBpbiBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbgorICAgICAgICAvLyBMZXQgc2Vzc2lvbiB0eXBlcyBiZSBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbidzIHNlc3Npb25UeXBlcyBtZW1iZXIuCisgICAgICAgIHNlc3Npb25UeXBlcyA9IGNh
bmRpZGF0ZUNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIOKGsyBPdGhlcndpc2UKKyAgICAgICAgLy8gTGV0IHNlc3Npb24gdHlwZXMgYmUgWyAidGVt
cG9yYXJ5IiBdLgorICAgICAgICBzZXNzaW9uVHlwZXMgPSB7IENETVNlc3Npb25UeXBlOjpUZW1w
b3JhcnkgfTsKKyAgICB9CisKKyAgICAvLyAxMy4gRm9yIGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0
eXBlczoKKyAgICBmb3IgKGF1dG8mIHNlc3Npb25UeXBlIDogc2Vzc2lvblR5cGVzKSB7CisgICAg
ICAgIC8vIDEzLjEuIExldCBzZXNzaW9uIHR5cGUgYmUgdGhlIHZhbHVlLgorICAgICAgICAvLyAx
My4yLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVl
IGlzICJub3QtYWxsb3dlZCIgYW5kIHRoZQorICAgICAgICAvLyAgICAgICBJcyBwZXJzaXN0ZW50
IHNlc3Npb24gdHlwZT8gYWxnb3JpdGhtIHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJl
dHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24u
cGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lz
dGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICAvLyAxMy4zLiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9y
dCBzZXNzaW9uIHR5cGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uCisgICAgICAgIC8vICAgICAgIGFuZCByZXN0cmljdGlvbnMgZm9yIG90aGVyIHJlYXNvbnMs
IHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKHNlc3Npb25UeXBlLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxMy40IElmIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUgaXMgIm9wdGlv
bmFsIiBhbmQgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBJcworICAgICAgICAvLyAgICAgIHBl
cnNpc3RlbnQgc2Vzc2lvbiB0eXBlPyBhbGdvcml0aG0gb24gc2Vzc2lvbiB0eXBlIGlzIHRydWUs
IGNoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlCisgICAg
ICAgIC8vICAgICAgdmFsdWUgdG8gInJlcXVpcmVkIi4KKyAgICAgICAgaWYgKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
ICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpSZXF1aXJl
ZDsKKyAgICB9CisKKyAgICAvLyAxNC4gU2V0IHRoZSBzZXNzaW9uVHlwZXMgbWVtYmVyIG9mIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gc2Vzc2lvbiB0eXBlcy4KKyAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzID0gc2Vzc2lvblR5cGVzOworCisgICAgLy8gMTUu
IElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBhbmQgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVycyBp
biBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBhcmUgYm90aCBlbXB0eSwgcmV0dXJuIE5vdFN1cHBv
cnRlZC4KKyAgICBpZiAoY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5p
c0VtcHR5KCkgJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyAxNi4g4oazIElm
IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24g
aXMgbm9uLWVtcHR5OgorICAgIGlmICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFi
aWxpdGllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gMTYuMS4gTGV0IHZpZGVvIGNhcGFiaWxp
dGllcyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgR2V0IFN1cHBvcnRlZCBDYXBhYmls
aXRpZXMgZm9yIEF1ZGlvL1ZpZGVvIFR5cGUgYWxnb3JpdGhtIG9uCisgICAgICAgIC8vICAgICAg
IFZpZGVvLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJl
ciwgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwgYW5kIHJlc3RyaWN0aW9ucy4KKyAgICAgICAg
YXV0byB2aWRlb0NhcGFiaWxpdGllcyA9IGdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvckF1ZGlv
VmlkZW9UeXBlKEF1ZGlvVmlkZW9UeXBlOjpWaWRlbywgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52
aWRlb0NhcGFiaWxpdGllcywgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMp
OworCisgICAgICAgIC8vIDE2LjIuIElmIHZpZGVvIGNhcGFiaWxpdGllcyBpcyBudWxsLCByZXR1
cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxNi4zIFNldCB0aGUgdmlk
ZW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gdmlk
ZW8gY2FwYWJpbGl0aWVzLgorICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlkZW9D
YXBhYmlsaXRpZXMgPSBXVEZNb3ZlKHZpZGVvQ2FwYWJpbGl0aWVzLnZhbHVlKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIDE2LiDihrMgT3RoZXJ3aXNlOgorICAgICAgICAvLyAgICAgU2V0
IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlv
biB0byBhbiBlbXB0eSBzZXF1ZW5jZS4KKyAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LnZpZGVvQ2FwYWJpbGl0aWVzID0geyB9OworICAgIH0KKworICAgIC8vIDE3LiDihrMgSWYgdGhl
IGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBpcyBu
b24tZW1wdHk6CisgICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0
aWVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyAxNy4xLiBMZXQgYXVkaW8gY2FwYWJpbGl0aWVz
IGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBHZXQgU3VwcG9ydGVkIENhcGFiaWxpdGll
cyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0gb24KKyAgICAgICAgLy8gICAgICAgQXVk
aW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyLCBh
Y2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVzdHJpY3Rpb25zLgorICAgICAgICBhdXRv
IGF1ZGlvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRl
b1R5cGUoQXVkaW9WaWRlb1R5cGU6OkF1ZGlvLCBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlv
Q2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyk7CisK
KyAgICAgICAgLy8gMTcuMi4gSWYgYXVkaW8gY2FwYWJpbGl0aWVzIGlzIG51bGwsIHJldHVybiBO
b3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIDE3LjMgU2V0IHRoZSBhdWRpb0Nh
cGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBhdWRpbyBj
YXBhYmlsaXRpZXMuCisgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFi
aWxpdGllcyA9IFdURk1vdmUoYXVkaW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgLy8gMTcuIOKGsyBPdGhlcndpc2U6CisgICAgICAgIC8vICAgICBTZXQgdGhl
IGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGFuIGVtcHR5IHNlcXVlbmNlLgorICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uYXVk
aW9DYXBhYmlsaXRpZXMgPSB7IH07CisgICAgfQorCisgICAgLy8gMTguIElmIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMgIm9wdGlvbmFs
IiwgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nCisgICAgLy8gICAgIGNv
bmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBpZiAoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVudDo6T3B0aW9u
YWwpIHsKKyAgICAgICAgLy8g4oazIElmIHRoZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyB1c2Ug
RGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBvciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRp
ZmllcihzKSBmb3IgYW55IG9mIHRoZQorICAgICAgICAvLyAgICBjb21iaW5hdGlvbnMgaW4gYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlmaWVy
c1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBD
RE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpIHsKKyAgICAgICAgICAgIC8vIENoYW5nZSBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRvICJyZXF1
aXJlZCIuCisgICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8g4oazIE90aGVyd2lzZQorICAgICAgICAgICAgLy8gICAgQ2hhbmdlIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgdG8g
Im5vdC1hbGxvd2VkIi4KKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0
aW5jdGl2ZUlkZW50aWZpZXIgPSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIDE5LiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVy
c2lzdGVudFN0YXRlIHZhbHVlIGlzICJvcHRpb25hbCIsIGZvbGxvdyB0aGUgc3RlcHMgZm9yIHRo
ZSBmaXJzdCBtYXRjaGluZworICAgIC8vICAgICBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5n
IGxpc3Q6CisgICAgaWYgKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUg
PT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsKSB7CisgICAgICAgIC8vIOKGsyBJZiB0aGUgaW1w
bGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBzdGF0ZSBmb3IgYW55IG9mIHRoZSBjb21i
aW5hdGlvbnMgaW4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAodGhpcy0+
cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0
cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgeworICAgICAgICAgICAgLy8g
Q2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUg
dG8gInJlcXVpcmVkIi4KKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCisgICAgICAgICAgICAvLyAgICBDaGFuZ2Ug
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0byAibm90
LWFsbG93ZWQiLgorICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3Rl
bnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25maWd1cmF0aW9uIHNwZWNp
ZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uCisgICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90IGFsbG93ZWQgaW4g
dGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KKyAgICBpZiAoIXN1cHBvcnRzQ29uZmln
dXJhdGlvbihhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgaWYgKChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCB8fCBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgJiYg
YWNjZXNzID09IExvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247Cisg
ICAgLy8gTk9URTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0dXMoKS4KK30KKworT3B0aW9u
YWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENh
cGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKENETVByaXZhdGU6OkF1ZGlvVmlkZW9UeXBlIHR5
cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRp
ZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9u
LCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykKK3sKKyAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNhcGFiaWxpdGllcy1mb3It
YXVkaW8tdmlkZW8tdHlwZQorICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAy
MDE2CisKKyAgICAvLyAzLjEuMS4zIEdldCBTdXBwb3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRp
by9WaWRlbyBUeXBlCisKKyAgICAvLyBHaXZlbiBhbiBhdWRpby92aWRlbyB0eXBlLCBDRE1NZWRp
YUNhcGFiaWxpdHkgc2VxdWVuY2UgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdGllcywgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbgorICAgIC8vIHBhcnRpYWwgY29uZmlndXJhdGlvbiwgYW5kIHJl
c3RyaWN0aW9ucywgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIHN1cHBvcnRl
ZCBDRE1NZWRpYUNhcGFiaWxpdHkgdmFsdWVzCisgICAgLy8gZm9yIHRoaXMgYXVkaW8vdmlkZW8g
dHlwZSBvciBudWxsIGFzIGFwcHJvcHJpYXRlLgorCisgICAgLy8gMS4gTGV0IGxvY2FsIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBjb3B5IG9mIHBhcnRpYWwgY29uZmlndXJh
dGlvbi4KKyAgICBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJh
dGlvbiA9IHBhcnRpYWxDb25maWd1cmF0aW9uOworCisgICAgLy8gMi4gTGV0IHN1cHBvcnRlZCBt
ZWRpYSBjYXBhYmlsaXRpZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgQ0RNTWVkaWFDYXBhYmls
aXR5IGRpY3Rpb25hcmllcy4KKyAgICBWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiBzdXBwb3J0
ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07CisKKyAgICAvLyAzLiBGb3IgZWFjaCByZXF1ZXN0ZWQg
bWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzOgorICAgIGZv
ciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJlcXVlc3RlZENhcGFiaWxpdGllcykgewor
ICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFi
aWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCisgICAgICAgIC8vIDMuMi4gTGV0IHJvYnVzdG5l
c3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyByb2J1c3RuZXNzIG1lbWJlci4KKyAg
ICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0ZWRDYXBhYmlsaXR5LnJvYnVzdG5lc3M7
CisKKyAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMgdGhlIGVtcHR5IHN0cmluZywg
cmV0dXJuIG51bGwuCisgICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBhYmlsaXR5LmNvbnRlbnRUeXBl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
Ly8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52YWxpZCBvciB1bnJlY29nbml6ZWQgTUlN
RSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAgICAgIE9wdGlvbmFs
PFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNlZENvbnRlbnRUeXBlOjpjcmVh
dGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9kZTo6UmZjMjA0NSk7CisgICAg
ICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRhaW5lciB0eXBlIHNwZWNpZmllZCBieSBj
b250ZW50IHR5cGUuCisgICAgICAgIFN0cmluZyBjb250YWluZXIgPSBjb250ZW50VHlwZS0+bWlt
ZVR5cGUoKTsKKworICAgICAgICAvLyAzLjYuIElmIHRoZSB1c2VyIGFnZW50IGRvZXMgbm90IHN1
cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uIFRoZSBjYXNl
LXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRl
dGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4KKyAgICAgICAgLy8gMy43LiBMZXQgcGFy
YW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFdIHBhcmFtZXRlcnMsIGlmIGFueSwgc3Bl
Y2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KKyAgICAgICAgLy8gMy44LiBJZiB0aGUgdXNlciBhZ2Vu
dCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1ldGVycywgY29udGludWUgdG8g
dGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAvLyAzLjkuIExldCBtZWRpYSB0eXBlcyBiZSB0
aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMgc3BlY2lmaWVkIGJ5IHBhcmFt
ZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNv
bXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQyBvciBvdGhlciBz
cGVjaWZpY2F0aW9uLgorICAgICAgICBTdHJpbmcgY29kZWNzID0gY29udGVudFR5cGUtPnBhcmFt
ZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7CisgICAgICAgIGlmIChjb250ZW50VHlwZS0+cGFy
YW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgpID8gMCA6IDEpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgLy8gMy4xMC4gSWYgbWVkaWEgdHlwZXMgaXMgZW1wdHk6Cisg
ICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyDihrMgSWYgY29u
dGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVjaWZpYyBzZXQgb2YgY29kZWNzIGFuZCBj
b2RlYyBjb25zdHJhaW50czoKKyAgICAgICAgICAgIC8vIOKGsyBPdGhlcndpc2U6CisgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4xMS4gSWYg
Y29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1ZGlvL3ZpZGVvIHR5cGUsIGNvbnRpbnVl
IHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKyAgICAgICAgLy8gMy4xMi4gSWYgcm9idXN0bmVzcyBp
cyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFpbnMgYW4gdW5yZWNvZ25pemVkIHZhbHVl
IG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQorICAgICAgICAvLyAgICAgICBpbXBsZW1lbnRh
dGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBTdHJpbmcgY29tcGFyaXNvbiBp
cyBjYXNlLXNlbnNpdGl2ZS4KKyAgICAgICAgaWYgKCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAh
c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkuY29udGFpbnMocm9idXN0bmVzcykpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNlciBhZ2VudCBhbmQgaW1w
bGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9mIGVuY3J5cHRlZCBtZWRp
YSBkYXRhIGZvciB0aGUKKyAgICAgICAgLy8gICAgICAgY29tYmluYXRpb24gb2YgY29udGFpbmVy
LCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9jYWwgYWNjdW11bGF0ZWQgY29uZmlndXJh
dGlvbiBpbiBjb21iaW5hdGlvbgorICAgICAgICAvLyAgICAgICB3aXRoIHJlc3RyaWN0aW9uczoK
KyAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAg
ICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShjb250ZW50VHlwZS0+bWltZVR5cGUoKSk7
CisgICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7CisKKyAgICAgICAgICAg
IC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRp
YVNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlw
ZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRl
ZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24sIHJlc3RyaWN0aW9ucykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyAzLjEzLjEuIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byBzdXBwb3J0ZWQgbWVk
aWEgY2FwYWJpbGl0aWVzLgorICAgICAgICBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcy5hcHBl
bmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisKKyAgICAgICAgLy8gMy4xMy4yLiDihrMgSWYgYXVk
aW8vdmlkZW8gdHlwZSBpcyBWaWRlbzoKKyAgICAgICAgLy8gICAgICAgICBBZGQgcmVxdWVzdGVk
IG1lZGlhIGNhcGFiaWxpdHkgdG8gdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBsb2Nh
bCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLgorICAgICAgICBpZiAodHlwZSA9PSBBdWRpb1Zp
ZGVvVHlwZTo6VmlkZW8pCisgICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlk
ZW9DYXBhYmlsaXRpZXMuYXBwZW5kKHJlcXVlc3RlZENhcGFiaWxpdHkpOworICAgICAgICAvLyAz
LjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlzIEF1ZGlvOgorICAgICAgICAvLyAgICAg
ICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byB0aGUgYXVkaW9DYXBhYmlsaXRp
ZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGll
cy5hcHBlbmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisgICAgfQorCisgICAgLy8gNC4gSWYgc3Vw
cG9ydGVkIG1lZGlhIGNhcGFiaWxpdGllcyBpcyBlbXB0eSwgcmV0dXJuIG51bGwuCisgICAgaWYg
KHN1cHBvcnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIC8vIDUuIFJldHVybiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0
aWVzLgorICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllczsKK30KKwordm9pZCBD
RE1Qcml2YXRlOjpnZXRDb25zZW50U3RhdHVzKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJlc3RyaWN0aW9ucywg
TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0
LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25zZW50CisgICAgLy8gVzNDIEVkaXRvcidz
IERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKworICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBD
b25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQuCisgICAgLy8gMjEuIElmIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMgInJlcXVpcmVk
IiBhbmQgdGhlIERpc3RpbmN0aXZlIElkZW50aWZpZXIocykgYXNzb2NpYXRlZAorICAgIC8vICAg
ICB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYXJlIG5vdCB1bmlxdWUgcGVyIG9yaWdp
biBhbmQgcHJvZmlsZSBhbmQgY2xlYXJhYmxlOgorICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAm
JiAhZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKSB7CisgICAgICAgIC8vIDIxLjEuIFVwZGF0ZSByZXN0
cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBkZXNjcmliZWQgYnkg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3QgaGF2ZSB1c2VyIGNvbnNlbnQuCisgICAg
ICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVlOworICAg
ICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhLyNnZXQtY29uc2VudC1zdGF0dXMKKyAgICAvLyAzLjEuMS40IEdldCBDb25zZW50IFN0YXR1
cworICAgIC8vIEdpdmVuIGFuIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9u
cyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIHRoZSBjb25zZW50IHN0YXR1cyBm
b3IgYWNjdW11bGF0ZWQKKyAgICAvLyBjb25maWd1cmF0aW9uIGFuZCBvcmlnaW4gYXMgb25lIG9m
IENvbnNlbnREZW5pZWQsIEluZm9ybVVzZXIgb3IgQWxsb3dlZCwgdG9nZXRoZXIgd2l0aCBhbiB1
cGRhdGVkIHZhbHVlIGZvciByZXN0cmljdGlvbnMKKyAgICAvLyBpbiB0aGUgQ29uc2VudERlbmll
ZCBjYXNlLgorCisgICAgLy8gMS4gSWYgdGhlcmUgaXMgcGVyc2lzdGVkIGRlbmlhbCBmb3Igb3Jp
Z2luIGluZGljYXRpbmcgdGhhdCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCBhbGxv
d2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLjEuIFVwZGF0ZSByZXN0cmlj
dGlvbnMgdG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHdoaWNoIGNvbnNlbnQgaGFz
IGJlZW4gZGVuaWVkLgorICAgIC8vIDEuMi4gUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3Ry
aWN0aW9ucy4KKyAgICAvLyAyLiBJZiB0aGVyZSBpcyBwZXJzaXN0ZWQgY29uc2VudCBmb3Igb3Jp
Z2luIGluZGljYXRpbmcgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBhbGxvd2VkLCByZXR1
cm4gQWxsb3dlZC4KKyAgICAvLyBOT1RFOiBwZXJzaXN0ZWQgZGVuaWFsIC8gY29uc2VudCB1bmlt
cGxlbWVudGVkLgorCisgICAgLy8gMy4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6
CisgICAgLy8gICAg4oazIFRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIgYW5kIHRoZSBjb21iaW5h
dGlvbiBvZiB0aGUgVXNlciBBZ2VudCwKKyAgICAvLyAgICAgICBpbXBsZW1lbnRhdGlvbiBhbmQg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBmb2xsb3cgYWxsIHRoZSByZWNvbW1l
bmRhdGlvbnMgb2YgQWxsb3cgUGVyc2lzdGVudCBEYXRhIHRvIEJlIENsZWFyZWQKKyAgICAvLyAg
ICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKS4KKyAgICAvLyBO
T1RFOiBhc3N1bWUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgZm9sbG93IGFsbCByZWNvbW1lbmRhdGlv
bnMuCisKKyAgICAvLyAgICDihrMgVGhlIHVzZXIgYWdlbnQgcmVxdWlyZXMgZXhwbGljaXQgdXNl
ciBjb25zZW50IGZvciB0aGUgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBmb3Igb3RoZXIgcmVh
c29ucy4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWly
ZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCisKKyAgICAvLyAzLjEuIFJlcXVlc3QgdXNlciBjb25z
ZW50IHRvIHVzZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGluIHRoZSBvcmlnaW4gYW5kIHdh
aXQgZm9yIHRoZSB1c2VyIHJlc3BvbnNlLgorICAgIC8vICAgICAgVGhlIGNvbnNlbnQgbXVzdCBp
bmNsdWRlIGNvbnNlbnQgdG8gdXNlIGEgRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBhbmQvb3Ig
RGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykgYXMgYXBwcm9wcmlhdGUKKyAgICAv
LyAgICAgIGlmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXIgbWVtYmVyIGlzICJyZXF1aXJlZCIuCisgICAgLy8gMy4yLiBJZiBjb25zZW50IHdhcyBkZW5p
ZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDMuMi4xLiBVcGRhdGUgcmVzdHJp
Y3Rpb25zIHRvIHJlZmxlY3QgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB3aGljaCBjb25zZW50IHdh
cyBkZW5pZWQuCisgICAgLy8gMy4yLjEuIFJldHVybiBDb25zZW50RGVuaWVkIGFuZCByZXN0cmlj
dGlvbnMuCisgICAgLy8gTk9URTogYXNzdW1lIGltcGxpZWQgY29uc2VudCBpZiB0aGUgY29tYmlu
YXRpb24gb2Ygb3JpZ2luIGFuZCB0b3BPcmlnaW4gYWxsb3dzIGl0LgorICAgIGlmIChhY2N1bXVs
YXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50
OjpSZXF1aXJlZCAmJiBhY2Nlc3MgPT0gTG9jYWxTdG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkKSB7
CisgICAgICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVl
OworICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3Zl
KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0LiBJZiB0aGUgZGlzdGluY3RpdmVJZGVudGlm
aWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCAibm90LWFsbG93
ZWQiLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmRpc3RpbmN0aXZlSWRlbnRpZmllciAhPSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkgewor
ICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpJbmZvcm1Vc2VyLCBXVEZNb3ZlKGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyA1LiBJZiB0aGUgdXNlciBhZ2VudCByZXF1aXJlcyBpbmZv
cm1pbmcgdGhlIHVzZXIgZm9yIHRoZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGZvciBvdGhl
ciByZWFzb25zLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVz
ZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBpbmZvcm1pbmcgdGhlIHVzZXIuCisKKyAgICAvLyA2
LiBSZXR1cm4gQWxsb3dlZC4KKyAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpBbGxvd2VkLCBX
VEZNb3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7
Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCAyNWY3ODE2YTJmZTFkYTZmOTBjMmZlZjc3
NzU1MTQwNmFhMGY0YTAzLi5mOGQyYzEzOWIwN2EzM2M3YmIzZDMyMzhjNjE4ZTE3ZmI4ZjQzYTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCkBAIC0zMSwyMSArMzEsMzEgQEAKICNpbmNsdWRlICJDRE1SZXF1aXJlbWVudC5o
IgogI2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eTsK
IHN0cnVjdCBDRE1SZXN0cmljdGlvbnM7CiAKLWNsYXNzIENETVByaXZhdGUgeworY2xhc3MgQ0RN
UHJpdmF0ZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1Qcml2YXRlPiB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5DRE1Qcml2YXRlKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0ID0gMDsKKyAgICBlbnVtIGNsYXNzIExvY2Fs
U3RvcmFnZUFjY2VzcyA6IGJvb2wgeworICAgICAgICBOb3RBbGxvd2VkLAorICAgICAgICBBbGxv
d2VkLAorICAgIH07CisKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4p
PjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbihDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwg
TG9jYWxTdG9yYWdlQWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CisK
KyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lv
blR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVz
dG5lc3NlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENETVJlcXVpcmVtZW50IGRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ0RNUmVx
dWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFy
YWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwpAQCAtNTYs
NiArNjYsMzQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VC
Q09SRV9FWFBPUlQgQ0RNUHJpdmF0ZSgpOworICAgIHN0YXRpYyBib29sIGlzUGVyc2lzdGVudFR5
cGUoQ0RNU2Vzc2lvblR5cGUpOworCisgICAgZW51bSBjbGFzcyBDb25maWd1cmF0aW9uU3RhdHVz
IHsKKyAgICAgICAgU3VwcG9ydGVkLAorICAgICAgICBOb3RTdXBwb3J0ZWQsCisgICAgICAgIENv
bnNlbnREZW5pZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQ29uc2VudFN0YXR1cyB7Cisg
ICAgICAgIENvbnNlbnREZW5pZWQsCisgICAgICAgIEluZm9ybVVzZXIsCisgICAgICAgIEFsbG93
ZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQXVkaW9WaWRlb1R5cGUgeworICAgICAgICBB
dWRpbywKKyAgICAgICAgVmlkZW8sCisgICAgfTsKKworICAgIHZvaWQgZG9TdXBwb3J0ZWRDb25m
aWd1cmF0aW9uU3RlcChDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmln
dXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiYsIExvY2FsU3RvcmFnZUFjY2VzcywgU3VwcG9ydGVk
Q29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOworICAgIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24+IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiwgTG9j
YWxTdG9yYWdlQWNjZXNzKTsKKyAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5
Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5
cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRp
ZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9u
LCBDRE1SZXN0cmljdGlvbnMmKTsKKworICAgIHVzaW5nIENvbnNlbnRTdGF0dXNDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChDb25zZW50U3RhdHVzLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiYsIENETVJlc3RyaWN0aW9ucyYmKT47CisgICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJl
c3RyaWN0aW9ucyYmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIENvbnNlbnRTdGF0dXNDYWxsYmFjayYm
KTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVJlcXVpcmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCmluZGV4IDY5YWMxMmQzMTZiZjY2NTdiYjBhMjRkYWY3
YWU0ZmEwZmQ0ZjFjOTguLjViMGI3NzgwZDI3ZGZlYjE5M2RjZTZlY2RhNzE3ODUyOGY3Y2Q1OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJl
cXVpcmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUmVxdWlyZW1lbnQuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgeworZW51bSBjbGFzcyBDRE1SZXF1aXJl
bWVudCA6IHVpbnQ4X3QgewogICAgIFJlcXVpcmVkLAogICAgIE9wdGlvbmFsLAogICAgIE5vdEFs
bG93ZWQKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgewogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQsCisgICAg
ICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpSZXF1aXJlZCwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsLAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVu
dDo6Tm90QWxsb3dlZAorICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAppbmRleCBjNTJlMjgyYTEyZTkxYTQ4ODEwYmQxOGI4
N2ViNmFkNjM4ZjIxMGE4Li45Y2EyYWM1OWU4YjEzNTQ2M2E1MmRiNDVlODA3MzFmNTBjNjk0ZjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1S
ZXN0cmljdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1SZXN0cmljdGlvbnMuaApAQCAtMzYsNiArMzYsMzkgQEAgc3RydWN0IENETVJlc3RyaWN0
aW9ucyB7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlRGVuaWVkIHsgZmFsc2UgfTsKICAgICBIYXNoU2V0PENE
TVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJE
ZW5pZWQ7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlRGVuaWVkOworICAgICAg
ICBlbmNvZGVyIDw8IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNUmVzdHJpY3Rpb25zPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3Rp
bmN0aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJEZW5pZWQ7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVk
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxi
b29sPiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVu
dFN0YXRlRGVuaWVkOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZURlbmllZCkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8SGFzaFNldDxD
RE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRIYXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdF
bnVtSGFzaFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAg
ICAgIGRlY29kZXIgPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworICAgICAgICBpZiAoIWRlbmllZFNl
c3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
cmV0dXJuIHt7CisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkLAorICAg
ICAgICAgICAgKnBlcnNpc3RlbnRTdGF0ZURlbmllZCwKKyAgICAgICAgICAgIFdURk1vdmUoKmRl
bmllZFNlc3Npb25UeXBlcyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVNlc3Npb25UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oCmluZGV4IDYwNTc0YTVhNjkzYTk2YzQ5ZjQ5ZmI3MzQ5
NmVkNzViN2UxZTZmYmIuLmUwN2MzMDAyNzkzMDVmNzc0M2YyMmZjZjU0MDZmMmNmYTY4MWRlMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNl
c3Npb25UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNU2Vzc2lvblR5cGUuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgeworZW51bSBjbGFzcyBDRE1TZXNzaW9u
VHlwZSA6IHVpbnQ4X3QgewogICAgIFRlbXBvcmFyeSwKICAgICBQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQsCiAgICAgUGVyc2lzdGVudExpY2Vuc2UKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3Mg
Q0RNU2Vzc2lvblR5cGUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNU2Vzc2lvblR5cGUsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpUZW1wb3Jh
cnksCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZQor
ICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDQ1MTExZGM3NWI1NTA4MGNlZjRlNWZiMzhh
ZTI2MzNiMzllYTcyMzMuLmRhYTNjZWMyNTMwNjcxNDBhMmZlM2I1MjIyOTQ1MGQwODg5MjNmYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ0RNUmVzdHJpY3Rp
b25zLmgiCiAjaW5jbHVkZSAiQ0RNU2Vzc2lvblR5cGUuaCIKKyNpbmNsdWRlICJJbml0RGF0YVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI5MCwxMCArMjkxLDEzIEBAIGJvb2wgQ0RNRmFj
dG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkK
IENETVByaXZhdGVDbGVhcktleTo6Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogQ0RN
UHJpdmF0ZUNsZWFyS2V5Ojp+Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1ib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7Ci0gICAgLy8gYGtleWlkc2Ag
YW5kICdjZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgotICAgIHJl
dHVybiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRz
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgIndlYm0iKSk7
CisgICAgcmV0dXJuIHsKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6a2V5aWRzTmFtZSgpLAor
ICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpLAorICAgICAgICBJbml0RGF0YVJl
Z2lzdHJ5Ojp3ZWJtTmFtZSgpLAorICAgIH07CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zUGVy
c2lzdGVudExpY2Vuc2VUeXBlKGNvbnN0IFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4mIHR5cGVzKQpA
QCAtMzM3LDcgKzM0MSw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0NvbmZp
Z3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAorYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1T
ZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgLy8gT25seSBzdXBwb3J0IHRoZSAndGVtcG9y
YXJ5JyBhbmQgJ3BlcnNpc3RlbnQtbGljZW5zZScgc2Vzc2lvbiB0eXBlcy4KICAgICBpZiAoc2Vz
c2lvblR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSAmJiBzZXNzaW9uVHlwZSAhPSBD
RE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2UpCkBAIC0zNDUsMTAgKzM0OSwxMCBAQCBi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKENETVNlc3Npb25UeXBlJiBzZQogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Jv
YnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJp
bmc+IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsK
ICAgICAvLyBPbmx5IGVtcHR5IGByb2J1c3RuZXNzYCBzdHJpbmcgaXMgc3VwcG9ydGVkLgotICAg
IHJldHVybiByb2J1c3RuZXNzLmlzRW1wdHkoKTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSB9
OwogfQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlQ2xlYXJLZXk6OmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0CkBAIC00MzIsMzQgKzQzNiwy
MCBAQCBPcHRpb25hbDxTdHJpbmc+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVTZXNzaW9u
SWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCiAKIENETUluc3RhbmNlQ2xlYXJLZXk6On5DRE1J
bnN0YW5jZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1DRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgZGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxs
b3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICAvLyBOby1vcC4KLSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQotCi1DRE1J
bnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldERpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGlu
ZyBkaXN0aW5jdGl2ZSBpZGVudGlmaWVycyBhcyBhbGxvd2VkLgotICAgIHJldHVybiAhYWxsb3dl
ZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKLX0KLQotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBD
RE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dl
ZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGluZyBwZXJzaXN0ZW50IHN0YXRlIGFzIGFsbG93ZWQu
Ci0gICAgcmV0dXJuICFhbGxvd2VkID8gU3VjY2VlZGVkIDogRmFpbGVkOworICAgIFN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0
aXZlSWRlbnRpZmllcnM6Ok5vICYmIHBlcnNpc3RlbnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3RlbnRT
dGF0ZTo6Tm8pID8gU3VjY2VlZGVkIDogRmFpbGVkOworICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7
CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ0RNSW5zdGFuY2VD
bGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZl
ciBjZXJ0aWZpY2F0ZS4KLSAgICByZXR1cm4gRmFpbGVkOworICAgIGNhbGxiYWNrKEZhaWxlZCk7
CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCit2b2lkIENE
TUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikKIHsK
LSAgICAvLyBSZWplY3QgYW55IHBlcnNpc3RlbnQgc3RhdGUgc3RvcmFnZS4KLSAgICByZXR1cm4g
c3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7CiB9CiAKIGNv
bnN0IFN0cmluZyYgQ0RNSW5zdGFuY2VDbGVhcktleTo6a2V5U3lzdGVtKCkgY29uc3QKQEAgLTQ5
OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRo
ZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBj
aGVja3MgYXJlIGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDY3MDRhZTdh
OTU3ZjMyZmUxZjg0OTgzZWQzYjNmNjUwMmE1MzE1YTIuLjY2OTdhMDQ1NWJlZjI5MTU1YmY1OTAz
ODRmNTJmMDQyOTFhZGMwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNzQsMTEg
Kzc0LDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUo
Y29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOwogICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJl
c3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3QgZmluYWw7CkBAIC05NywxMSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICAv
LyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkNsZWFyS2V5OyB9Ci0g
ICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQ
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKLSAgICBTdWNjZXNz
VmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIH07CkBAIC0xMTEsNyArMTA5LDcgQEAgcHVibGlj
OgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBh
cmVudCkKICAgICAgICAgOiBtX3BhcmVudEluc3RhbmNlKHBhcmVudCkgeyB9CiAgICAgdm9pZCBy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCmluZGV4IDU3ZGZjYmY0YmM3YzQ4ODQ0ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIu
LmRiMGIyZjhhN2UwZjI2OTZhMWQ4ZGI2ZjRkNGY0N2FhZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2
NTcsMTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShD
RE1JbnN0YW5jZSYgaW5zdGFuY2UpCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVy
OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1f
c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCA9IHNob3VsZDsKKyAgICBtX3ByaXZhdGUtPnNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRpZgorCiBNZWRp
YVRpbWUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2
YXRlLT5kdXJhdGlvbk1lZGlhVGltZSgpOwpAQCAtMTMxMiw5ICsxMzIwLDkgQEAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBNZWRpYVBsYXllcjo6Y2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBr
ZXlJZCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChrZXlJZCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5
KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSkKIHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERh
dGEpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKIH0KIAog
U3RyaW5nIE1lZGlhUGxheWVyOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdl
NmNiOGEzOTBkZjdmZTFhN2FhZTAxNzM5ZGM5NDhmNzc2NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBj
NTY5ZTY3YTQxZTEyMGI3NjQwZWZhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5
QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoVWludDhBcnJheSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0
cmluZygpOyB9CiAjZW5kaWYKIApAQCAtMzY2LDYgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJik7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyAg
ICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQ7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBwYXVzZWQo
KSBjb25zdDsKICAgICBib29sIHNlZWtpbmcoKSBjb25zdDsKIApAQCAtNTE5LDcgKzUyNCw3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29u
c3Q7Ci0gICAgYm9vbCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQg
a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4gbV9tZWRpYVN0cmVhbTsKICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggOWY3ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0
YjBkY2ExY2MxNzVhOC4uN2E4MjA0NzBmOTk5YWM5OWE2YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKQEAgLTI0Myw2ICsyNDMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkg
eyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAppbmRleCA0ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJh
YmZjZGU1YTBkNGI4MTE4ZDAzY2M5MmYxZDYxOWQ2MWQ3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI0Nyw5ICsyNDcsOSBAQCBib29sIENETUZh
Y3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZygpID0gZGVmYXVsdDsKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewotICAgIHJldHVy
biB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOworICAgIHJldHVy
biBjb3B5VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5cGVzKCkpOwogfQogCiBib29sIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0zMDUsNyArMzA1LDcg
QEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzQ29uZmlndXJhdGlv
bldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0QKICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBz
ZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBl
LCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAog
ewogICAgIGlmIChzZXNzaW9uVHlwZSA9PSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAg
ICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVu
dDo6UmVxdWlyZWQpCkBAIC0zMTYsMTMgKzMxNiwxMCBAQCBib29sIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Np
bwogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAK
LWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29u
c3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAg
ICBpZiAocm9idXN0bmVzcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAg
Ly8gRklYTUU6IERldGVybWluZSBhbiBlbnVtZXJhdGVkIGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1
ZXMgc3VwcG9ydGVkIGJ5IEZQUy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHsgZW1w
dHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyAr
MzYzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdAogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0
RGF0YVR5cGUpKQorICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERh
dGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9
PSBzaW5mTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmlu
ZGV4IDUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZkMTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFk
N2FmYmFlMmQyYzU2MTJmODRiNDM0YzBmMTBmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oCkBAIC01NSwxMSArNTUsMTEgQEAgcHVibGljOgogICAgIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZygpOwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3Ry
aW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZElu
aXREYXRhVHlwZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1T
ZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBj
b25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVz
c2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBw
ZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IDcwZWFjMzZhNDc5NzgxNWExYWYyNGUyZDU3YjAyMjZmYjQ5NzljNDYuLjVkOWE5YTBh
ZjU3NTNhMTBiMmRkMTdjMWU5NWI3OTQyYTE0MTgyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAt
MTkzMSw5ICsxOTMxLDcgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKIAogICAgICAgICB1bnNp
Z25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAgICAg
YXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVy
KSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPmtleU5l
ZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAg
ICAgbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CiAgICAgICAg
IHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJLCBhdlJlcXVlc3QpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCBiMTFmNzFhOWI1ZTM4YmY2OThi
MTM5NDlkZGRlODZmM2RkOTk0Y2MxLi4wMGI2ZmI4MjIwY2E3ZjA1YzA5MWYyNjUzODZlMjk5MmY0
MGU2M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTc0LDExICs3NCw5IEBAIHB1Ymxp
YzoKIAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAK
LSAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNl
dFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwotICAgIFN1Y2Nl
c3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZv
aWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRl
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxD
RE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIAogICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CkBAIC0xMjAsNyArMTE4LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3MzI2Nzc1ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0
NjQ3Y2I4ZDMxLi4yYThiYjM4YzcwMzMwN2E3MmE3MTM1MTNmYTZiMjM4NDE0M2FhMWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjY4LDcyICsyNjgsNjMgQEAgYm9vbCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNNZWRpYUNhcGFiaWxpdHkoY29u
c3QgQ0RNTWVkaWEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NW
YWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSBwZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8v
IEZJWE1FOiB2ZXJpZnkgdGhhdCBGYWlyUGxheVN0cmVhbWluZyBkb2VzIG5vdCAoYW5kIGNhbm5v
dCkgZXhwb3NlIGEgZGlzdGluY3RpdmUgaWRlbnRpZmllciB0byB0aGUgY2xpZW50Ci0gICAgaWYg
KGNvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpS
ZXF1aXJlZCkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKLQotICAgIGlmIChjb25maWd1cmF0aW9u
LnBlcnNpc3RlbnRTdGF0ZSAhPSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQgJiYgKGNvbmZpZ3Vy
YXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNh
Z2VSZWNvcmQpIHx8IGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Np
b25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkpKQotICAgICAgICByZXR1cm4gRmFpbGVkOwotCi0g
ICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpS
ZXF1aXJlZCAmJiAhbV9zdG9yYWdlVVJMKQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgIGF1
dG8gaW5pdGlhbGl6ZSA9IFsmXSAoKSB7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLmRpc3Rp
bmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAgICAg
ICByZXR1cm4gRmFpbGVkOwogCi0gICAgaWYgKGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNv
bnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkgJiYgIXN1cHBvcnRzUGVy
c2lzdGVudEtleXMoKSkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKKyAgICAgICAgaWYgKGNvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlICE9IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAo
Y29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNp
c3RlbnRVc2FnZVJlY29yZCkgfHwgY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMo
Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKSkpCisgICAgICAgICAgICByZXR1cm4g
RmFpbGVkOwogCi0gICAgaWYgKCFQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWQ29udGVudEtl
eVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCkpCi0gICAgICAgIHJldHVybiBGYWlsZWQ7CisgICAg
ICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6
UmVxdWlyZWQgJiYgIW1fc3RvcmFnZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7CiAK
LSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQorICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5zZXNz
aW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKSAmJiAh
c3VwcG9ydHNQZXJzaXN0ZW50S2V5cygpKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAot
Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkKLXsKLSAgICAvLyBG
SVhNRTogdmVyaWZ5IHRoYXQgRmFpclBsYXlTdHJlYW1pbmcgZG9lcyBub3QgKGFuZCBjYW5ub3Qp
IGV4cG9zZSBhIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgdG8gdGhlIGNsaWVudAotICAgIHJldHVy
biBTdWNjZWVkZWQ7Ci19CisgICAgICAgIGlmICghUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9B
VkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpKQorICAgICAgICAgICAgcmV0dXJu
IEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sIHBlcnNpc3Rl
bnRTdGF0ZUFsbG93ZWQpCi17Ci0gICAgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVyc2lz
dGVudFN0YXRlQWxsb3dlZDsKLSAgICByZXR1cm4gU3VjY2VlZGVkOworICAgICAgICBtX3BlcnNp
c3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3RhdGUgPT0gQWxsb3dQZXJzaXN0ZW50U3Rh
dGU6OlllczsKKyAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICB9OworICAgIGNhbGxiYWNr
KGluaXRpYWxpemUoKSk7CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUpCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBt
X3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0
dXJuIFN1Y2NlZWRlZDsKKyAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi1DRE1JbnN0YW5j
ZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRT
dG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSkKK3ZvaWQgQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KQogewogICAgIGlmIChzdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkgewogICAgICAgICBtX3N0b3JhZ2VVUkwgPSBuaWw7Ci0gICAgICAgIHJldHVy
biBTdWNjZWVkZWQ7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHN0b3JhZ2VQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rv
cnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVk
OworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJ
c0RpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5LCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1i
b2xpY0xpbmtzOjpZZXMpKSB7CiAgICAgICAgIGF1dG8gdGVtcERpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIk1lZGlhS2V5cyIpOwogICAgICAgICBpZiAo
IXRlbXBEaXJlY3RvcnkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGF1dG8gdGVtcFN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBEaXJlY3RvcnksIEZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShzdG9yYWdlUGF0aCkpOwogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1vdmVGaWxl
KHN0b3JhZ2VEaXJlY3RvcnksIHRlbXBTdG9yYWdlUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4g
RmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
bW92ZUZpbGUodGVtcERpcmVjdG9yeSwgc3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICBy
ZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fc3RvcmFn
ZVVSTCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpzdG9yYWdl
UGF0aCBpc0RpcmVjdG9yeTpOT10pOwotICAgIHJldHVybiBTdWNjZWVkZWQ7CiB9CiAKIFJlZlB0
cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpjcmVhdGVTZXNzaW9uKCkKQEAgLTU4MCw3ICs1NzEsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFs
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1
cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VE
YXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9u
cy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7
CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CkBAIC03MTEsNyArNzAyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBbbV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJl
cXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsK
IAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxi
YWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNj
ZXNzIGNhbGxiYWNrLgogICAgIHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiBtZXRob2Qg
PSBwcm90b2NvbF9nZXRNZXRob2REZXNjcmlwdGlvbihAcHJvdG9jb2woQVZDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNzaW9uOmNvbnRlbnRLZXlSZXF1
ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVTKTsKQEAgLTExNDAsNyArMTEzMSw4IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmll
ckNoYW5nZWQoTlNEYXRhCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2Vzc2lvbklkID0gc2Vz
c2lvbklkOwotICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vz
c2lvbklkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKEFWQ29udGVudEtleVJlcG9ydEdy
b3VwKiBncm91cCwgTlNEYXRhICpzZXNzaW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IGYyYTg2Y2FiZjY4Yzg4NjgxY2MyZGZkMWVlYmY1YmJjOWQ0ZGZhYmIuLjZkZmMw
MTMzN2ZmODQ5YTc3NDJjMTFhMDAxYjYxNzkxOTFjY2NjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMTY3OCw4ICsxNjc4LDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAg
ICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7
CiAKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGlu
aXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghcGxheWVyKCktPmtl
eU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikK
QEAgLTE3MTMsNyArMTcxNiw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXRE
YXRhLnB0cigpKTsKKworICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVy
S2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9rZXlV
UklUb1JlcXVlc3RNYXAuc2V0KGtleUlELCBhdlJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCBjZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2
ZDcxYjM2OTY2MzJkLi44OTE5NjRiYWQ1NTA0OTNkY2Q3YjgxOGY3MDBhZWViZjdjYmYyYzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtOTgsNiArOTgs
MTEgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxT
dHJpbmc+JiYgdHlwZXMpCiAgICAgICAgIG1fc3VwcG9ydGVkRGF0YVR5cGVzLmFwcGVuZCh0eXBl
KTsKIH0KIAordm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3NlcykKK3sKKyAgICBtX3N1cHBvcnRlZFJvYnVzdG5lc3Mg
PSByb2J1c3RuZXNzZXMubWFwKFtdIChhdXRvJiByb2J1c3RuZXNzKSAtPiBBdG9tU3RyaW5nIHsg
cmV0dXJuIHJvYnVzdG5lc3M7IH0pOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
TW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBt
YWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CkBAIC0xMDgsMTEgKzExMywx
OCBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCiB7
CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06OnN1cHBv
cnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpOworICAgIHJldHVybiB7IH07
Cit9CisKK1ZlY3RvcjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMo
KSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCi0gICAgICAgIHJldHVybiBtX2ZhY3Rvcnkt
PnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCk7
CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25z
dApAQCAtMTM5LDcgKzE1MSw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9u
V2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5
cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkuY29udGFp
bnMoc2Vzc2lvblR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDgsMTMgKzE2MCw2
IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1l
ZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
TW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29u
c3QKLXsKLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBw
b3J0ZWRSb2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0bmVzcyk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
TWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QKIHsKICAgICBpZiAobV9mYWN0b3J5KQpAQCAt
MTk5LDcgKzIwNCw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAK
IGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFz
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghc3VwcG9ydGVkSW5p
dERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YSk7CkBAIC0yMzEsNTUgKzIzNiw0OCBAQCBN
b2NrQ0RNSW5zdGFuY2U6Ok1vY2tDRE1JbnN0YW5jZShXZWFrUHRyPE1vY2tDRE0+IGNkbSkKIHsK
IH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93
UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7Ci0gICAgaWYgKCFtX2NkbSB8fCAhbV9jZG0tPnN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKKyAgICBhdXRvIGluaXRpYWxp
emUgPSBbJl0geworICAgICAgICBpZiAoIW1fY2RtIHx8ICFtX2NkbS0+c3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbmZpZ3VyYXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAg
IHJldHVybiBTdWNjZWVkZWQ7Ci19CisgICAgICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKCFmYWN0b3J5
KQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1
ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi17Ci0gICAgaWYgKG1fZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FsbG93ZWQgPT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi0gICAg
ICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FsbG93ZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnM6Olllcyk7CiAKLSAgICBhdXRvKiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFj
dG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fs
bG93ZWQgIT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpIHsKKyAgICAgICAgICAgIGlm
ICghZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgJiYgZmFjdG9yeS0+ZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc1JlcXVpcmVtZW50KCkgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVk
KQorICAgICAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7CiAKLSAgICBpZiAoIWZhY3RvcnkgfHwg
KCFkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCAmJiBmYWN0b3J5LT5kaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQp
KQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9kaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQWxsb3dlZCA9IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkOworICAgICAgICB9
CiAKLSAgICBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkID0gZGlzdGluY3RpdmVJZGVu
dGlmaWVyc0FsbG93ZWQ7Ci0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKLX0KKyAgICAgICAgYm9vbCBw
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gKHBlcnNpc3RlbnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3Rl
bnRTdGF0ZTo6WWVzKTsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFu
Y2U6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
KQotewotICAgIGlmIChtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPT0gcGVyc2lzdGVudFN0YXRl
QWxsb3dlZCkKLSAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICAgICAgaWYgKG1fcGVyc2lz
dGVudFN0YXRlQWxsb3dlZCAhPSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKSB7CisgICAgICAgICAg
ICBpZiAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKLQotICAgIGlmICghZmFjdG9yeSB8
fCAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpKQotICAgICAgICBy
ZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVy
c2lzdGVudFN0YXRlQWxsb3dlZDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gU3VjY2VlZGVk
OworICAgIH07CiAKLSAgICBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkOwotICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgY2FsbGJhY2soaW5pdGlhbGl6
ZSgpKTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUpCit2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgU3RyaW5n
VmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNh
dGUtPnNpemUoKSk7CiAKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpKQotICAgICAgICByZXR1cm4gU3VjY2VlZGVkOwotICAgIHJl
dHVybiBGYWlsZWQ7CisgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KIAotQ0RN
SW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJikKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgLy8gT24gZGlzayBzdG9yYWdlIGlzIHVudXNlZDsg
bm8tb3AuCi0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKIH0KIAogY29uc3QgU3RyaW5nJiBNb2NrQ0RN
SW5zdGFuY2U6OmtleVN5c3RlbSgpIGNvbnN0CkBAIC0zMjUsNyArMzIzLDcgQEAgdm9pZCBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNl
LmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1
ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9y
eSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlm
ICghZmFjdG9yeSkgewpAQCAtMzMzLDcgKzMzMSw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUs
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZl
Y3RvciA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAn
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+
ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNl
VmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCmluZGV4IDM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5ZjEuLjM3MGI2
ZTI4MGQ5MWRiYTY3OWFiNDBjNWM2NDY0Y2NiYzM5MDI2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIGNvbnN0
IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkgY29u
c3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7IH0KICAgICB2b2lkIHNldFN1cHBv
cnRlZFNlc3Npb25UeXBlcyhWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mJiB0eXBlcykgeyBt
X3N1cHBvcnRlZFNlc3Npb25UeXBlcyA9IFdURk1vdmUodHlwZXMpOyB9CiAKLSAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vw
cG9ydGVkUm9idXN0bmVzczsgfQotICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3MpIHsgbV9zdXBwb3J0ZWRSb2J1c3RuZXNzID0gV1RGTW92
ZShyb2J1c3RuZXNzKTsgfQorICAgIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgc3VwcG9ydGVk
Um9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsgfQorICAg
IHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmKTsKIAogICAgIE1l
ZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50OyB9CiAgICAg
dm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoTWVkaWFLZXlzUmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQpIHsgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQg
PSByZXF1aXJlbWVudDsgfQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5
c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBNZWRpYUtleXNSZXF1
aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRE
YXRhVHlwZXM7CiAgICAgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+IG1fc3VwcG9ydGVkU2Vz
c2lvblR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkUm9idXN0bmVzczsKKyAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwogICAgIFZlY3RvcjxN
ZWRpYUtleUVuY3J5cHRpb25TY2hlbWU+IG1fc3VwcG9ydGVkRW5jcnlwdGlvblNjaGVtZXM7CiAg
ICAgYm9vbCBtX3JlZ2lzdGVyZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3Rh
bmNlcyB7IHRydWUgfTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKLWNsYXNz
IE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1vY2tD
RE0+IHsKK2NsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0
b3J5Pik7CkBAIC0xMDksMTEgKzEwOSwxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBNb2NrQ0RNSW5zdGFuY2U7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBl
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMo
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJl
bWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmlu
YWw7CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQo
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJl
VW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0IGZpbmFsOwpAQCAtMTM4LDExICsxMzgsOSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQotICAgIFN1Y2Nlc3NWYWx1
ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmll
cnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0U3Rv
cmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTdG9yYWdl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOwogCkBAIC0xNTcsNyArMTU1LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA1ZWZlNjYyNWQ2
ZjJmOTBhZGVkNzdkOGM1NTk3ZGYzYzc4OGYzMWRiLi41YjBmYTE5Y2UyZWIyZTNlODM5MDE0OGUx
NTY2NDg3ZGMwODkzYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC00OTAsMTAgKzQ5MCw5IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJD
YWNoZWRLZXlGb3JLZXlJZChjb25zdCBTCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSop
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE2YmIyZGRmYTIxNDc0NzBlODYwMGFiNzEzOTZh
NTljZGY1NDQ5ZmEuLjRhNzM5ZmI0ZjliNWQ2NzNkNGU5ZjJiNWFmNTM5NTFlM2VlZGQwY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxh
eWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9pZCBtZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKQEAg
LTI1Miw2ICsyNTIsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpMYXlvdXRSZWN0IG1fdmlk
ZW9Db250ZW50Qm94UmVjdDsKICAgICBmbG9hdCBtX3ZpZGVvQ29udGVudFNjYWxlIHsgMS4wIH07
CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICBib29sIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCB7IGZhbHNl
IH07CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbV9sb2dnZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IDM5MTJiNDAxNGExMTAxYjNm
MjE0MDQ3ODIwMWI1M2IxYzczYTE0NDguLjNkNDNhYzg0OGQzZGJiZjkxNGJiMDVkN2RiODEyZTIx
NjI0Nzg5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0
aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00Nyw0
ICs0OCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gV2Vi
TWVkaWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdAogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQordm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZh
Y3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpCit7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKaW5kZXggZTE5YTUz
YWZmYzhhYmU0MzIxZGVlZGFlNTFiODIyM2JhMTJiNzEzYi4uNGZhYjBlOTQ0ZmMxNGU2ODQzNzll
MzAwODE2M2JlMTYyZGQ4OWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKQEAgLTQyLDYgKzQyLDkgQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2smLAogICAgICAgICBjb25z
dCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgb3ZlcnJp
ZGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgcmVnaXN0
ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYpIG92ZXJyaWRlOwor
I2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgYm9vbCBtX3VzZUdQVVByb2Nl
c3MgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDYwZjM0NTE3
OWY0OTE0Yjc3OWEwYTJiN2FhNzVlZjQzZGI2ZTFmM2UuLmI5MDllY2M0MzliY2QzYzZmNmRhODA0
MWM2ZWYyOTNmZjM0NjY5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTMw
LDYgKzMwLDcgQEAKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2ltcG9y
dCA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Jsb2JSZWdp
c3RyeUltcGwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9NZWRpYVN0cmF0ZWd5Lmg+CkBAIC03Myw2ICs3NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKGNhbGxiYWNrLCBpbnB1dERldmljZUlkLCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUp
OwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBy
ZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpIG92ZXJy
aWRlCisgICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1S
ZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOworICAgIH0KKyNlbmRpZgogfTsKIAogTWVkaWFT
dHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0cmF0ZWd5KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391989</attachid>
            <date>2020-02-28 10:34:12 -0800</date>
            <delta_ts>2020-02-28 21:29:10 -0800</delta_ts>
            <desc>Part 2: WebKit + SharedBuffer</desc>
            <filename>bug-208090-20200228103411.patch</filename>
            <type>text/plain</type>
            <size>35437</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFlZTQ5ZTY5MTY1ZjllM2Y0
MmU5ZDA0YzQ3NmJiZjE1NWY1M2JlYmQuLmEwNmNkN2I4OTRhYjczYjZhNmNjZTU2YjY3Njg3ZjYy
MDQ4OTRkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAtMDItMjMgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rl
cm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpcyBt
YWRlIG1vcmUgZWZmaWNpZW50IGJ5IHVzaW5nIHRoZSBzYW1lIGVuY29kZS9kZWNvZGUgcGF0aCBh
cyBpcyB1c2VkIGluCisgICAgICAgIFdlYkNvcmVBcmd1bWVudENvZGVyczogdGhlIFNoYXJlZEJ1
ZmZlciBpcyBjb3BpZWQgaW50byBzaGFyZWQgbWVtb3J5LCBhbmQgb25seSBhIGhhbmRsZSBpcyBw
YXNzZWQgYWNyb3NzCisgICAgICAgIHRoZSBYUEMgYm91bmRhcnkuIFRoaXMgcmVxdWlyZXMgZXhp
c3RpbmcgdXNlcnMgdG8gaGFuZGxlIHJlY2VpdmluZyBhIElQQzo6U2hhcmVkQnVmZmVyRGF0YUhh
bmRsZSBvbiB0aGUKKyAgICAgICAgcmVtb3RlIHNpZGUgb2YgdGhlIFhQQyBib3VuZGFyeSwgYnV0
IHRoaXMgaXMgdHJpdmlhbCwgYW5kIG1hbnkgY2FsbCBzaXRlcyByZXF1aXJlIGEgU2hhcmVkQnVm
ZmVyIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoaXMg
Y29kZSBjb3VsZCBiZSBpbXByb3ZlZCBieSBhbGxvd2luZyB0aGUgU2hhcmVkTWVtb3J5IG9iamVj
dCBiZSBhZG9wdGVkCisgICAgICAgIGJ5IHRoZSBTaGFyZWRCdWZmZXIgb2JqZWN0IGF0IGNyZWF0
aW9uIHRpbWUsIGxlYWRpbmcgdG8gemVyby1jb3B5IGRlY29kaW5nLCBidXQgaXMgbm90IGRvbmUg
aW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVm
ZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2VuZEJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVz
c2FnZXMuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAo
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6YnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OnNpemUgY29uc3QpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjppc0VtcHR5IGNvbnN0KToKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFdlYkFyY2hpdmVPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1Bh
Z2VzVG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAy
MC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BV
UF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGNiYzU1ZGZjMzI4ZTRhNjg4MzUxY2FlODFmMDY2NTFlOTNjMTc4NDMuLjY4NTIwMjMx
OGU4MmI2NjMwMzA4ZTE1MGNmMmQ3N2M2ZWQ2ZjhhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk1MCw3
ICs5NTAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCgpCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7
ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVTaGFyZWRCdWZm
ZXIoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkp
OwogCiAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwpAQCAtOTYwLDcgKzk2MCw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBzaXplX3QgZW5jb2RlZERhdGFMCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwog
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsg
YnVmZmVyIH0sIGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVTaGFyZWRCdWZmZXIoeyBidWZmZXIgfSwgZW5jb2RlZERh
dGFMZW5ndGgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXND
YWNoZUVudHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRl
eCA2NzJiZWM0OGVhNzljNjgyYzEyNDVlNTI2ZjA0ODhjNjc5OTY4MGI3Li41YzJlN2MwMDAwMDFi
NTgzZTk1ZmQ1NDljNjFiMWY5M2MxZTYxODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwCkBAIC0xNTUsNyArMTU1LDE2IEBAIHZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBp
bnQ2CiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3Rp
dmUoKSk7Ci0gICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGggfSk7CisgICAgc2VuZFRvQ2xpZW50
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNv
ZGVkRGF0YUxlbmd0aCB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRS
ZWNlaXZlU2hhcmVkQnVmZmVyKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYg
ZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBpZiAobV9pc0RvbmUpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7
CisgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZVNoYXJlZEJ1ZmZlciB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0pOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5oCmluZGV4IGQzM2NiZmYxMDg5Y2MxMDVkZDFhMDBiZWJmZGY2MWQzM2M3ZjY2YmQuLjk1ZWQ3
NTk2YThiMTFhZDliZGU4YzliMmUyZjA1YWFmNTY3ZjYwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBEZWNvZGVyOwog
Y2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiB9CkBAIC03OSw2ICs4MCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTaGFyZWRCdWZmZXIoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KaW5kZXggMThlNjI5ZjBkMTQ2ZWQyZDQyOWRiMWJh
Mjg3MDFlODNmYjk2ZTYyZi4uNDI3NGFkYzE2NjE4NzQwYWU4ODhmMjExZGY0OTIyMzRjZjM0NDZj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2Fn
ZXMuaW4KQEAgLTI3LDcgKzI3LDggQEAgbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckZldGNoVGFz
ayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IpCiAgICAgRGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSkKICAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSkKLSAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
ZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRS
ZWNlaXZlU2hhcmVkQnVmZmVyKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgRGlkRmluaXNoKCkKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCBhNzQ5YWFiODcwMDU0Y2ViNjkwZTVm
MTRmNDA3NTYzZmZjZDBmOWI4Li44OGY0ZjJmYTY0MjYzMzQ5YjdhZDIyZDA2ZjQzYTI3ZjcyMzM1
MWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC05
NiwxMiArOTYsNiBAQCBzdHJ1Y3QgQ29kaW5nVHlwZSB7CiAgICAgdHlwZWRlZiBzdGQ6OnJlbW92
ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+PiBUeXBlOwogfTsKIAotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBDb2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7
Ci0gICAgdHlwZWRlZiBEYXRhUmVmZXJlbmNlIFR5cGU7Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBUcz4KIHN0cnVjdCBDb2RpbmdUeXBlPHN0ZDo6dHVwbGU8VHMuLi4+PiB7CiAgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPHR5cGVuYW1lIENvZGluZ1R5cGU8VHM+OjpUeXBlLi4uPiBUeXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZS5oCmluZGV4IGRhZDQ2NjA0NjMyZTkyNjlmMTkxZDE1YzgwZGQyMTFlNTQ4NGU3YTMu
LmJmYjMzOTU3Njk2ZjJlNzJhMjM0ODIzNDIyNTJiNzJiZDc5NDI4MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgK
QEAgLTI1LDQwICsyNSw1MSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkVuY29kZXIu
aCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBJ
UEMgewogCiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsKIHB1YmxpYzoKICAgICBT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworICAgIFNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQorICAgIHsKKyAgICB9CisgICAgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
KyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgeworICAgIH0KICAgICBT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQotICAgICAgICA6IG1fZGF0YShidWZmZXIpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9k
YXRhKHN0ZDo6bWFrZV9wYWlyKGRhdGEsIHNpemUpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQorICAgIHsKKyAgICAgICAgbV9idWZmZXIt
PmFwcGVuZChidWZmZXIpOworICAgIH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQor
CisgICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZm
ZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAK
ICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAg
c3dpdGNoT24obV9kYXRhLAotICAgICAgICAgICAgW2VuY29kZXIgPSAmZW5jb2Rlcl0gKGNvbnN0
IFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIG11dGFibGUgewotICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICAg
ICAgICAgICAgICBlbmNvZGVyLT5yZXNlcnZlKGJ1ZmZlclNpemUgKyBzaXplb2YodWludDY0X3Qp
KTsKLSAgICAgICAgICAgICAgICAqZW5jb2RlciA8PCBidWZmZXJTaXplOwotICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpKSwgZWxlbWVudC5zZWdtZW50
LT5zaXplKCksIDEpOwotICAgICAgICAgICAgfSwgW2VuY29kZXIgPSAmZW5jb2Rlcl0gKGNvbnN0
IHN0ZDo6cGFpcjxjb25zdCB1aW50OF90Kiwgc2l6ZV90PiYgcGFpcikgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICAgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IHBhaXIuc2Vjb25kOwotICAgICAgICAg
ICAgICAgIGVuY29kZXItPnJlc2VydmUoYnVmZmVyU2l6ZSArIHNpemVvZih1aW50NjRfdCkpOwot
ICAgICAgICAgICAgICAgICplbmNvZGVyIDw8IGJ1ZmZlclNpemU7Ci0gICAgICAgICAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLCAx
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKKyAgICAgICAgZW5jb2RlciA8PCBtX2J1ZmZl
cjsKKyAgICB9CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gYnVmZmVyOworICAgICAgICBkZWNvZGVyID4+IGJ1
ZmZlcjsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4geyBXVEZNb3ZlKCpidWZmZXIpIH07CiAgICAgfQogCiBwcml2
YXRlOgotICAgIFZhcmlhbnQ8c3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Q+LCBSZWY8
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOGM5ZmEyMWFmMzhhNzE2MmM2YzIw
OWU5Mzk0Njg5MDZhMjVjM2NhMy4uNWFkYjM3ZDhiNWJkZWYwMGE1NjZmNGEwMmRiNjRiYjk1ZGFi
MDAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC0zMjAzLDQgKzMyMDMsMTggQEAgT3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZVZhbHVlPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm8KIH0KICNl
bmRpZgogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVy
LmdldCgpKTsKK30KKworT3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAzZDJlYjk0NTA3
Nzc1ZDc5OGRlNzFkYTA0YjQ0ZWNhMDUyM2VmZmE3Li44OTg2MzU4M2YzYmMxNjY5MDk3NDZkZjYx
ODI2NDdkNjkyNTlhZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaApAQCAtMTAxLDYgKzEwMSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlv
bjsKIGNsYXNzIFN0ZXBzVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHM7CkBAIC04MzAsNiArODMxLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiB7CiB9
OwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIE9wdGlvbmFs
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwog
fSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBmZmJmMGZhMWVl
ODRjYmIxZjI1YzZhY2RjNzJiODM0YzA0ZDAxZWZiLi4yNTgzNzM2NmNmZDU2ODlmMDEwNDllZTM3
MjhmNTY4MWVmZWJiZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiUGFnZUNs
aWVudC5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3Np
bmdXYXJuaW5nLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW1w
b3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2lt
cG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgpAQCAtMTgzLDEzICsxODQsMTIgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldERyYWdDYXJldFJlY3QoY29uc3QgSW50UmVjdCYgZHJhZ0NhcmV0UmVjdCkK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpw
bGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1l
bnQsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVy
QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIGNvbnN0IFN0cmlu
ZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSkKIHsKICAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICBhdXRvIGZp
bGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5j
ZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmF1
dG9yZWxlYXNlKCldKTsKKyAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVu
dCgpLmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpkYXRhUmVmZXJlbmNlLmJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpXSk7
CiAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnByZWZlcnJlZEZpbGVOYW1l
XTsKICAgICBhdHRhY2htZW50LT5zZXRGaWxlV3JhcHBlcihmaWxlV3JhcHBlci5nZXQoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjZTlhMTBjNjY1
ZTAzMmQ0Njk2NjljZDgwNjkwYjQ0NmMzNTczM2JkLi44ODRmNjUxN2ZlYzFhNzhhMTkwMTM0NWM5
MmI1Y2QxNjIwYTVhYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTY5MTcsMTMgKzY5MTcsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFj
ayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UmIGRhdGFSZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAg
IGlmICghY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5k
YXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7CisgICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uu
c2l6ZSgpKS5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpib29sQ2FsbGJhY2soYm9v
bCByZXN1bHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTkwOTIsNyArOTA5Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6Okxp
bmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpm
aW5pc2hlZExvYWRpbmdJY29uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmlzaGVkTG9hZGluZ0ljb24o
Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UmIGRhdGEpCiB7CiAgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQpAQCAt
OTMyMyw3ICs5MzIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50
aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250
ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSks
IGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgTUVTU0FHRV9D
SEVDSyhtX3Byb2Nlc3MsIElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXA6OmlzVmFsaWRLZXkoaWRl
bnRpZmllcikpOwogCkBAIC05NDMwLDcgKzk0MzAsNyBAQCBXZWJQYWdlUHJveHk6OlNob3VsZFVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIFdlYlBhZ2VQcm94eTo6d2lsbFVwZGF0ZUF0dGFjaG1l
bgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1S
ZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJl
Z2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDU3ODg0M2RjMmYyYjI3N2VhNzcwMDcyZWQ1
ZDk0M2RkODBkNjI1YzIuLjQ4NGI5NzU2MzA4ZWJkY2E2NDhhMGFmOTU4NjA5N2U5NjZmM2JiZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xOTQsNiArMTk0LDcg
QEAgZW51bSBjbGFzcyBJbnNwZWN0b3JUYXJnZXRUeXBlIDogdWludDhfdDsKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTUw
OCw3ICsxNTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9u
KCk7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlu
a0ljb24mLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNv
bihXZWJLaXQ6OkNhbGxiYWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQsIGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBzZXRGb2N1cyhib29sIGZvY3Vz
ZWQpOwogICAgIHZvaWQgc2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7
CkBAIC0yMDA5LDcgKzIwMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50
KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKICAgICB2b2lkIHZvaWRDYWxs
YmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGltYWdl
Q2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGJvb2xDYWxsYmFjayhib29sIHJlc3VsdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBz
dHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKQEAgLTIxODcsMTIgKzIx
ODgsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BBbGxVUkxTY2hlbWVUYXNrcyhXZWJQcm9j
ZXNzUHJveHkqID0gbnVsbHB0cik7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQot
ICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllckZyb21GaWxlUGF0aChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YT4mJik7CiAgICAgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJv
bUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKTsKIAotICAgIHZvaWQgcGxh
dGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3Ry
aW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAg
dm9pZCBwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBj
b25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxB
UEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQgcGxh
dGZvcm1DbG9uZUF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBmcm9tQXR0YWNobWVu
dCwgUmVmPEFQSTo6QXR0YWNobWVudD4mJiB0b0F0dGFjaG1lbnQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOWY2NDRmNDYy
ZmJhNjU2MTc2NzllZjIyZGJjZTI4ODI1NjFhOTEwNS4uZWExOThjNTU1MWZhNGM5MmNlNWUxYjNj
MDk2NzJjZTBhZDBiMjFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTMwLDcgKzUzMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgRGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogICAgIEdldExvYWRE
ZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNvcmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKTsKKyAgICBGaW5pc2hl
ZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlkSGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApp
bmRleCA2YjI3NzNlYzk3MzUxOGEwMWUxNDU1NDA1MjcyNWU1NTk0MDZiYzA1Li45NDdhZTAyNjcw
YTIwZjU0Y2M3NDEzN2Q1MGUyZGI1NGY5MWUzMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBlYmQ4NTZmNmIyM2EwMzU0NTQ0NGRhNzM5ZDQyODE3ZGI2YWU4NTQyLi5m
MjE4MTVhYTg0MzgyNmUxNzg5MWI0YmU0ZTczN2FiYzEyZTQ5NTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJSZXNv
dXJjZUxvYWRlci5oIgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkZv
cm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lLmgiCkBAIC0xOTAsNyArMTkwLDI4IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdU
Rk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlU2hhcmVkQnVmZmVyKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit7CisgICAgTE9HKE5ldHdvcmssICIoV2Vi
UHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZv
ciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdv
cmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3
ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CisKKyAgICBpZiAoVU5MSUtFTFkobV9pbnRl
cmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigp
KSkpIHsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+
aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRh
ID0gV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAobV9jb3JlTG9hZGVyKQorICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVTaGFyZWRC
dWZmZXIoV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJl
Y2VpdmluZyBkYXRhIik7CisgICAgfQorICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNp
emUoKTsKKworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkQnl0ZXMpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBt
X2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHBy
b2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNw
b25zZSIpOwpAQCAtMTk4LDkgKzIxOSw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAg
aWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSkpKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAg
bV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewotICAgICAgICAgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVy
LT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVy
KQotICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVy
KSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oCmluZGV4IDU4M2UzNzljODllY2ZhOTUzMGIwYWJmYTFjNjlmZWE5ZDUzOTY2ZmIu
LjZjMTdkN2Y4ZDk0ZThkNzcwYmM5YzcxMTU4NDM0ZDkwM2NiZmI2ZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsK
IGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCkBAIC04Myw3ICs4Myw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmKTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTaGFyZWRCdWZmZXIoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlJiYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmlu
aXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAg
IHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEzMDQ3
NDRjMmQxODNlYTc5ZTk5ZWJhZWI0Y2ZiYmEyLi5hYjM5YjU5NDZjYWNhODFmNzViMTgwNzcxNGJm
NzlkYTUyM2FhM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQs
OCBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAg
V2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
ZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2
ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
CisgICAgRGlkUmVjZWl2ZVNoYXJlZEJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRGaW5pc2hSZXNvdXJj
ZUxvYWQoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcykKICAg
ICBEaWRGYWlsUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAg
RGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IDM0ZTg2YzExZTI0ODZj
N2ExNjAzNmQ3YjQ2OGZiNzhkMjc1OGZkNjEuLjhjMDE5NzgwYzAxMTE3NzgzMmQwYjgxYWYwMzJj
MGEyZTg0OWExYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBA
IC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxpbnQ2
NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVNo
YXJlZEJ1ZmZlciB7IGJ1ZmZlci5nZXQoKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLT5z
aXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRh
PiYmIGZvcm1EYXRhKQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFyKiBkYXRhLCBzaXpl
CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURh
dGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0
YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2Vp
dmVTaGFyZWRCdWZmZXIgeyB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0sIHN0
YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0Y2IwZGNkY2NhZjYwNmQ2MzY1
ZDQ4NjI5NDg4ZjgwNjNkYmY4NmE5Li4yNmU4Y2U0MTY0YjRkMjI3N2QzNzUwYmMyNDIxODNhMjhi
NWUwYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmll
dy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJV
c2VyRGF0YS5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuaCIKQEAgLTE5MjUsOSArMTkyNiw5IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyLCBTaGFyCiAgICAgYXV0byBjYWxsYmFja0lEID0gQ2FsbGJhY2tJRDo6ZnJvbUludGVn
ZXIoY2FsbGJhY2tJZGVudGlmaWVyKTsKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSB7IG1fZnJh
bWUtPnBhZ2UoKSB9KSB7CiAgICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNr
SUQsIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS0+ZGF0YSgpKSwgZGF0
YS0+c2l6ZSgpIH0pKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7ICpkYXRhIH0pKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgbnVsbHB0ciwgMCB9KSk7Cisg
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVk
TG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDBhYjMzNzVjZDYwMGZkMDU0
MDVmMjg5YTU1MDZhZDYzZGI4NDAzYjAuLjNmZmE4MmNkNTg3MGUxOThiZGM0OWU2ZjE3OWFmYjUy
NjNjMzgxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0zNTE0LDcgKzM1MTQsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlm
IChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEu
Z2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkg
fTsKKyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0
KCkpOwogI2VuZGlmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJh
Y2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMzU5NSw3ICszNTk1LDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgQ2FsbGJhY2tJRCBjYWxsYmFja0kKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKLSAg
ICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CisgICAgICAg
IGRhdGFSZWZlcmVuY2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKICNlbmRp
ZgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZl
cmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KQEAgLTQ5MzUsNyArNDkzNSw3IEBAIHZvaWQgV2ViUGFn
ZTo6ZHJhd1BhZ2VzVG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5m
byYgcHJpbnRJbmZvCiB7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VE
YXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBj
b3VudCwgcGRmUGFnZURhdGEpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0
YUNhbGxiYWNrKHsgQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRpY19j
YXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSwgY2FsbGJh
Y2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0KCkpIH0sIGNhbGxiYWNrSUQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMy
X3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpCkBAIC02
NTc5LDEyICs2NTc5LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVS
ZXNwb25zZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0CiAgICAgaGFuZGxlci0+
dGFza0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVy
SWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIGF1dG8qIGhhbmRs
ZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklk
ZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tEaWRS
ZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpKTsKKyAg
ICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2l6ZSgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oZGF0YS5kYXRhKCkpKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklk
ZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKQEAgLTY4MDYsNyArNjgwNiw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZp
ZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9jdW1lbnQoKS51cGRhdGVM
YXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBkMjYzNGE1ZjQzMzQxNWNiYWJhYjc1Yzk2YzBlZTAwMzE5NzQyYTQ0Li4zYWU0NjMxMDMyNWNi
ZmQwYjIxNTc2N2U4OWQ2MWUxYjk2NDZkNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTUsNiArMTU1LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBj
bGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNl
OworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMTE5NCw3ICsxMTk1LDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENhbGxiYWNrSUQpOwotICAgIHZv
aWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBP
cHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3Np
bmdJbWFnZURhdGEsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxl
U2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEs
IENhbGxiYWNrSUQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
CkBAIC0xNjc4LDcgKzE2NzksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cmxTY2hlbWVUYXNr
RGlkUGVyZm9ybVJlZGlyZWN0aW9uKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRf
dCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3Bv
bnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgdXJsU2NoZW1lVGFz
a0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNr
SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCB1cmxTY2hl
bWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKTsK
ICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRp
ZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKIAogICAgIHZvaWQgc2V0SXNTdXNwZW5kZWQoYm9vbCk7Cg==
</data>
<flag name="review"
          id="407478"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="407489"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391994</attachid>
            <date>2020-02-28 10:46:08 -0800</date>
            <delta_ts>2020-02-28 21:29:26 -0800</delta_ts>
            <desc>Patch for landing: Part 1: WebCore</desc>
            <filename>bug-208090-20200228104607.patch</filename>
            <type>text/plain</type>
            <size>156699</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM2ZGFjZjZmZWE3MTU3
YzdhNDkyMGFhMzMxNjMwZDkzNWNiMzYwMS4uMGNjYzhjODY5ZTI3ZTE0ODJkNGY2OWQ4ZTBiMDRh
ZWYzYWQwY2UxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0wMi0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50
IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIFRvIGVuYWJsZSBjYWNoaW5nIG9mIGNlcnRhaW4gQ0RN
IHByb3BlcnRpZXMsIGFsbG93IHRoZW0gdG8gYmUgZmV0Y2hlZCByYXRoZXIgdGhhbiBxdWVyaWVz
LiBBcyBzdWNoLAorICAgICAgICBDRE1Qcml2YXRlOjpzdXBwb3J0c0luaXREYXRhVHlwZSAtPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzLCBzdXBwb3J0c1JvYnVzdG5lc3MgLT4gc3VwcG9ydGVkUm9i
dXN0bmVzc2VzLgorCisgICAgICAgIFRvIGVuYWJsZSBDRE0gdHlwZXMgdG8gYmUgcGFzc2VkIGFj
cm9zcyBYUEMsIGFkZCBleHBsaWNpdCBzaXplcyB0byB0aGUgZW51bWVyYXRpb25zLCBhbmQgYWRk
IGVuY29kZSBhbmQKKyAgICAgICAgZGVjb2RlIHRlbXBsYXRlcyB0byB0aGUgZGF0YSB0eXBlcy4K
KworICAgICAgICBUbyBlbmFibGUgYXN5bmMgbWVzc2FnaW5nIGZvcm0gdGhlIEdQVSBwcm9jZXNz
J3MgTWVkaWFQbGF5ZXIsIHNlbmQgdGhlIE1lZGlhUGxheWVyIHRoZSBpbmZvcm1hdGlvbiBpdAor
ICAgICAgICBuZWVkcyB3aGVuIGJvdGggbGVnYWN5LSBhbmQgbW9kZXJuLUVNRSBBUElzIGFyZSBi
b3RoIGVuYWJsZWQsIHJhdGhlciB0aGFuIGFsbG93IHRoZSBNZWRpYVBsYXllclByaXZhdGUKKyAg
ICAgICAgdG8gcXVlcnkgdGhlIE1lZGlhUGxheWVyLgorCisgICAgICAgIE1vdmUgbW9zdCBvZiB0
aGUgYWxnb3JpdGhpbWljIGltcGxlbWVudGF0aW9uIGZyb20gQ0RNIGludG8gQ0RNUHJpdmF0ZSwg
YWxsb3dpbmcgaXQgdG8gYmUgcnVuIGZyb20gd2l0aGluCisgICAgICAgIHRoZSBHUFUgcHJvY2Vz
cy4gU2ltaWxtYXJseSwgbWFrZSBtb3N0IG9mIHRoZSBzeW5jaHJvbm91cyBtZXRob2RzIGluIENE
TUluc3RhbmNlIGluc3RlYWQgdGFrZSBhIGNhbGxiYWNrCisgICAgICAgIHBhcmFtZXRlciwgYWxs
b3dpbmcgdGhlbSB0byBiZSBpbXBsZW1lbnRlZCBpbiBhIHJlbW90ZSBwcm9jZXNzLgorCisgICAg
ICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN5
c3RlbUFjY2Vzczo6Y3JlYXRlTWVkaWFLZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNl
cnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJO
ZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
S2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5n
aW5lV2FzVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNETUZhY3Rvcnk6OnJlc2V0RmFjdG9yaWVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1LZXlTdGF0dXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETU1lZGlhQ2Fw
YWJpbGl0eTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETU1lZGlhQ2FwYWJp
bGl0eTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNz
YWdlVHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlOjpkb1N1cHBvcnRlZENvbmZpZ3Vy
YXRpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGU6OmlzUGVyc2lzdGVudFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0
aWVzRm9yQXVkaW9WaWRlb1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6Z2V0
Q29uc2VudFN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJp
dmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmg6
CisgICAgICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvblR5cGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmtleU5lZWRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3Jh
cHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE06OnN1cHBvcnRlZEluaXREYXRhVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NETTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0ZWRSb2J1c3RuZXNzIGNvbnN0KToK
KwogMjAyMC0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBDcmVhdGUgQXVkaW9EZXN0aW5hdGlvbiBpbiB0aGUgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NjkyNTk3NTE1ZjY4NTkwNGRmMTdiYWE2OGZlYTljNzc4MmU3YzgxNy4uMWVlNDllNjkxNjVmOWUz
ZjQyZTlkMDRjNDc2YmJmMTU1ZjUzYmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
UF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkb3B0IGNoYW5nZXMgdG8gTWVk
aWFQbGF5ZXJQcm94eS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJN
ZWRpYVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJhdGVneTo6cmVn
aXN0ZXJDRE1GYWN0b3JpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1l
ZGlhU3RyYXRlZ3kuaDoKKwogMjAyMC0wMi0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQW5ub3RhdGUgbWVkaWFUeXBlIHdpdGggYW4gYXZhaWxhYmlsaXR5
IG1hY3JvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkNGQwZmUzYjZhZDBjYjE2
NjI3YjZmYjRlNWZiOWViNDQxNjVjZTMuLmY4ZWFkNjI5NzQyMGNlMzNlMjEyY2Y4Mzg5YTg3MzFl
Y2M2Zjk3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0wMi0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkb3B0IGNoYW5nZXMgdG8g
UGxhdGZvcm1TdHJhdGVnaWVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBDcmVhdGUgQXVkaW9EZXN0aW5hdGlvbiBpbiB0aGUgR1BV
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGRjMTNhOGMwM2Q4Y2Y0NWYyODIxZmNjNmFl
MjI4N2NiZTBhZmIzNTYuLjZlODNlZWNiZDZkMTE1NDFhNzIyZWRmNDM1ODg1ZDgxOWM3YTQxZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTAzNSw2ICsxMDM1LDIwIEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCiAgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKIAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaAor
ICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorICAgIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZVNlc3Npb24uaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN0
YXR1cy5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmgK
KyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisgICAgcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisgICAgcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuaAorICAgIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlcXVpcmVtZW50
LmgKKyAgICBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAorICAgIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25UeXBlLmgKKwogICAgIHBsYXRmb3JtL2dh
bWVwYWQvR2FtZXBhZFByb3ZpZGVyLmgKICAgICBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92
aWRlckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9QbGF0Zm9ybUdhbWVwYWQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDRiYmIy
YmNlNjE4NzRiN2VlMTQ4YTQxNjg1NTBhNmIxNTY0MzkyYTAuLmM1NWJlMDY0MjE2NTAwZWQwYjI3
ZDVhOWU5Y2M5NjIxZjdhNGEwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKQEAgLTc5LDUxMCArNzksMTggQEAgdm9pZCBDRE06OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRl
Q29uZmkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNn
ZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRpb24KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkg
Tm92ZW1iZXIgMjAxNgorICAgIC8vIEltcGxlbWVudGVkIGluIENETVByaXZhdGU6OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oKQogCi0gICAgLy8gMy4xLjEuMSBHZXQgU3VwcG9ydGVkIENvbmZp
Z3VyYXRpb24KLSAgICAvLyBHaXZlbiBhIEtleSBTeXN0ZW1zIGltcGxlbWVudGF0aW9uIGltcGxl
bWVudGF0aW9uLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlIGNvbmZpZ3Vy
YXRpb24sIGFuZCBvcmlnaW4sCi0gICAgLy8gdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBv
cnRlZCBjb25maWd1cmF0aW9uIG9yIE5vdFN1cHBvcnRlZCBhcyBhcHByb3ByaWF0ZS4KLQotICAg
IC8vIDEuIExldCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBiZSBDb25zZW50RGVuaWVkLgotICAg
IC8vIDIuIEluaXRpYWxpemUgcmVzdHJpY3Rpb25zIHRvIGluZGljYXRlIHRoYXQgbm8gY29uZmln
dXJhdGlvbnMgaGF2ZSBoYWQgdXNlciBjb25zZW50IGRlbmllZC4KLSAgICBNZWRpYUtleXNSZXN0
cmljdGlvbnMgcmVzdHJpY3Rpb25zIHsgfTsKLSAgICBkb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25T
dGVwKFdURk1vdmUoY2FuZGlkYXRlQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25z
KSwgV1RGTW92ZShjYWxsYmFjaykpOwotfQotCi12b2lkIENETTo6ZG9TdXBwb3J0ZWRDb25maWd1
cmF0aW9uU3RlcChNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1
cmF0aW9uLCBNZWRpYUtleXNSZXN0cmljdGlvbnMmJiByZXN0cmljdGlvbnMsIFN1cHBvcnRlZENv
bmZpZ3VyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbgotICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2LCBjdGQuCi0KLSAgICAvLyAz
LjEuMS4xIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbgotICAgIC8vIDMuIFJlcGVhdCB0aGUg
Zm9sbG93aW5nIHN0ZXAgd2hpbGUgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gaXMgQ29uc2VudERl
bmllZDoKLSAgICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBhbmQsIGlmIHBy
b3ZpZGVkLCByZXN0cmljdGlvbnMgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlCi0gICAg
Ly8gR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50IGFsZ29yaXRobSB3aXRo
IGltcGxlbWVudGF0aW9uLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwKLSAgICAvLyByZXN0cmlj
dGlvbnMgYW5kIG9yaWdpbi4KLSAgICBhdXRvIG9wdGlvbmFsQ29uZmlndXJhdGlvbiA9IGdldFN1
cHBvcnRlZENvbmZpZ3VyYXRpb24oY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KTsKLSAgICBpZiAoIW9wdGlvbmFsQ29uZmlndXJhdGlvbikgeworICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAg
IGlmICghZG9jdW1lbnQgfHwgIW1fcHJpdmF0ZSkgewogICAgICAgICBjYWxsYmFjayhXVEY6Om51
bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb25zZW50Q2FsbGJh
Y2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChDb25zZW50U3RhdHVzIHN0YXR1cywgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiYgY29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYgcmVzdHJpY3Rpb25z
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAgY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICAvLyAzLjEuMS4yIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbiBhbmQgQ29uc2VudCwgY3Rk
LgotICAgICAgICAvLyAyMi4gTGV0IGNvbnNlbnQgc3RhdHVzIGFuZCB1cGRhdGVkIHJlc3RyaWN0
aW9ucyBiZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIEdldCBDb25zZW50IFN0YXR1cyBhbGdv
cml0aG0gb24gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwKLSAgICAgICAgLy8gICAgIHJlc3Ry
aWN0aW9ucyBhbmQgb3JpZ2luIGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2Yg
Y29uc2VudCBzdGF0dXMgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgICAgIHN3aXRjaCAo
c3RhdHVzKSB7Ci0gICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmllZDoKLSAg
ICAgICAgICAgIC8vIOKGsyBDb25zZW50RGVuaWVkOgotICAgICAgICAgICAgLy8gICAgUmV0dXJu
IENvbnNlbnREZW5pZWQgYW5kIHVwZGF0ZWQgcmVzdHJpY3Rpb25zLgotICAgICAgICAgICAgd2Vh
a1RoaXMtPmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoV1RGTW92ZShjb25maWd1cmF0aW9u
KSwgV1RGTW92ZShyZXN0cmljdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSBDb25zZW50U3RhdHVzOjpJbmZvcm1Vc2VyOgotICAg
ICAgICAgICAgLy8g4oazIEluZm9ybVVzZXIKLSAgICAgICAgICAgIC8vICAgIEluZm9ybSB0aGUg
dXNlciB0aGF0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgaW4gdXNlIGluIHRoZSBvcmln
aW4gaW5jbHVkaW5nLCBzcGVjaWZpY2FsbHksIHRoZSBpbmZvcm1hdGlvbiB0aGF0Ci0gICAgICAg
ICAgICAvLyAgICBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9vciBEaXN0aW5jdGl2ZSBQ
ZXJtYW5lbnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZSB3aWxsIGJlIHVzZWQgaWYgdGhl
Ci0gICAgICAgICAgICAvLyAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgInJlcXVpcmVkIi4gQ29udGludWUgdG8gdGhlIG5leHQg
c3RlcC4KLSAgICAgICAgICAgIC8vIE5PVEU6IEltcGxlbWVudC4KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6QWxsb3dlZDoKLSAgICAgICAgICAgIC8v
IOKGsyBBbGxvd2VkOgotICAgICAgICAgICAgLy8gQ29udGludWUgdG8gdGhlIG5leHQgc3RlcC4K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8vIDIzLiBSZXR1cm4gYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjb25maWd1
cmF0aW9uKSk7Ci0gICAgfTsKLSAgICBnZXRDb25zZW50U3RhdHVzKFdURk1vdmUob3B0aW9uYWxD
b25maWd1cmF0aW9uLnZhbHVlKCkpLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucyksIFdURk1vdmUoY29u
c2VudENhbGxiYWNrKSk7Ci19Ci0KLWJvb2wgQ0RNOjppc1BlcnNpc3RlbnRUeXBlKE1lZGlhS2V5
U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUpCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jaXMtcGVyc2lzdGVudC1zZXNzaW9uLXR5cGUKLSAgICAvLyBXM0Mg
RWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotCi0gICAgLy8gNS4xLjEuIElzIHBlcnNp
c3RlbnQgc2Vzc2lvbiB0eXBlPwotICAgIC8vIDEuIExldCB0aGUgc2Vzc2lvbiB0eXBlIGJlIHRo
ZSBzcGVjaWZpZWQgTWVkaWFLZXlTZXNzaW9uVHlwZSB2YWx1ZS4KLSAgICAvLyAyLiBGb2xsb3cg
dGhlIHN0ZXBzIGZvciB0aGUgdmFsdWUgb2Ygc2Vzc2lvbiB0eXBlIGZyb20gdGhlIGZvbGxvd2lu
ZyBsaXN0OgotICAgIHN3aXRjaCAoc2Vzc2lvblR5cGUpIHsKLSAgICBjYXNlIE1lZGlhS2V5U2Vz
c2lvblR5cGU6OlRlbXBvcmFyeToKLSAgICAgICAgLy8g4oazICJ0ZW1wb3JhcnkiCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1lZGlhS2V5U2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRM
aWNlbnNlOgotICAgIGNhc2UgTWVkaWFLZXlTZXNzaW9uVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVj
b3JkOgotICAgICAgICAvLyDihrMgInBlcnNpc3RlbnQtbGljZW5zZSIKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1PcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETTo6Z2V0
U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYgcmVzdHJpY3Rp
b25zKQotewotICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dl
dC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbi1hbmQtY29uc2VudAotICAgIC8vIFczQyBFZGl0b3In
cyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2Ci0KLSAgICBBU1NFUlQobV9wcml2YXRlKTsKLSAgICBp
ZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIC8vIDMu
MS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50Ci0gICAgLy8gR2l2
ZW4gYSBLZXkgU3lzdGVtcyBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbiwgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLAotICAgIC8vIHJlc3Ry
aWN0aW9ucyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIGEgc3VwcG9ydGVkIGNv
bmZpZ3VyYXRpb24sIE5vdFN1cHBvcnRlZCwgb3IgQ29uc2VudERlbmllZAotICAgIC8vIGFzIGFw
cHJvcHJpYXRlIGFuZCwgaW4gdGhlIENvbnNlbnREZW5pZWQgY2FzZSwgcmVzdHJpY3Rpb25zLgot
Ci0gICAgLy8gMS4gTGV0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBuZXcgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uIGRpY3Rpb25hcnkuCi0gICAgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiB7IH07Ci0KLSAgICAvLyAyLiBTZXQg
dGhlIGxhYmVsIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFsIHRo
ZSBsYWJlbCBtZW1iZXIgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24uCi0gICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmxhYmVsID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5sYWJlbDsKLQot
ICAgIC8vIDMuIElmIHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbiBpcyBub24tZW1wdHksIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgIGlmICgh
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLmlzRW1wdHkoKSkgewotICAgICAg
ICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgdHlwZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgRE9N
U3RyaW5ncy4KLSAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkVHlwZXM7Ci0KLSAgICAg
ICAgLy8gMy4yLiBGb3IgZWFjaCB2YWx1ZSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGlu
aXREYXRhVHlwZXMgbWVtYmVyOgotICAgICAgICBmb3IgKGF1dG8gaW5pdERhdGFUeXBlIDogY2Fu
ZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKSB7Ci0gICAgICAgICAgICAvLyAzLjIu
MS4gTGV0IGluaXREYXRhVHlwZSBiZSB0aGUgdmFsdWUuCi0gICAgICAgICAgICAvLyAzLjIuMi4g
SWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGdlbmVyYXRpbmcgcmVxdWVzdHMgYmFzZWQg
b24gaW5pdERhdGFUeXBlLCBhZGQgaW5pdERhdGFUeXBlCi0gICAgICAgICAgICAvLyAgICAgICAg
dG8gc3VwcG9ydGVkIHR5cGVzLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4g
VGhlIGVtcHR5IHN0cmluZyBpcyBuZXZlciBzdXBwb3J0ZWQuCi0gICAgICAgICAgICBpZiAoaW5p
dERhdGFUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgaWYgKG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGFUeXBlKGlu
aXREYXRhVHlwZSkpCi0gICAgICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKGluaXRE
YXRhVHlwZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAzLjMuIElmIHN1cHBvcnRlZCB0eXBl
cyBpcyBlbXB0eSwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKHN1cHBvcnRlZFR5
cGVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAg
ICAgLy8gMy40LiBTZXQgdGhlIGluaXREYXRhVHlwZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNv
bmZpZ3VyYXRpb24gdG8gc3VwcG9ydGVkIHR5cGVzLgotICAgICAgICBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24uaW5pdERhdGFUeXBlcyA9IFdURk1vdmUoc3VwcG9ydGVkVHlwZXMpOwotICAgIH0K
LQotICAgIC8vIDQuIExldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVtZW50IGJlIHRo
ZSB2YWx1ZSBvZiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmll
ciBtZW1iZXIuCi0gICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVy
UmVxdWlyZW1lbnQgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
cjsKLQotICAgIC8vIDUuIElmIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQgaXMg
Im9wdGlvbmFsIiBhbmQgRGlzdGluY3RpdmUgSWRlbnRpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGFj
Y29yZGluZyB0bwotICAgIC8vICAgIHJlc3RyaWN0aW9ucywgc2V0IGRpc3RpbmN0aXZlIGlkZW50
aWZpZXIgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICBpZiAoZGlzdGluY3RpdmVJ
ZGVudGlmaWVyUmVxdWlyZW1lbnQgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYm
IHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQpCi0gICAgICAgIGRpc3Rp
bmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFs
bG93ZWQ7Ci0KLSAgICAvLyA2LiBGb2xsb3cgdGhlIHN0ZXBzIGZvciBkaXN0aW5jdGl2ZSBpZGVu
dGlmaWVyIHJlcXVpcmVtZW50IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIHN3aXRjaCAo
ZGlzdGluY3RpdmVJZGVudGlmaWVyUmVxdWlyZW1lbnQpIHsKLSAgICBjYXNlIE1lZGlhS2V5c1Jl
cXVpcmVtZW50OjpSZXF1aXJlZDoKLSAgICAgICAgLy8g4oazICJyZXF1aXJlZCIKLSAgICAgICAg
Ly8gSWYgdGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdXNlIG9mIERpc3RpbmN0
aXZlIElkZW50aWZpZXIocykgaW4gY29tYmluYXRpb24KLSAgICAgICAgLy8gd2l0aCBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQu
Ci0gICAgICAgIGlmIChtX3ByaXZhdGUtPmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVu
dChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVx
dWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
OgotICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgotICAgICAgICAvLyBDb250aW51ZSB3aXRoIHRo
ZSBmb2xsb3dpbmcgc3RlcHMuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNZWRpYUtleXNS
ZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKLSAgICAgICAgLy8g4oazICJub3QtYWxsb3dlZCIKLSAg
ICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJ
ZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVyKHMpCi0gICAg
ICAgIC8vIGluIGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQg
cmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgotICAgICAgICBpZiAobV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0
aW9uLCByZXN0cmljdGlvbnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIC8vIDcuIFNldCB0aGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFsIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWly
ZW1lbnQuCi0gICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
ciA9IGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50OwotCi0gICAgLy8gOC4gTGV0IHBl
cnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGNhbmRp
ZGF0ZSBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIG1lbWJlci4KLSAgICBNZWRpYUtl
eXNSZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCA9IGNhbmRpZGF0ZUNvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlOwotCi0gICAgLy8gOS4gSWYgcGVyc2lzdGVudCBzdGF0
ZSByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwiIGFuZCBwZXJzaXN0aW5nIHN0YXRlIGlzIG5vdCBh
bGxvd2VkIGFjY29yZGluZyB0byByZXN0cmljdGlvbnMsCi0gICAgLy8gICAgc2V0IHBlcnNpc3Rl
bnQgc3RhdGUgcmVxdWlyZW1lbnQgdG8gIm5vdC1hbGxvd2VkIi4KLSAgICBpZiAocGVyc2lzdGVu
dFN0YXRlUmVxdWlyZW1lbnQgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsICYmIHJl
c3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQpCi0gICAgICAgIHBlcnNpc3RlbnRTdGF0
ZVJlcXVpcmVtZW50ID0gIE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwotCi0gICAg
Ly8gMTAuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQg
ZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Ci0gICAgc3dpdGNoIChwZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudCkgewotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOgotICAg
ICAgICAvLyDihrMgInJlcXVpcmVkIgotICAgICAgICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBwZXJzaXN0aW5nIHN0YXRlIGluIGNvbWJpbmF0aW9uIHdpdGggYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbgotICAgICAgICAvLyBhbmQgcmVzdHJpY3Rpb25zLCByZXR1
cm4gTm90U3VwcG9ydGVkLgotICAgICAgICBpZiAobV9wcml2YXRlLT5wZXJzaXN0ZW50U3RhdGVS
ZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0gTWVk
aWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTWVkaWFLZXlzUmVxdWlyZW1lbnQ6
Ok9wdGlvbmFsOgotICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgotICAgICAgICAvLyBDb250aW51
ZSB3aXRoIHRoZSBmb2xsb3dpbmcgc3RlcHMuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBN
ZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZDoKLSAgICAgICAgLy8g4oazICJub3QtYWxs
b3dlZCIKLSAgICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHBlcnNpc3Rp
bmcgc3RhdGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0g
ICAgICAgIC8vIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQKLSAgICAgICAg
aWYgKG1fcHJpdmF0ZS0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLCByZXN0cmljdGlvbnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJl
ZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIC8vIDExLiBTZXQgdGhlIHBlcnNpc3RlbnRTdGF0ZSBtZW1iZXIgb2YgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiB0byBlcXVhbCB0aGUgdmFsdWUgb2YgcGVyc2lzdGVudCBzdGF0
ZSByZXF1aXJlbWVudC4KLSAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0
YXRlID0gcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQ7Ci0KLSAgICAvLyAxMi4gRm9sbG93IHRo
ZSBzdGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dp
bmcgbGlzdDoKLSAgICBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4gc2Vzc2lvblR5cGVzOwot
Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnNlc3Npb25UeXBlcy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgLy8g4oazIElmIHRoZSBzZXNzaW9uVHlwZXMgbWVtYmVyIGlzIHByZXNlbnQg
W1dlYklETF0gaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgLy8gTGV0IHNlc3Np
b24gdHlwZXMgYmUgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBzZXNzaW9uVHlwZXMgbWVtYmVy
LgotICAgICAgICBzZXNzaW9uVHlwZXMgPSBjYW5kaWRhdGVDb25maWd1cmF0aW9uLnNlc3Npb25U
eXBlczsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCi0gICAgICAgIC8v
IExldCBzZXNzaW9uIHR5cGVzIGJlIFsgInRlbXBvcmFyeSIgXS4KLSAgICAgICAgc2Vzc2lvblR5
cGVzID0geyBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkgfTsKLSAgICB9Ci0KLSAgICAv
LyAxMy4gRm9yIGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0eXBlczoKLSAgICBmb3IgKGF1dG8mIHNl
c3Npb25UeXBlIDogc2Vzc2lvblR5cGVzKSB7Ci0gICAgICAgIC8vIDEzLjEuIExldCBzZXNzaW9u
IHR5cGUgYmUgdGhlIHZhbHVlLgotICAgICAgICAvLyAxMy4yLiBJZiBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVlIGlzICJub3QtYWxsb3dlZCIgYW5kIHRo
ZQotICAgICAgICAvLyAgICAgICBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8gYWxnb3JpdGht
IHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAg
ICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IE1lZGlh
S2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5
cGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICAvLyAxMy4z
LiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzZXNzaW9uIHR5cGUgaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIC8vICAg
ICAgIGFuZCByZXN0cmljdGlvbnMgZm9yIG90aGVyIHJlYXNvbnMsIHJldHVybiBOb3RTdXBwb3J0
ZWQuCi0gICAgICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZp
Z3VyYXRpb24oc2Vzc2lvblR5cGUsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDEzLjQgSWYgYWNjdW11bGF0
ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSBpcyAib3B0aW9uYWwiIGFu
ZCB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIElzCi0gICAgICAgIC8vICAgICAgcGVyc2lzdGVu
dCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSBvbiBzZXNzaW9uIHR5cGUgaXMgdHJ1ZSwgY2hhbmdl
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUKLSAgICAgICAgLy8g
ICAgICB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1
cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6T3B0aW9uYWwg
JiYgaXNQZXJzaXN0ZW50VHlwZShzZXNzaW9uVHlwZSkpCi0gICAgICAgICAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJl
cXVpcmVkOwotICAgIH0KLQotICAgIC8vIDE0LiBTZXQgdGhlIHNlc3Npb25UeXBlcyBtZW1iZXIg
b2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBzZXNzaW9uIHR5cGVzLgotICAgIGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMgPSBzZXNzaW9uVHlwZXM7Ci0KLSAgICAv
LyAxNS4gSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIGFuZCBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXJzIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uIGFyZSBib3RoIGVtcHR5LCByZXR1cm4gTm90
U3VwcG9ydGVkLgotICAgIGlmIChjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVvQ2FwYWJpbGl0
aWVzLmlzRW1wdHkoKSAmJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIC8vIDE2LiDi
hrMgSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJh
dGlvbiBpcyBub24tZW1wdHk6Ci0gICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVv
Q2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICAvLyAxNi4xLiBMZXQgdmlkZW8gY2Fw
YWJpbGl0aWVzIGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBHZXQgU3VwcG9ydGVkIENh
cGFiaWxpdGllcyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0gb24KLSAgICAgICAgLy8g
ICAgICAgVmlkZW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgdmlkZW9DYXBhYmlsaXRpZXMg
bWVtYmVyLCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVzdHJpY3Rpb25zLgotICAg
ICAgICBhdXRvIHZpZGVvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9y
QXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5cGU6OlZpZGVvLCBjYW5kaWRhdGVDb25maWd1cmF0
aW9uLnZpZGVvQ2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0
aW9ucyk7Ci0KLSAgICAgICAgLy8gMTYuMi4gSWYgdmlkZW8gY2FwYWJpbGl0aWVzIGlzIG51bGws
IHJldHVybiBOb3RTdXBwb3J0ZWQuCi0gICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIC8vIDE2LjMgU2V0IHRo
ZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0
byB2aWRlbyBjYXBhYmlsaXRpZXMuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi52
aWRlb0NhcGFiaWxpdGllcyA9IFdURk1vdmUodmlkZW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLy8gMTYuIOKGsyBPdGhlcndpc2U6Ci0gICAgICAgIC8vICAg
ICBTZXQgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1
cmF0aW9uIHRvIGFuIGVtcHR5IHNlcXVlbmNlLgotICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24udmlkZW9DYXBhYmlsaXRpZXMgPSB7IH07Ci0gICAgfQotCi0gICAgLy8gMTcuIOKGsyBJ
ZiB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9u
IGlzIG5vbi1lbXB0eToKLSAgICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24uYXVkaW9DYXBh
YmlsaXRpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIDE3LjEuIExldCBhdWRpbyBjYXBhYmls
aXRpZXMgYmUgdGhlIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIEdldCBTdXBwb3J0ZWQgQ2FwYWJp
bGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlIGFsZ29yaXRobSBvbgotICAgICAgICAvLyAgICAg
ICBBdWRpbywgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXIsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMuCi0gICAgICAg
IGF1dG8gYXVkaW9DYXBhYmlsaXRpZXMgPSBnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRp
b1ZpZGVvVHlwZShBdWRpb1ZpZGVvVHlwZTo6QXVkaW8sIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24u
YXVkaW9DYXBhYmlsaXRpZXMsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KTsKLQotICAgICAgICAvLyAxNy4yLiBJZiBhdWRpbyBjYXBhYmlsaXRpZXMgaXMgbnVsbCwgcmV0
dXJuIE5vdFN1cHBvcnRlZC4KLSAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgLy8gMTcuMyBTZXQgdGhlIGF1
ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGF1
ZGlvIGNhcGFiaWxpdGllcy4KLSAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmF1ZGlv
Q2FwYWJpbGl0aWVzID0gV1RGTW92ZShhdWRpb0NhcGFiaWxpdGllcy52YWx1ZSgpKTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyAxNy4g4oazIE90aGVyd2lzZToKLSAgICAgICAgLy8gICAgIFNl
dCB0aGUgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRp
b24gdG8gYW4gZW1wdHkgc2VxdWVuY2UuCi0gICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlv
bi5hdWRpb0NhcGFiaWxpdGllcyA9IHsgfTsKLSAgICB9Ci0KLSAgICAvLyAxOC4gSWYgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmllciB2YWx1ZSBpcyAib3B0
aW9uYWwiLCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcKLSAgICAvLyAg
ICAgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIGlmIChhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpPcHRpb25hbCkgewotICAgICAgICAvLyDihrMgSWYgdGhlIGltcGxlbWVudGF0aW9uIHJl
cXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1h
bmVudCBJZGVudGlmaWVyKHMpIGZvciBhbnkgb2YgdGhlCi0gICAgICAgIC8vICAgIGNvbWJpbmF0
aW9ucyBpbiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIGlmIChtX3ByaXZhdGUt
PmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRp
b24sIHJlc3RyaWN0aW9ucykgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSB7Ci0g
ICAgICAgICAgICAvLyBDaGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0
aXZlSWRlbnRpZmllciB2YWx1ZSB0byAicmVxdWlyZWQiLgotICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9IE1lZGlhS2V5c1JlcXVpcmVt
ZW50OjpSZXF1aXJlZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIOKGsyBPdGhl
cndpc2UKLSAgICAgICAgICAgIC8vICAgIENoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9u
J3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRvICJub3QtYWxsb3dlZCIuCi0gICAgICAg
ICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID0gTWVk
aWFLZXlzUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyAxOS4gSWYgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1
ZSBpcyAib3B0aW9uYWwiLCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcK
LSAgICAvLyAgICAgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgotICAgIGlmIChh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IE1lZGlhS2V5c1JlcXVp
cmVtZW50OjpPcHRpb25hbCkgewotICAgICAgICAvLyDihrMgSWYgdGhlIGltcGxlbWVudGF0aW9u
IHJlcXVpcmVzIHBlcnNpc3Rpbmcgc3RhdGUgZm9yIGFueSBvZiB0aGUgY29tYmluYXRpb25zIGlu
IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgaWYgKG1fcHJpdmF0ZS0+cGVyc2lz
dGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCkgewotICAgICAgICAgICAgLy8g
Q2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUg
dG8gInJlcXVpcmVkIi4KLSAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQ7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCi0gICAgICAgICAgICAvLyAgICBD
aGFuZ2UgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0
byAibm90LWFsbG93ZWQiLgotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBl
cnNpc3RlbnRTdGF0ZSA9IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25maWd1
cmF0aW9uIHNwZWNpZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhY2N1
bXVsYXRlZCBjb25maWd1cmF0aW9uCi0gICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90
IGFsbG93ZWQgaW4gdGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KLSAgICBpZiAoIW1f
cHJpdmF0ZS0+c3VwcG9ydHNDb25maWd1cmF0aW9uKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBpZiAo
IWRvY3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCiAgICAgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwogICAgIFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4gPSBkb2N1bWVudC0+dG9wT3JpZ2luKCk7Ci0KLSAgICBpZiAoKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkIHx8IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0
ZW50U3RhdGUgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSAmJiAhb3JpZ2luLmNh
bkFjY2Vzc0xvY2FsU3RvcmFnZSgmdG9wT3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247Ci0gICAgLy8gTk9U
RTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0dXMoKS4KLX0KLQotT3B0aW9uYWw8VmVjdG9y
PE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmls
aXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShDRE06OkF1ZGlvVmlkZW9UeXBlIHR5cGUsIGNvbnN0IFZl
Y3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4mIHJlcXVlc3RlZENhcGFiaWxpdGll
cywgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlv
biwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCi17Ci0gICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jYXBhYmlsaXRp
ZXMtZm9yLWF1ZGlvLXZpZGVvLXR5cGUKLSAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92
ZW1iZXIgMjAxNgotCi0gICAgQVNTRVJUKG1fcHJpdmF0ZSk7Ci0gICAgaWYgKCFtX3ByaXZhdGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAvLyAzLjEuMS4zIEdldCBTdXBw
b3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRpby9WaWRlbyBUeXBlCi0KLSAgICAvLyBHaXZlbiBh
biBhdWRpby92aWRlbyB0eXBlLCBNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eSBzZXF1ZW5j
ZSByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzLCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24KLSAgICAvLyBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24sIGFuZCByZXN0cmljdGlvbnMsIHRoaXMg
YWxnb3JpdGhtIHJldHVybnMgYSBzZXF1ZW5jZSBvZiBzdXBwb3J0ZWQgTWVkaWFLZXlTeXN0ZW1N
ZWRpYUNhcGFiaWxpdHkgdmFsdWVzCi0gICAgLy8gZm9yIHRoaXMgYXVkaW8vdmlkZW8gdHlwZSBv
ciBudWxsIGFzIGFwcHJvcHJpYXRlLgotCi0gICAgLy8gMS4gTGV0IGxvY2FsIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBjb3B5IG9mIHBhcnRpYWwgY29uZmlndXJhdGlvbi4K
LSAgICBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
ID0gcGFydGlhbENvbmZpZ3VyYXRpb247Ci0KLSAgICAvLyAyLiBMZXQgc3VwcG9ydGVkIG1lZGlh
IGNhcGFiaWxpdGllcyBiZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBNZWRpYUtleVN5c3RlbU1lZGlh
Q2FwYWJpbGl0eSBkaWN0aW9uYXJpZXMuCi0gICAgVmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFD
YXBhYmlsaXR5PiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07Ci0KLSAgICAvLyAzLiBG
b3IgZWFjaCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVkaWEgY2Fw
YWJpbGl0aWVzOgotICAgIGZvciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJlcXVlc3Rl
ZENhcGFiaWxpdGllcykgewotICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUgYmUgcmVx
dWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCi0gICAgICAgIC8v
IDMuMi4gTGV0IHJvYnVzdG5lc3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyByb2J1
c3RuZXNzIG1lbWJlci4KLSAgICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0ZWRDYXBh
YmlsaXR5LnJvYnVzdG5lc3M7Ci0KLSAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMg
dGhlIGVtcHR5IHN0cmluZywgcmV0dXJuIG51bGwuCi0gICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBh
YmlsaXR5LmNvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICAgICAgLy8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52YWxpZCBv
ciB1bnJlY29nbml6ZWQgTUlNRSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24u
Ci0gICAgICAgIE9wdGlvbmFsPFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNl
ZENvbnRlbnRUeXBlOjpjcmVhdGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9k
ZTo6UmZjMjA0NSk7Ci0gICAgICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAvLyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRhaW5lciB0
eXBlIHNwZWNpZmllZCBieSBjb250ZW50IHR5cGUuCi0gICAgICAgIFN0cmluZyBjb250YWluZXIg
PSBjb250ZW50VHlwZS0+bWltZVR5cGUoKTsKLQotICAgICAgICAvLyAzLjYuIElmIHRoZSB1c2Vy
IGFnZW50IGRvZXMgbm90IHN1cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUgbmV4dCBp
dGVyYXRpb24uIFRoZSBjYXNlLXNlbnNpdGl2aXR5Ci0gICAgICAgIC8vICAgICAgb2Ygc3RyaW5n
IGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4KLSAgICAg
ICAgLy8gMy43LiBMZXQgcGFyYW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFdIHBhcmFt
ZXRlcnMsIGlmIGFueSwgc3BlY2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KLSAgICAgICAgLy8gMy44
LiBJZiB0aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1l
dGVycywgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgotICAgICAgICAvLyAzLjkuIExl
dCBtZWRpYSB0eXBlcyBiZSB0aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMg
c3BlY2lmaWVkIGJ5IHBhcmFtZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5Ci0gICAgICAgIC8v
ICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJp
YXRlIFJGQyBvciBvdGhlciBzcGVjaWZpY2F0aW9uLgotICAgICAgICBTdHJpbmcgY29kZWNzID0g
Y29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7Ci0gICAgICAgIGlm
IChjb250ZW50VHlwZS0+cGFyYW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgpID8gMCA6
IDEpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gMy4xMC4gSWYgbWVkaWEg
dHlwZXMgaXMgZW1wdHk6Ci0gICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAvLyDihrMgSWYgY29udGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVjaWZpYyBz
ZXQgb2YgY29kZWNzIGFuZCBjb2RlYyBjb25zdHJhaW50czoKLSAgICAgICAgICAgIC8vIOKGsyBP
dGhlcndpc2U6Ci0gICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gMy4xMS4gSWYgY29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1ZGlvL3Zp
ZGVvIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAgICAgICAgLy8gMy4x
Mi4gSWYgcm9idXN0bmVzcyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFpbnMgYW4g
dW5yZWNvZ25pemVkIHZhbHVlIG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQotICAgICAgICAv
LyAgICAgICBpbXBsZW1lbnRhdGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBT
dHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAgICAgICAgaWYgKCFyb2J1c3Ru
ZXNzLmlzRW1wdHkoKSAmJiAhbV9wcml2YXRlLT5zdXBwb3J0c1JvYnVzdG5lc3Mocm9idXN0bmVz
cykpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNl
ciBhZ2VudCBhbmQgaW1wbGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9m
IGVuY3J5cHRlZCBtZWRpYSBkYXRhIGZvciB0aGUKLSAgICAgICAgLy8gICAgICAgY29tYmluYXRp
b24gb2YgY29udGFpbmVyLCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9jYWwgYWNjdW11
bGF0ZWQgY29uZmlndXJhdGlvbiBpbiBjb21iaW5hdGlvbgotICAgICAgICAvLyAgICAgICB3aXRo
IHJlc3RyaWN0aW9uczoKLSAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShjb250ZW50VHlw
ZS0+bWltZVR5cGUoKSk7Ci0gICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBh
cmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7
Ci0KLSAgICAgICAgICAgIC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKLSAgICAgICAgICAgIHBh
cmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
OjpJc05vdFN1cHBvcnRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghbV9wcml2YXRlLT5zdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJp
Y3Rpb25zKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIDMuMTMuMS4gQWRkIHJlcXVlc3RlZCBtZWRpYSBj
YXBhYmlsaXR5IHRvIHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMuCi0gICAgICAgIHN1cHBv
cnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsKLQotICAg
ICAgICAvLyAzLjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlzIFZpZGVvOgotICAgICAg
ICAvLyAgICAgICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byB0aGUgdmlkZW9D
YXBhYmlsaXRpZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24uCi0g
ICAgICAgIGlmICh0eXBlID09IEF1ZGlvVmlkZW9UeXBlOjpWaWRlbykKLSAgICAgICAgICAgIGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5hcHBlbmQocmVxdWVzdGVk
Q2FwYWJpbGl0eSk7Ci0gICAgICAgIC8vIDMuMTMuMi4g4oazIElmIGF1ZGlvL3ZpZGVvIHR5cGUg
aXMgQXVkaW86Ci0gICAgICAgIC8vICAgICAgICAgQWRkIHJlcXVlc3RlZCBtZWRpYSBjYXBhYmls
aXR5IHRvIHRoZSBhdWRpb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgbG9jYWwgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbi4KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzLmFwcGVuZChyZXF1ZXN0ZWRDYXBhYmlsaXR5KTsK
LSAgICB9Ci0KLSAgICAvLyA0LiBJZiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzIGlzIGVt
cHR5LCByZXR1cm4gbnVsbC4KLSAgICBpZiAoc3VwcG9ydGVkTWVkaWFDYXBhYmlsaXRpZXMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgLy8gNS4gUmV0dXJu
IHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRpZXMuCi0gICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlh
Q2FwYWJpbGl0aWVzOwotfQotCi12b2lkIENETTo6Z2V0Q29uc2VudFN0YXR1cyhNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIE1lZGlhS2V5c1Jl
c3RyaWN0aW9ucyYmIHJlc3RyaWN0aW9ucywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJh
Y2spCi17Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0
LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25zZW50Ci0gICAgLy8gVzNDIEVkaXRvcidz
IERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgewotICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZN
b3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBOT1RFOiBJbiB0aGUgZnV0dXJlLCB0aGVz
ZSBjaGVja3MgYmVsb3dlIHdpbGwgaW52b2x2ZSBhc2tpbmcgdGhlIHBhZ2UgY2xpZW50LCBwb3Nz
aWJseSBhY3Jvc3MgYSBwcm9jZXNzIGJvdW5kYXJ5LgotICAgIC8vIFRoZXkgd2lsbCBieSBuZWNl
c3NpdHkgYmUgYXN5bmNocm9ub3VzIHdpdGggY2FsbGJhY2tzLiBGb3Igbm93LCBpbXBseSB0aGlz
IGJlaGF2aW9yIGJ5IHBlcmZvcm1pbmcgaXQgaW4gYW4gYXN5bmMgdGFzay4KLQotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbiksIHJlc3RyaWN0aW9ucyA9IFdURk1vdmUocmVzdHJpY3Rpb25zKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhbV9wcml2YXRlKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3VtdWxh
dGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgaWYgKCFkb2N1
bWVudCkgewotICAgICAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1czo6Q29uc2VudERlbmll
ZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwotICAgICAgICBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luID0gZG9jdW1lbnQtPnRvcE9yaWdpbigpOwotCi0gICAgICAg
IC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQu
Ci0gICAgICAgIC8vIDIxLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3Rp
dmVJZGVudGlmaWVyIHZhbHVlIGlzICJyZXF1aXJlZCIgYW5kIHRoZSBEaXN0aW5jdGl2ZSBJZGVu
dGlmaWVyKHMpIGFzc29jaWF0ZWQKLSAgICAgICAgLy8gICAgIHdpdGggYWNjdW11bGF0ZWQgY29u
ZmlndXJhdGlvbiBhcmUgbm90IHVuaXF1ZSBwZXIgb3JpZ2luIGFuZCBwcm9maWxlIGFuZCBjbGVh
cmFibGU6Ci0gICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAhbV9wcml2YXRl
LT5kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbikpIHsKLSAgICAgICAgICAgIC8vIDIxLjEuIFVwZGF0ZSBy
ZXN0cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBkZXNjcmliZWQg
YnkgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3QgaGF2ZSB1c2VyIGNvbnNlbnQuCi0g
ICAgICAgICAgICByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5pZWQsIFdU
Rk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RGTW92ZShyZXN0cmljdGlvbnMpKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1jb25zZW50LXN0YXR1cwotICAgICAgICAv
LyAzLjEuMS40IEdldCBDb25zZW50IFN0YXR1cwotICAgICAgICAvLyBHaXZlbiBhbiBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiwgdGhpcyBhbGdvcml0
aG0gcmV0dXJucyB0aGUgY29uc2VudCBzdGF0dXMgZm9yIGFjY3VtdWxhdGVkCi0gICAgICAgIC8v
IGNvbmZpZ3VyYXRpb24gYW5kIG9yaWdpbiBhcyBvbmUgb2YgQ29uc2VudERlbmllZCwgSW5mb3Jt
VXNlciBvciBBbGxvd2VkLCB0b2dldGhlciB3aXRoIGFuIHVwZGF0ZWQgdmFsdWUgZm9yIHJlc3Ry
aWN0aW9ucwotICAgICAgICAvLyBpbiB0aGUgQ29uc2VudERlbmllZCBjYXNlLgotCi0gICAgICAg
IC8vIDEuIElmIHRoZXJlIGlzIHBlcnNpc3RlZCBkZW5pYWwgZm9yIG9yaWdpbiBpbmRpY2F0aW5n
IHRoYXQgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBub3QgYWxsb3dlZCwgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIC8vIDEuMS4gVXBkYXRlIHJlc3RyaWN0aW9ucyB0byBy
ZWZsZWN0IHRoZSBjb25maWd1cmF0aW9ucyBmb3Igd2hpY2ggY29uc2VudCBoYXMgYmVlbiBkZW5p
ZWQuCi0gICAgICAgIC8vIDEuMi4gUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3RyaWN0aW9u
cy4KLSAgICAgICAgLy8gMi4gSWYgdGhlcmUgaXMgcGVyc2lzdGVkIGNvbnNlbnQgZm9yIG9yaWdp
biBpbmRpY2F0aW5nIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgYWxsb3dlZCwgcmV0dXJu
IEFsbG93ZWQuCi0gICAgICAgIC8vIE5PVEU6IHBlcnNpc3RlZCBkZW5pYWwgLyBjb25zZW50IHVu
aW1wbGVtZW50ZWQuCi0KLSAgICAgICAgLy8gMy4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJl
IHRydWU6Ci0gICAgICAgIC8vICAgIOKGsyBUaGUgZGlzdGluY3RpdmVJZGVudGlmaWVyIG1lbWJl
ciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCAibm90LWFsbG93ZWQiIGFuZCB0
aGUgY29tYmluYXRpb24gb2YgdGhlIFVzZXIgQWdlbnQsCi0gICAgICAgIC8vICAgICAgIGltcGxl
bWVudGF0aW9uIGFuZCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGRvZXMgbm90IGZvbGxvdyBh
bGwgdGhlIHJlY29tbWVuZGF0aW9ucyBvZiBBbGxvdyBQZXJzaXN0ZW50IERhdGEgdG8gQmUgQ2xl
YXJlZAotICAgICAgICAvLyAgICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUgSWRlbnRp
ZmllcihzKS4KLSAgICAgICAgLy8gTk9URTogYXNzdW1lIHRoYXQgaW1wbGVtZW50YXRpb25zIGZv
bGxvdyBhbGwgcmVjb21tZW5kYXRpb25zLgotCi0gICAgICAgIC8vICAgIOKGsyBUaGUgdXNlciBh
Z2VudCByZXF1aXJlcyBleHBsaWNpdCB1c2VyIGNvbnNlbnQgZm9yIHRoZSBhY2N1bXVsYXRlZCBj
b25maWd1cmF0aW9uIGZvciBvdGhlciByZWFzb25zLgotICAgICAgICAvLyBOT1RFOiBhc3N1bWUg
dGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCi0K
LSAgICAgICAgLy8gMy4xLiBSZXF1ZXN0IHVzZXIgY29uc2VudCB0byB1c2UgYWNjdW11bGF0ZWQg
Y29uZmlndXJhdGlvbiBpbiB0aGUgb3JpZ2luIGFuZCB3YWl0IGZvciB0aGUgdXNlciByZXNwb25z
ZS4KLSAgICAgICAgLy8gICAgICBUaGUgY29uc2VudCBtdXN0IGluY2x1ZGUgY29uc2VudCB0byB1
c2UgYSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9vciBEaXN0aW5jdGl2ZSBQZXJtYW5l
bnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZQotICAgICAgICAvLyAgICAgIGlmIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIGlzICJy
ZXF1aXJlZCIuCi0gICAgICAgIC8vIDMuMi4gSWYgY29uc2VudCB3YXMgZGVuaWVkLCBydW4gdGhl
IGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgLy8gMy4yLjEuIFVwZGF0ZSByZXN0cmljdGlvbnMg
dG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHdoaWNoIGNvbnNlbnQgd2FzIGRlbmll
ZC4KLSAgICAgICAgLy8gMy4yLjEuIFJldHVybiBDb25zZW50RGVuaWVkIGFuZCByZXN0cmljdGlv
bnMuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSBpbXBsaWVkIGNvbnNlbnQgaWYgdGhlIGNvbWJp
bmF0aW9uIG9mIG9yaWdpbiBhbmQgdG9wT3JpZ2luIGFsbG93cyBpdC4KLSAgICAgICAgaWYgKGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gTWVkaWFLZXlz
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkICYmICFvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0
b3BPcmlnaW4pKSB7Ci0gICAgICAgICAgICByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlm
aWVyRGVuaWVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGNhbGxiYWNrKENvbnNlbnRTdGF0dXM6OkNv
bnNlbnREZW5pZWQsIFdURk1vdmUoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSwgV1RGTW92ZShy
ZXN0cmljdGlvbnMpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIDQuIElmIHRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIsIHJldHVybiBJbmZvcm1Vc2VyLgot
ICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmll
ciAhPSBNZWRpYUtleXNSZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkgewotICAgICAgICAgICAgY2Fs
bGJhY2soQ29uc2VudFN0YXR1czo6SW5mb3JtVXNlciwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24pLCBXVEZNb3ZlKHJlc3RyaWN0aW9ucykpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gNS4gSWYgdGhlIHVzZXIgYWdlbnQgcmVxdWlyZXMgaW5m
b3JtaW5nIHRoZSB1c2VyIGZvciB0aGUgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBmb3Igb3Ro
ZXIgcmVhc29ucywgcmV0dXJuIEluZm9ybVVzZXIuCi0gICAgICAgIC8vIE5PVEU6IGFzc3VtZSB0
aGUgdXNlciBhZ2VudCBkb2VzIG5vdCByZXF1aXJlIGluZm9ybWluZyB0aGUgdXNlci4KLQotICAg
ICAgICAvLyA2LiBSZXR1cm4gQWxsb3dlZC4KLSAgICAgICAgY2FsbGJhY2soQ29uc2VudFN0YXR1
czo6QWxsb3dlZCwgV1RGTW92ZShhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pLCBXVEZNb3ZlKHJl
c3RyaWN0aW9ucykpOwotICAgIH0pOworICAgIENETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vz
cyBhY2Nlc3MgPSBvcmlnaW4uY2FuQWNjZXNzTG9jYWxTdG9yYWdlKCZ0b3BPcmlnaW4pID8gQ0RN
UHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzOjpBbGxvd2VkIDogQ0RNUHJpdmF0ZTo6TG9jYWxT
dG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkOworICAgIG1fcHJpdmF0ZS0+Z2V0U3VwcG9ydGVkQ29u
ZmlndXJhdGlvbihXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBhY2Nlc3MsIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKQEAgLTYx
Miw3ICsxMjAsNyBAQCBib29sIENETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAKIGJvb2wg
Q0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5p
dERhdGFUeXBlKGluaXREYXRhVHlwZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZh
dGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggYWU5ODMyNWY2YWQx
MWZmNzlhYzZkMTc0YzZlZGFhOGJkNDVjOWQzMC4uZDU4Y2IwZmVlMzMzMWE4NWE4MjkzZGFmMWRm
N2MwYzQwYTEzY2RmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCkBAIC04MCwyOSArODAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENETShEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIAotICAgIGVudW0gY2xhc3MgQ29uZmln
dXJhdGlvblN0YXR1cyB7Ci0gICAgICAgIFN1cHBvcnRlZCwKLSAgICAgICAgTm90U3VwcG9ydGVk
LAotICAgICAgICBDb25zZW50RGVuaWVkLAotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIENvbnNl
bnRTdGF0dXMgewotICAgICAgICBDb25zZW50RGVuaWVkLAotICAgICAgICBJbmZvcm1Vc2VyLAot
ICAgICAgICBBbGxvd2VkLAotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIEF1ZGlvVmlkZW9UeXBl
IHsKLSAgICAgICAgQXVkaW8sCi0gICAgICAgIFZpZGVvLAotICAgIH07Ci0KLSAgICB2b2lkIGRv
U3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYg
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYsIFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKLSAgICBPcHRpb25hbDxNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24+ICBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJik7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPE1lZGlhS2V5U3lzdGVtTWVkaWFDYXBhYmls
aXR5Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRl
b1R5cGUsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4mIHJlcXVl
c3RlZENhcGFiaWxpdGllcywgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0
aWFsQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJik7Ci0KLSAgICB1c2luZyBD
b25zZW50U3RhdHVzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ29uc2VudFN0YXR1cywg
TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYmKT47
Ci0gICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYm
IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJiYsIENvbnNl
bnRTdGF0dXNDYWxsYmFjayYmKTsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+IG1fcHJpdmF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5k
ZXggZGExOWJiZmYyYzdjZTgyYmVmYTgwMzVhZDc1NDJlM2U5ZjIyYTY5ZC4uMjlmYWI0OTkwNjgy
NTgzMmE1YWRkZDk5YTgwZThmMzRkOGQzMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDAx
LDcgKzQwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291
cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0
IHNlc3Npb24gY2xvc2VkIGJlIGZhbHNlLgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhl
IENETSBpbnN0YW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2
YWx1ZS4KICAgICAgICAgLy8gNi43LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dp
bmcgc3RlcHM6Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vz
c2lvbklkLCBtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29s
IHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRp
b24sIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9u
VHlwZSwgc2FuaXRpemVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wg
c2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3lzdGVtQWNjZXNzLmNwcAppbmRleCAzMGMzNGNkYzQ0ZWI4ZDY3Y2QyMjFlYzg5OWNjMGQ2YmEz
MTcyNGU4Li43ZWI3YjIwMjM1ZTE1YTU5MTAzYmIxOGEwM2VmM2ZhMTJiZDM3YzM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVt
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3lzdGVtQWNjZXNzLmNwcApAQCAtODEsMzQgKzgxLDI5IEBAIHZvaWQgTWVkaWFLZXlT
eXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiAgICAgICAgIH0KIAogICAgICAgICAvLyAyLjYuIEluaXRpYWxpemUgaW5zdGFuY2UgdG8g
ZW5hYmxlLCBkaXNhYmxlIGFuZC9vciBzZWxlY3QgS2V5IFN5c3RlbSBmZWF0dXJlcyB1c2luZyBj
b25maWd1cmF0aW9uLgotICAgICAgICBpZiAoaW5zdGFuY2UtPmluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbigqbV9jb25maWd1cmF0aW9uKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7Ci0gICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIDIuNy4gSWYgdXNlIGRpc3RpbmN0aXZlIGlk
ZW50aWZpZXIgaXMgZmFsc2UsIHByZXZlbnQgaW5zdGFuY2UgZnJvbSB1c2luZyBEaXN0aW5jdGl2
ZSBJZGVudGlmaWVyKHMpIGFuZCBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKS4K
LSAgICAgICAgaWYgKCF1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIgJiYgaW5zdGFuY2UtPnNldERp
c3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGZhbHNlKSA9PSBDRE1JbnN0YW5jZTo6RmFpbGVk
KSB7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIDIuOC4gSWYgcGVyc2lzdGVu
dCBzdGF0ZSBhbGxvd2VkIGlzIGZhbHNlLCBwcmV2ZW50IGluc3RhbmNlIGZyb20gcGVyc2lzdGlu
ZyBhbnkgc3RhdGUgcmVsYXRlZCB0byB0aGUgYXBwbGljYXRpb24gb3Igb3JpZ2luIG9mIHRoaXMg
b2JqZWN0J3MgRG9jdW1lbnQuCi0gICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlQWxsb3dlZCAm
JiBpbnN0YW5jZS0+c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChmYWxzZSkgPT0gQ0RNSW5zdGFu
Y2U6OkZhaWxlZCkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJv
cik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAyLjkuIElm
IGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBh
IG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFt
ZS4KLSAgICAgICAgLy8gMi4xMC4gTGV0IG1lZGlhIGtleXMgYmUgYSBuZXcgTWVkaWFLZXlzIG9i
amVjdCwgYW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKLSAgICAgICAgLy8gMi4xMC4xLiBM
ZXQgdGhlIHVzZSBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHZhbHVlIGJlIHVzZSBkaXN0aW5jdGl2
ZSBpZGVudGlmaWVyLgotICAgICAgICAvLyAyLjEwLjIuIExldCB0aGUgcGVyc2lzdGVudCBzdGF0
ZSBhbGxvd2VkIHZhbHVlIGJlIHBlcnNpc3RlbnQgc3RhdGUgYWxsb3dlZC4KLSAgICAgICAgLy8g
Mi4xMC4zLiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJlIHRoZSB2
YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KLSAgICAgICAgLy8g
Mi4xMC40LiBMZXQgdGhlIGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBiZSB0aGlzIG9iamVjdCdz
IGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZS4KLSAgICAgICAgLy8gMi4xMC41LiBMZXQgdGhlIGNk
bSBpbnN0YW5jZSB2YWx1ZSBiZSBpbnN0YW5jZS4KLSAgICAgICAgYXV0byBtZWRpYUtleXMgPSBN
ZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQsIG1fY29uZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBtX2ltcGxlbWVudGF0aW9u
LmNvcHlSZWYoKSwgaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0KLSAgICAgICAgLy8gMi4x
MS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KLSAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1lZGlhS2V5cz4+KFdURk1vdmUobWVk
aWFLZXlzKSk7CisgICAgICAgIGF1dG8gYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzID0gdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyID8gQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVu
dGlmaWVyczo6WWVzIDogQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVyczo6
Tm87CisgICAgICAgIGF1dG8gYWxsb3dQZXJzaXN0ZW50U3RhdGUgPSBwZXJzaXN0ZW50U3RhdGVB
bGxvd2VkID8gQ0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOjpZZXMgOiBDRE1JbnN0
YW5jZTo6QWxsb3dQZXJzaXN0ZW50U3RhdGU6Ok5vOworCisgICAgICAgIGluc3RhbmNlLT5pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oKm1fY29uZmlndXJhdGlvbiwgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgW3Nlc3Npb25UeXBlcyA9IG1fY29u
ZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBpbXBsZW1lbnRhdGlvbiA9IG1faW1wbGVtZW50YXRp
b24uY29weVJlZigpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQsIGluc3RhbmNlID0gaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChhdXRvIHN1Y2Nlc3NWYWx1ZSkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoc3VjY2Vzc1ZhbHVlID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIDIuOS4gSWYgYW55IG9mIHRo
ZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4
Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgorICAgICAg
ICAgICAgLy8gMi4xMC4gTGV0IG1lZGlhIGtleXMgYmUgYSBuZXcgTWVkaWFLZXlzIG9iamVjdCwg
YW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgIC8vIDIuMTAuMS4gTGV0
IHRoZSB1c2UgZGlzdGluY3RpdmUgaWRlbnRpZmllciB2YWx1ZSBiZSB1c2UgZGlzdGluY3RpdmUg
aWRlbnRpZmllci4KKyAgICAgICAgICAgIC8vIDIuMTAuMi4gTGV0IHRoZSBwZXJzaXN0ZW50IHN0
YXRlIGFsbG93ZWQgdmFsdWUgYmUgcGVyc2lzdGVudCBzdGF0ZSBhbGxvd2VkLgorICAgICAgICAg
ICAgLy8gMi4xMC4zLiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJl
IHRoZSB2YWx1ZSBvZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KKyAgICAg
ICAgICAgIC8vIDIuMTAuNC4gTGV0IHRoZSBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgYmUgdGhp
cyBvYmplY3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUuCisgICAgICAgICAgICAvLyAyLjEw
LjUuIExldCB0aGUgY2RtIGluc3RhbmNlIHZhbHVlIGJlIGluc3RhbmNlLgorICAgICAgICAgICAg
YXV0byBtZWRpYUtleXMgPSBNZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIHNlc3Npb25UeXBlcywgV1RGTW92ZShpbXBsZW1l
bnRhdGlvbiksIFdURk1vdmUoaW5zdGFuY2UpKTsKKworICAgICAgICAgICAgLy8gMi4xMS4gUmVz
b2x2ZSBwcm9taXNlIHdpdGggbWVkaWEga2V5cy4KKyAgICAgICAgICAgIHByb21pc2UtPnJlc29s
dmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxNZWRpYUtleXM+PihXVEZNb3ZlKG1lZGlh
S2V5cykpOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIC8vIDMuIFJldHVybiBwcm9taXNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwCmluZGV4IGM2MjRlNTMyOWU1OTY4ODJmMGQ0MWY1NzQ1ODg1ZmMyM2QzOWE2ZTQuLjE4
N2Q1OWRlZjM0MDU1ZjhjYzVjZDU5YmQ3ZjBhYTc1YTVlOTY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IE1lZGlhS2V5czo6Y3Jl
YXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0K
IAotdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5cy1zZXRzZXJ2ZXJjZXJ0aWZpY2F0ZQogICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CkBAIC0xMDYsMTYgKzEwNiwx
NCBAQCB2b2lkIE1lZGlhS2V5czo6c2V0U2VydmVyQ2VydGlmaWNhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgQnVmZgogICAgIC8vIDQuIExldCBwcm9taXNlIGJlIGEg
bmV3IHByb21pc2UuCiAgICAgLy8gNS4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxs
ZWw6CiAKLSAgICBjb250ZXh0LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgY2VydGlmaWNhdGUgPSBXVEZNb3ZlKGNlcnRpZmljYXRlKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgewotICAgICAgICAvLyA1LjEuIFVzZSB0
aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB0byBwcm9jZXNzIGNlcnRpZmljYXRlLgotICAgICAg
ICBpZiAobV9pbnN0YW5jZS0+c2V0U2VydmVyQ2VydGlmaWNhdGUoV1RGTW92ZShjZXJ0aWZpY2F0
ZSkpID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgIC8vIDUuMi4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhj
ZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCisgICAgLy8g
NS4xLiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZpY2F0
ZS4KKyAgICBtX2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmlj
YXRlKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byBzdWNjZXNzKSB7CisgICAg
ICAgIC8vIDUuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNl
IHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVy
cm9yIG5hbWUuCisgICAgICAgIC8vIDUuMS4gW0Vsc2UsXSBSZXNvbHZlIHByb21pc2Ugd2l0aCB0
cnVlLgorICAgICAgICBpZiAoc3VjY2VzcyA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKQogICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDUuMS4gUmVzb2x2ZSBwcm9taXNlIHdpdGgg
dHJ1ZS4KLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsK
ICAgICB9KTsKIAogICAgIC8vIDYuIFJldHVybiBwcm9taXNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggMWUyZTFhMjc3MTM0
MGU2ZGYxZTBhOThhNTQyY2NkNWY4MmFlMjhkZi4uYjZiNzJhMjcyMjIyYjVjOWJkYzIyNTQwNjZi
ZThkZTI5MWJhNjg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB+TWVkaWFL
ZXlzKCk7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9uPj4gY3JlYXRlU2Vz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFLZXlTZXNzaW9uVHlwZSk7Ci0gICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
QnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
KTsKIAogICAgIHZvaWQgYXR0YWNoQ0RNQ2xpZW50KENETUNsaWVudCYpOwogICAgIHZvaWQgZGV0
YWNoQ0RNQ2xpZW50KENETUNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCmluZGV4IGQ2ZjA0Y2RkYmU1MGQzMTQ4Mzk1
ZjY1ZWM2YmY5MDU3ZmZiZjRkY2UuLmRiMWIwNTM0M2JjMjEzOGM5YjZiYzUyMjVmNzkyOTczMzZm
ZGIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5pZGwKQEAgLTMzLDUgKzMzLDUgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgTWVkaWFLZXlzIHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVT
ZXNzaW9uKG9wdGlvbmFsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUgPSAidGVtcG9y
YXJ5Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8Ym9v
bD4gc2V0U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNlcnZlckNlcnRpZmljYXRlKTsK
KyAgICBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2
ZXJDZXJ0aWZpY2F0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZjQ1YzUxOTcxNWI1YmY4OGEz
MTEzMjMxNzlmYzNhNGJlNmVhYjA2Li5iNThhODFhYWMzZjQ0YWZiZjJkMmQ5YjRhNWFmYjg1MDM2
N2Q3YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTgyMyw2ICsxODIzLDcgQEAgcGxhdGZvcm0vYXVk
aW8vVmVjdG9yTWF0aC5jcHAKIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcAogCiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAorcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5jcHAKIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAogCiBw
bGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5N2UwMGRiMDNhZDBk
NWI0N2NmMmI0YWE4MTQyMjYyYTIwMmRhMWMyLi5iMzE2OTliYWI2OTkzMTk2YTI2ODBkNDE1OTRh
ODFhYjk0MTY0ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC00MDY2LDYgKzQwNjYsMTkgQEAKIAkJQ0QzQTQ5NUYxN0E5RDAx
QjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1NjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2Uu
aCAqLzsgfTsKIAkJQ0QzQTQ5NjIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5
RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFC
MDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1
ZmZlckxpc3QuaCAqLzsgfTsKKwkJQ0QzQ0UwRjgyNDAxQUFEOTAwNEJBMDFEIC8qIENETUVuY3J5
cHRpb25TY2hlbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERjc1NjlCMjE1QzIzQTQwMEVGQ0I1MCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRjky
NDAxQUFEOTAwNEJBMDFEIC8qIENETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQyMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0
b3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QzQ0UwRkEyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUg
LyogQ0RNSW5zdGFuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlDRDNDRTBGQjI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNSW5zdGFuY2VTZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlEMzc1
QTIxNTE2M0U0MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJB
MDFEIC8qIENETUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZE
MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRDFGNzFDQjY5MDBG
NTI1QzUgLyogQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMEZFMjQwMUFBRDkwMDRCQTAxRCAv
KiBDRE1NZWRpYUNhcGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEOTRBNUQzMUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNhcGFiaWxp
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
RDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUQ2MUY3MUNCNkQwMEY1MjVD
NSAvKiBDRE1NZXNzYWdlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDRjFG
NzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEM0NFMTAxMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Q
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5
NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1IC8qIENETVByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzQ0UxMDIyNDAxQUFEQTAwNEJBMDFEIC8q
IENETVJlcXVpcmVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVxdWlyZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDNDRTEwMzI0
MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVzdHJpY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEMDFGNzFDQjZCMDBGNTI1QzUgLyogQ0RN
UmVzdHJpY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQ0QzQ0UxMDQyNDAxQUFEQTAwNEJBMDFEIC8qIENETVNlc3Npb25UeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVENTFGNzFD
QjZEMDBGNTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1h
Z2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QzRTIxREIyMTgzM0Y1MTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0
aWVzQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRDNFMjUxQzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAv
KiBHcmlkQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNEM0UyNTI0MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNF
MjUyMjE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oICovOyB9
OwpAQCAtNDE5Nyw3ICs0MjEwLDcgQEAKIAkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1v
Y2tUcmFja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERjJCMDBGMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggKi87IH07CiAJCUNERjRC
NzEyMUUwMDg3QUUwMEUyMzVBMiAvKiBMZWdhY3lDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERFMDJFOTE4QjNERkM3MDBDRjdGRjEg
LyogTGVnYWN5Q0RNU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MTMxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5jcHAgKi87IH07Ci0JCUNERjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAv
KiBDRE0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RjRCNzE0MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCAqLzsgfTsKKwkJQ0RGNEI3MTYxRTAwQjdF
NTAwRTIzNUEyIC8qIENETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGNEI3MTQxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjRCNzE4MUUwMUNCOTEwMEUy
MzVBMiAvKiBNZWRpYUtleXNSZXN0cmljdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzE3MUUwMUNCOTEwMEUyMzVBMiAvKiBNZWRpYUtl
eXNSZXN0cmljdGlvbnMuaCAqLzsgfTsKIAkJQ0RGNEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1l
ZGlhS2V5U2Vzc2lvblR5cGUuaWRsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RGNEI3MTkxRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5
cGUuaWRsICovOyB9OwogCQlDREY0QjcxRTFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNl
c3Npb25UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREY0QjcxQzFFMDFFMTFBMDBFMjM1QTIgLyogSlNNZWRpYUtleVNlc3Npb25UeXBlLmggKi87
IH07CkBAIC0xMzc3MCw2ICsxMzc4Myw3IEBACiAJCUNEM0E0OTVCMTdBOUQwMUIwMDI3NEU0MiAv
KiBTb3VyY2VCdWZmZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNvdXJjZUJ1ZmZlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VCdWZmZXJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEM0E0OTVEMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJM
aXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VCdWZmZXJMaXN0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzQ0UxMUMyNDA0NTFBRjAwNEJBMDFEIC8qIENE
TVByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNUHJpdmF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyMURCMjE4MzNGNTEwMEU2NkY1NSAvKiBJbWFnZUJ1
ZmZlclV0aWxpdGllc0NHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2
IC8qIEdyaWRBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyaWRBcmVh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyNTIxMTgwNDZCQ0QwMEUyN0Y1
NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjYyOTAsNiArMjYzMDQsNyBAQAogCQkJCUNEOTRBNUNEMUY3
MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi8sCiAJCQkJQ0Q5
NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICovLAogCQkJCUNE
OTRBNUQ2MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1NZXNzYWdlVHlwZS5oICovLAorCQkJCUNEM0NF
MTFDMjQwNDUxQUYwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmNwcCAqLywKIAkJCQlDRDk0QTVDRjFG
NzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovLAogCQkJCUNEOTRBNUNGMUY3MUNCNjEw
MEY1MjVENSAvKiBDRE1Qcm94eS5jcHAgKi8sCiAJCQkJQ0Q5NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1
IC8qIENETVByb3h5LmggKi8sCkBAIC0yOTI2Niw5ICsyOTI4MSwyMiBAQAogCQkJCTY1NTBCNjlF
MDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOTRB
NURFMUY3MkY1N0IwMEY1MjVDNSAvKiBDRE1DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
M0NFMEY4MjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1FbmNyeXB0aW9uU2NoZW1lLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDRDNDRTBGOTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RCNzA0NUExRjc0NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQbGF5U3Ry
ZWFtaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGQTI0MDFBQUQ5MDA0QkEwMUQgLyog
Q0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAx
RCAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMEZDMjQw
MUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NF
MEZEMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmls
aXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RN
TWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAx
RCAvKiBDRE1Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMxODYyMzE5OUYxRTJBMDAz
MEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0QzQ0UxMDEyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByb3h5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRDNDRTEwMjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUmVxdWlyZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEM0NFMTAzMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1SZXN0cmljdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNDRTEwNDI0MDFB
QURBMDA0QkEwMUQgLyogQ0RNU2Vzc2lvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVGQTkw
NENBMTc4RTYxRjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTkxQjhGMEI1MjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZUluZm9CYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lv
bkRhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggOTY5YzUwZDgzMDYxOGE4NzQ5NWI1ZGQxMjkwM2RjNjNlYTQ4YzU3MC4uMjE1
ODQ5YWI5YzgwM2QwMWQzYTMzNjQyNzdlZmQ4MjJmNmM0Mzk2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNTYxLDE1ICsyNTYxLDI1IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0
ZSkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRp
bnVlQWZ0ZXJOZWVkS2V5KCkKK3sKKyAgICBpZiAoIW1fcGxheWVyKQorICAgICAgICByZXR1cm47
CisgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVk
a2V5IikgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZW5jcnlw
dGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRvY3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2VuRW5j
cnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmsoKSk7CisgICAgbV9wbGF5ZXItPnNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkQ29udGludWUpOworfQorI2VuZGlmCisKIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYktpdE1l
ZGlhS2V5cyA/IG1fd2ViS2l0TWVkaWFLZXlzLT5jYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkgOiBu
dWxscHRyOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVk
KFVpbnQ4QXJyYXkqIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFi
bGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKQEAgLTI1ODAsMTQgKzI1OTAsMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKICAgICAgICAgKSB7CiAg
ICAgICAgIG1fZXJyb3IgPSBNZWRpYUVycm9yOjpjcmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJS
X0VOQ1JZUFRFRCk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVycm9yRXZl
bnQpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVu
dCkpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdApAQCAtNTEyOSw2ICs1
MTM3LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKCkK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHNjaGVkdWxlVXBkYXRl
TWVkaWFTdGF0ZSgpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB1cGRhdGVTaG91bGRDb250aW51ZUFm
dGVyTmVlZEtleSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJFbmdpbmVVcGRhdGVkKCkKQEAgLTU4OTEsNiArNTkwMywxMSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogCiBib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMm
IG9wdGlvbnMpCiB7CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Vi
a2l0bmVlZGtleUV2ZW50KQorICAgICAgICB1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtl
eSgpOworI2VuZGlmCisKICAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRw
bGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9u
cyk7CiAKQEAgLTU5MTIsNiArNTkyOSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaQogCiBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRp
b25zJiBvcHRpb25zKQogeworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
LndlYmtpdG5lZWRrZXlFdmVudCkKKyAgICAgICAgdXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5l
ZWRLZXkoKTsKKyNlbmRpZgorCiAgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Vi
a2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVy
biBOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDVkZTBkMTExODUx
YWM3ZmE4YzNlOTVkYjZlZWQ5YWYzMWNmNTE1OGQuLmY2OTIwZjY1NDc2ZjI4ZDdlN2IxOTRlNTkx
ZTJjNTk1MmY0NGU5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC02ODAsNyArNjgwLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlhUGxh
eWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5
TmVlZGVkKFVpbnQ4QXJyYXkqKSBmaW5hbDsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApAQCAtNjk0LDYgKzY5
NCwxMCBAQCBwcml2YXRlOgogICAgIC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0
ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCisKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICB2b2lkIHVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KCk7CisjZW5kaWYKICAg
ICAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgbWVkaWFQ
bGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29sKSBmaW5hbDsK
QEAgLTExNjYsNiArMTE3MCw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFQcm92aWRlciBtX21lZGlh
UHJvdmlkZXI7CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBib29s
IG1faGFzTmVlZGtleUxpc3RlbmVyIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFL
ZXlzPiBtX3dlYktpdE1lZGlhS2V5czsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVN0cmF0ZWd5LmgKaW5kZXggNWVkMDRjNGNjOGU4ZWNjODQ0OGZlMDUzYTRiNjZiYzY3YTgx
MTdkZC4uNjBhNTg0N2M4Y2VjMTBiNzliNzQ5YTZmYWY4NTAzZDE2YTE5OWI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBBdWRpb0lPQ2Fs
bGJhY2s7CitjbGFzcyBDRE1GYWN0b3J5OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVN0
cmF0ZWd5IHsKIHB1YmxpYzoKQEAgLTM4LDYgKzM5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24o
CiAgICAgICAgIEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSA9IDA7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8
Q0RNRmFjdG9yeSo+JikgPSAwOworI2VuZGlmCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TWVk
aWFTdHJhdGVneSgpID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1FbmNyeXB0aW9uU2NoZW1lLmgKaW5kZXgg
NzRiM2FhN2Q3YmRiMDBhMjY3NTZhMDIzNjU2NmYzNjg4MTJiY2UzYi4uMWE3YTU2MjdkYmNhNjQx
YjQ5Y2U3ZTU2ZTY3MTZlMzE4YTk4OGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRW5jcnlwdGlvblNjaGVtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUVuY3J5cHRpb25TY2hlbWUuaApAQCAt
MjcsMTMgKzI3LDI3IEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENE
TUVuY3J5cHRpb25TY2hlbWUgeworZW51bSBjbGFzcyBDRE1FbmNyeXB0aW9uU2NoZW1lIDogdWlu
dDhfdCB7CiAgICAgY2VuYywKICAgICBjYmNzLAogfTsKIAogfQogCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2No
ZW1lPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNRW5jcnlwdGlvblNjaGVtZSwKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVt
ZTo6Y2VuYywKKyAgICAgICAgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZTo6Y2JjcworICAg
ID47Cit9OworCit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAppbmRleCA0YmI1OTlmYTgwNzNkM2I4NTVk
ODQ2MTc4NjE5ZGJjMDI2MTA1OGYyLi45OTJkNDlhZWVlZTVhNWYxZjQxMjVlNmYwYjMyMjI3Njkw
MjIxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmNwcApAQCAtMzAsNiArMzAsOCBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MCw3ICs0Miw5IEBAIFZl
Y3RvcjxDRE1GYWN0b3J5Kj4mIENETUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8Q0RNRmFjdG9yeSo+PiBmYWN0b3JpZXM7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25j
ZSwgWyZdIHsgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOyB9KTsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlLCBbJl0geworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bWVkaWFTdHJhdGVneSgpLnJlZ2lzdGVyQ0RNRmFjdG9yaWVzKGZhY3Rvcmllcyk7CisgICAgfSk7
CiAKICAgICByZXR1cm4gZmFjdG9yaWVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDQ0ZWFhYjA3ZTc1N2FmZTU4
YjUzNjFmNWFmMTJiMjQ3NzZhMDM1MmUuLjUyNWM4NGVjYmU3OTFmNDBiNTQ3ZmI3ZmFmZGU5ZDAz
YmE4MTBiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgLy8gUGxh
dGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdGhhdCdzIGNhbGxlZCB3aGVuIHRoZSBsaXN0IG9mCiAg
ICAgLy8gcmVnaXN0ZXJlZCBDRE1GYWN0b3J5IG9iamVjdHMgaXMgcXVlcmllZCBmb3IgdGhlIGZp
cnN0IHRpbWUuCi0gICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0
b3I8Q0RNRmFjdG9yeSo+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcGxhdGZv
cm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+Jik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCA4ZjlmM2ViODc0NWMzNTIwMjgzMTRjNjA2ZDI4
OWQ0ZTNmNzFhMDQ4Li43MzRjOTM1MDc1NmQ3OWY3NGQ5MDY1ZTI0MDFjMmVlOGFiYzEzMDc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDRE1NZXNzYWdlVHlwZS5oIgog
I2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CkBAIC01MiwyMyArNTMsMzMgQEAgcHVibGljOgogICAgICAgICBNb2NrLAogICAgICAg
ICBDbGVhcktleSwKICAgICAgICAgRmFpclBsYXlTdHJlYW1pbmcsCisgICAgICAgIFJlbW90ZSwK
ICAgICB9OwogICAgIHZpcnR1YWwgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlw
ZSgpIGNvbnN0ID0gMDsKIAotICAgIGVudW0gU3VjY2Vzc1ZhbHVlIHsKKyAgICBlbnVtIFN1Y2Nl
c3NWYWx1ZSA6IGJvb2wgewogICAgICAgICBGYWlsZWQsCiAgICAgICAgIFN1Y2NlZWRlZCwKICAg
ICB9OworICAgIHVzaW5nIFN1Y2Nlc3NDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3VjY2Vzc1ZhbHVlKT47CiAKLSAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChi
b29sKSA9IDA7Ci0gICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxs
b3dlZChib29sKSA9IDA7Ci0gICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwotICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVl
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgPSAwOworICAgIGVudW0gY2xhc3Mg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAg
ICBZZXMsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQWxsb3dQZXJzaXN0ZW50U3RhdGUgOiBi
b29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcywKKyAgICB9OworCisgICAgdmlydHVhbCB2
b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CiAKLSAg
ICBlbnVtIGNsYXNzIEhEQ1BTdGF0dXMgeworICAgIGVudW0gY2xhc3MgSERDUFN0YXR1cyA6IHVp
bnQ4X3QgewogICAgICAgICBVbmtub3duLAogICAgICAgICBWYWxpZCwKICAgICAgICAgT3V0cHV0
UmVzdHJpY3RlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggODcyNWEzMWQ4YmIzZTIyYmUy
MWRmMDdlMzIwYjM2ZTc1MDM4NmUxYS4uZDQ2NGI3NGQxYzcyMDJhOWEzMzlkZmY2NWQwNmUwODIw
ODk2OWRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTcyLDkgKzcyLDkgQEAgcHVibGlj
OgogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6
S2V5U3RhdHVzVmVjdG9yOwogICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8
S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdl
ZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKLSAgICBlbnVtIGNs
YXNzIFNlc3Npb25Mb2FkRmFpbHVyZSB7CisgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1
cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKICAgICAgICAgTm9TZXNzaW9uRGF0YSwKICAg
ICAgICAgTWlzbWF0Y2hlZFNlc3Npb25UeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3RhdHVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAppbmRleCBhZDk2OTYyMzYwNGNk
MTQ3MDU1YTI3YjczMzZmNjc3YzBiM2FmMmM0Li5jYzVlNzE4NmY3NGVmOGU4MTRjYjNhZjc1NWUx
NjFhNjVjMjA4ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1LZXlTdGF0dXMuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgQ0RNS2V5U3RhdHVzIHsKK2VudW0gY2xhc3MgQ0RN
S2V5U3RhdHVzIDogdWludDhfdCB7CiAgICAgVXNhYmxlLAogICAgIEV4cGlyZWQsCiAgICAgUmVs
ZWFzZWQsCkBAIC00NCw0ICs0NiwyMCBAQCBlbnVtIGNsYXNzIENETUtleVN0YXR1cyB7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXMsCisgICAgV2ViQ29yZTo6
Q0RNS2V5U3RhdHVzOjpVc2FibGUsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpFeHBpcmVk
LAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6UmVsZWFzZWQsCisgICAgV2ViQ29yZTo6Q0RN
S2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6OkNETUtleVN0YXR1czo6
T3V0cHV0RG93bnNjYWxlZCwKKyAgICBXZWJDb3JlOjpDRE1LZXlTdGF0dXM6OlN0YXR1c1BlbmRp
bmcsCisgICAgV2ViQ29yZTo6Q0RNS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yCisgICAgPjsKK307
CisKK30KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDYxMmQ2NDVmYWE1MjQ4ZjcxZjFjMTU2N2Y0NTA3ZTg5
ZjNiMzFjZTUuLjg1MjU4N2NlZGEwNTEyMTQ0Nzk1MjJmYWMzOGU0YzBmYjk4NzQ5ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTQ4LDYgKzQ4LDY3IEBAIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIHsKICAgICBDRE1SZXF1aXJlbWVudCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXIgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBDRE1SZXF1
aXJlbWVudCBwZXJzaXN0ZW50U3RhdGUgeyBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKICAg
ICBWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+IHNlc3Npb25UeXBlczsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CisgICAgICAgIGVuY29kZXIgPDwgaW5pdERh
dGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAg
ZW5jb2RlciA8PCB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlOworICAg
ICAgICBlbmNvZGVyIDw8IHNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGxhYmVsOworICAgICAgICBkZWNvZGVyID4+IGxhYmVsOworICAgICAgICBpZiAoIWxhYmVs
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0
YVR5cGVzOworICAgICAgICBpZiAoIWluaXREYXRhVHlwZXMpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxp
dHk+PiBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgZGVjb2RlciA+PiBhdWRpb0NhcGFiaWxp
dGllczsKKyAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJp
bGl0eT4+IHZpZGVvQ2FwYWJpbGl0aWVzOworICAgICAgICBkZWNvZGVyID4+IHZpZGVvQ2FwYWJp
bGl0aWVzOworICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4gZGlz
dGluY3RpdmVJZGVudGlmaWVyOworICAgICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRlbnRp
ZmllcjsKKyAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXIpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAKKyAgICAgICAgT3B0aW9uYWw8Q0RNUmVxdWly
ZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3Rh
dGU7CisgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+PiBz
ZXNzaW9uVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc2Vzc2lvblR5cGVzOworICAgICAgICBp
ZiAoIXNlc3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCisgICAgICAgICAg
ICBXVEZNb3ZlKCppbml0RGF0YVR5cGVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmF1ZGlvQ2Fw
YWJpbGl0aWVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnZpZGVvQ2FwYWJpbGl0aWVzKSwKKyAg
ICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAqcGVyc2lzdGVu
dFN0YXRlLAorICAgICAgICAgICAgV1RGTW92ZSgqc2Vzc2lvblR5cGVzKSwKKyAgICAgICAgfX07
CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHku
aAppbmRleCA5MDFiNTRmZjA1MDhlZGE5YmJiODhjNWMxZGI4NjUzOGRjZTE0MjgyLi5mODRhMGQx
MmFiNGNkNTIwZTNmMGUwNGQ2NGViZWZjNjMxNjI1ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHku
aApAQCAtMzksNiArMzksMzkgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAgU3Ry
aW5nIGNvbnRlbnRUeXBlOwogICAgIFN0cmluZyByb2J1c3RuZXNzOwogICAgIE9wdGlvbmFsPENE
TUVuY3J5cHRpb25TY2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAg
eworICAgICAgICBlbmNvZGVyIDw8IGNvbnRlbnRUeXBlOworICAgICAgICBlbmNvZGVyIDw8IHJv
YnVzdG5lc3M7CisgICAgICAgIGVuY29kZXIgPDwgZW5jcnlwdGlvblNjaGVtZTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNTWVk
aWFDYXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gY29udGVudFR5
cGU7CisgICAgICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcm9idXN0bmVzczsKKyAgICAgICAg
ZGVjb2RlciA+PiByb2J1c3RuZXNzOworICAgICAgICBpZiAoIXJvYnVzdG5lc3MpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPENE
TUVuY3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBkZWNvZGVyID4+
IGVuY3J5cHRpb25TY2hlbWU7CisgICAgICAgIGlmICghZW5jcnlwdGlvblNjaGVtZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAg
ICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCisgICAgICAgICAgICBXVEZNb3ZlKCpyb2J1c3Ru
ZXNzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmVuY3J5cHRpb25TY2hlbWUpLAorICAgICAgICB9
fTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVzc2FnZVR5cGUuaAppbmRl
eCBlNWY3OTZhOWUwZTA3NTFhYTAyNzgyYjliNjY2Y2EyMzFlZjdlNjA5Li45NWJmMjhjMmFhOTRh
M2RhNTA0NWI1ZWMwMGYzNThjZDI2ZDk1Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZXNzYWdlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lc3NhZ2VUeXBlLmgKQEAgLTMwLDkgKzMw
LDExIEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIENETU1lc3NhZ2VU
eXBlIHsKK2VudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBMaWNlbnNl
UmVxdWVzdCwKICAgICBMaWNlbnNlUmVuZXdhbCwKICAgICBMaWNlbnNlUmVsZWFzZSwKQEAgLTQx
LDQgKzQzLDE4IEBAIGVudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGUgewogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsCisgICAgICAgIFdlYkNvcmU6
OkNETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6Q0RNTWVz
c2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLAorICAgICAgICBXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZTo6TGljZW5zZVJlbGVhc2UsCisgICAgICAgIFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlOjpJbmRp
dmlkdWFsaXphdGlvblJlcXVlc3QKKyAgICA+OworfTsKKworfQorCiAjZW5kaWYgLy8gRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY0YmE0OWU0MDYwYWZkNzll
OGMyMDIwNDEyOGQ3YzQ0YjlhYmY1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCkBAIC0wLDAgKzEsNTIwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNETVByaXZhdGUu
aCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiQ0RNTWVkaWFDYXBhYmlsaXR5LmgiCisjaW5j
bHVkZSAiQ0RNUmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlICJDRE1SZXN0cmljdGlvbnMuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NETVByaXZhdGU6OkNETVByaXZhdGUoKSA9IGRlZmF1bHQ7
CitDRE1Qcml2YXRlOjp+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKKwordm9pZCBDRE1Qcml2YXRl
OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBj
YW5kaWRhdGVDb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0
ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNvbmZpZ3VyYXRpb24K
KyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAgLy8gMy4x
LjEuMSBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24KKyAgICAvLyBHaXZlbiBhIEtleSBTeXN0
ZW1zIGltcGxlbWVudGF0aW9uIGltcGxlbWVudGF0aW9uLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLCBhbmQgb3JpZ2luLAorICAgIC8vIHRoaXMgYWxn
b3JpdGhtIHJldHVybnMgYSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBvciBOb3RTdXBwb3J0ZWQg
YXMgYXBwcm9wcmlhdGUuCisKKyAgICAvLyAxLiBMZXQgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24g
YmUgQ29uc2VudERlbmllZC4KKyAgICAvLyAyLiBJbml0aWFsaXplIHJlc3RyaWN0aW9ucyB0byBp
bmRpY2F0ZSB0aGF0IG5vIGNvbmZpZ3VyYXRpb25zIGhhdmUgaGFkIHVzZXIgY29uc2VudCBkZW5p
ZWQuCisgICAgQ0RNUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyB7IH07CisgICAgZG9TdXBwb3J0
ZWRDb25maWd1cmF0aW9uU3RlcChXVEZNb3ZlKGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24pLCBXVEZN
b3ZlKHJlc3RyaWN0aW9ucyksIGFjY2VzcywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lk
IENETVByaXZhdGU6OmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJl
c3RyaWN0aW9ucywgTG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgU3VwcG9ydGVkQ29uZmlndXJh
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uCisgICAgLy8gVzND
IEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYsIGN0ZC4KKworICAgIC8vIDMuMS4xLjEg
R2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uCisgICAgLy8gMy4gUmVwZWF0IHRoZSBmb2xsb3dp
bmcgc3RlcCB3aGlsZSBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBpcyBDb25zZW50RGVuaWVkOgor
ICAgIC8vIDMuMS4gTGV0IHN1cHBvcnRlZCBjb25maWd1cmF0aW9uIGFuZCwgaWYgcHJvdmlkZWQs
IHJlc3RyaWN0aW9ucyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUKKyAgICAvLyBHZXQg
U3VwcG9ydGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNlbnQgYWxnb3JpdGhtIHdpdGggaW1wbGVt
ZW50YXRpb24sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uLAorICAgIC8vIHJlc3RyaWN0aW9ucyBh
bmQgb3JpZ2luLgorICAgIGF1dG8gb3B0aW9uYWxDb25maWd1cmF0aW9uID0gZ2V0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbihjYW5kaWRhdGVDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMsIGFjY2Vz
cyk7CisgICAgaWYgKCFvcHRpb25hbENvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29uc2Vu
dENhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBhY2Nlc3NdIChDb25zZW50U3RhdHVzIHN0YXR1cywgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJlc3Ry
aWN0aW9ucykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgLy8gMy4xLjEuMiBHZXQgU3VwcG9ydGVkIENvbmZpZ3VyYXRpb24gYW5kIENvbnNl
bnQsIGN0ZC4KKyAgICAgICAgLy8gMjIuIExldCBjb25zZW50IHN0YXR1cyBhbmQgdXBkYXRlZCBy
ZXN0cmljdGlvbnMgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBHZXQgQ29uc2VudCBTdGF0
dXMgYWxnb3JpdGhtIG9uIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sCisgICAgICAgIC8vICAg
ICByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiBhbmQgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIHZh
bHVlIG9mIGNvbnNlbnQgc3RhdHVzIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorICAgICAgICBz
d2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIENvbnNlbnRTdGF0dXM6OkNvbnNlbnREZW5p
ZWQ6CisgICAgICAgICAgICAvLyDihrMgQ29uc2VudERlbmllZDoKKyAgICAgICAgICAgIC8vICAg
IFJldHVybiBDb25zZW50RGVuaWVkIGFuZCB1cGRhdGVkIHJlc3RyaWN0aW9ucy4KKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5kb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25TdGVwKFdURk1vdmUoY29uZmln
dXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBDb25zZW50U3RhdHVzOjpJ
bmZvcm1Vc2VyOgorICAgICAgICAgICAgLy8g4oazIEluZm9ybVVzZXIKKyAgICAgICAgICAgIC8v
ICAgIEluZm9ybSB0aGUgdXNlciB0aGF0IGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgaW4g
dXNlIGluIHRoZSBvcmlnaW4gaW5jbHVkaW5nLCBzcGVjaWZpY2FsbHksIHRoZSBpbmZvcm1hdGlv
biB0aGF0CisgICAgICAgICAgICAvLyAgICBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGFuZC9v
ciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRpZmllcihzKSBhcyBhcHByb3ByaWF0ZSB3aWxs
IGJlIHVzZWQgaWYgdGhlCisgICAgICAgICAgICAvLyAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXIg
bWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgInJlcXVpcmVkIi4gQ29udGlu
dWUgdG8gdGhlIG5leHQgc3RlcC4KKyAgICAgICAgICAgIC8vIE5PVEU6IEltcGxlbWVudC4KKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ29uc2VudFN0YXR1czo6QWxsb3dlZDoK
KyAgICAgICAgICAgIC8vIOKGsyBBbGxvd2VkOgorICAgICAgICAgICAgLy8gQ29udGludWUgdG8g
dGhlIG5leHQgc3RlcC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8v
IDIzLiBSZXR1cm4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgfTsKKyAgICBnZXRDb25zZW50U3RhdHVzKFdU
Rk1vdmUob3B0aW9uYWxDb25maWd1cmF0aW9uLnZhbHVlKCkpLCBXVEZNb3ZlKHJlc3RyaWN0aW9u
cyksIGFjY2VzcywgV1RGTW92ZShjb25zZW50Q2FsbGJhY2spKTsKK30KKworYm9vbCBDRE1Qcml2
YXRlOjppc1BlcnNpc3RlbnRUeXBlKENETVNlc3Npb25UeXBlIHNlc3Npb25UeXBlKQoreworICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2lzLXBlcnNpc3RlbnQt
c2Vzc2lvbi10eXBlCisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYK
KworICAgIC8vIDUuMS4xLiBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8KKyAgICAvLyAxLiBM
ZXQgdGhlIHNlc3Npb24gdHlwZSBiZSB0aGUgc3BlY2lmaWVkIENETVNlc3Npb25UeXBlIHZhbHVl
LgorICAgIC8vIDIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSB2YWx1ZSBvZiBzZXNzaW9uIHR5
cGUgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgc3dpdGNoIChzZXNzaW9uVHlwZSkgewor
ICAgIGNhc2UgQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeToKKyAgICAgICAgLy8g4oazICJ0ZW1w
b3JhcnkiCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQ
ZXJzaXN0ZW50TGljZW5zZToKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNh
Z2VSZWNvcmQ6CisgICAgICAgIC8vIOKGsyAicGVyc2lzdGVudC1saWNlbnNlIgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETVBy
aXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmlj
dGlvbnMsIExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MpCit7CisgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFu
ZC1jb25zZW50CisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKwor
ICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50Cisg
ICAgLy8gR2l2ZW4gYSBLZXkgU3lzdGVtcyBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbiwg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiwKKyAgICAv
LyByZXN0cmljdGlvbnMgYW5kIG9yaWdpbiwgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHN1cHBv
cnRlZCBjb25maWd1cmF0aW9uLCBOb3RTdXBwb3J0ZWQsIG9yIENvbnNlbnREZW5pZWQKKyAgICAv
LyBhcyBhcHByb3ByaWF0ZSBhbmQsIGluIHRoZSBDb25zZW50RGVuaWVkIGNhc2UsIHJlc3RyaWN0
aW9ucy4KKworICAgIC8vIDEuIExldCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGJlIGEgbmV3
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gZGljdGlvbmFyeS4KKyAgICBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiB7IH07CisKKyAgICAvLyAyLiBT
ZXQgdGhlIGxhYmVsIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGVxdWFs
IHRoZSBsYWJlbCBtZW1iZXIgb2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24uCisgICAgYWNjdW11
bGF0ZWRDb25maWd1cmF0aW9uLmxhYmVsID0gY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5sYWJlbDsK
KworICAgIC8vIDMuIElmIHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBjYW5kaWRhdGUgY29u
ZmlndXJhdGlvbiBpcyBub24tZW1wdHksIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIGlm
ICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLmlzRW1wdHkoKSkgeworICAg
ICAgICAvLyAzLjEuIExldCBzdXBwb3J0ZWQgdHlwZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2Yg
RE9NU3RyaW5ncy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkVHlwZXM7CisKKyAg
ICAgICAgLy8gMy4yLiBGb3IgZWFjaCB2YWx1ZSBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidz
IGluaXREYXRhVHlwZXMgbWVtYmVyOgorICAgICAgICBmb3IgKGF1dG8gaW5pdERhdGFUeXBlIDog
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKSB7CisgICAgICAgICAgICAvLyAz
LjIuMS4gTGV0IGluaXREYXRhVHlwZSBiZSB0aGUgdmFsdWUuCisgICAgICAgICAgICAvLyAzLjIu
Mi4gSWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGdlbmVyYXRpbmcgcmVxdWVzdHMgYmFz
ZWQgb24gaW5pdERhdGFUeXBlLCBhZGQgaW5pdERhdGFUeXBlCisgICAgICAgICAgICAvLyAgICAg
ICAgdG8gc3VwcG9ydGVkIHR5cGVzLiBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2
ZS4gVGhlIGVtcHR5IHN0cmluZyBpcyBuZXZlciBzdXBwb3J0ZWQuCisgICAgICAgICAgICBpZiAo
aW5pdERhdGFUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgaWYgKHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5
cGUpKQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChpbml0RGF0YVR5cGUp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4zLiBJZiBzdXBwb3J0ZWQgdHlwZXMgaXMgZW1w
dHksIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChzdXBwb3J0ZWRUeXBlcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIDMu
NC4gU2V0IHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uIHRvIHN1cHBvcnRlZCB0eXBlcy4KKyAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmluaXREYXRhVHlwZXMgPSBXVEZNb3ZlKHN1cHBvcnRlZFR5cGVzKTsKKyAgICB9CisKKyAgICAv
LyA0LiBMZXQgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBiZSB0aGUgdmFsdWUg
b2YgY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVy
LgorICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVpcmVtZW50ID0g
Y2FuZGlkYXRlQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisKKyAgICAvLyA1
LiBJZiBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVtZW50IGlzICJvcHRpb25hbCIgYW5k
IERpc3RpbmN0aXZlIElkZW50aWZpZXJzIGFyZSBub3QgYWxsb3dlZCBhY2NvcmRpbmcgdG8KKyAg
ICAvLyAgICByZXN0cmljdGlvbnMsIHNldCBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIHJlcXVpcmVt
ZW50IHRvICJub3QtYWxsb3dlZCIuCisgICAgaWYgKGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVp
cmVtZW50ID09IENETVJlcXVpcmVtZW50OjpPcHRpb25hbCAmJiByZXN0cmljdGlvbnMuZGlzdGlu
Y3RpdmVJZGVudGlmaWVyRGVuaWVkKQorICAgICAgICBkaXN0aW5jdGl2ZUlkZW50aWZpZXJSZXF1
aXJlbWVudCA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworCisgICAgLy8gNi4gRm9sbG93
IHRoZSBzdGVwcyBmb3IgZGlzdGluY3RpdmUgaWRlbnRpZmllciByZXF1aXJlbWVudCBmcm9tIHRo
ZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBzd2l0Y2ggKGRpc3RpbmN0aXZlSWRlbnRpZmllclJlcXVp
cmVtZW50KSB7CisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ6CisgICAgICAgIC8v
IOKGsyAicmVxdWlyZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5v
dCBzdXBwb3J0IHVzZSBvZiBEaXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGluIGNvbWJpbmF0aW9u
CisgICAgICAgIC8vIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdHJpY3Rp
b25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9
PSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6T3B0aW9u
YWw6CisgICAgICAgIC8vIOKGsyAib3B0aW9uYWwiCisgICAgICAgIC8vIENvbnRpbnVlIHdpdGgg
dGhlIGZvbGxvd2luZyBzdGVwcy4KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENETVJlcXVp
cmVtZW50OjpOb3RBbGxvd2VkOgorICAgICAgICAvLyDihrMgIm5vdC1hbGxvd2VkIgorICAgICAg
ICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdXNlIERpc3RpbmN0aXZlIElkZW50
aWZpZXIocykgb3IgRGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykKKyAgICAgICAg
Ly8gaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0
cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlv
bnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIDcuIFNldCB0aGUgZGlz
dGluY3RpdmVJZGVudGlmaWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGVxdWFsIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgcmVxdWlyZW1lbnQuCisgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9IGRpc3RpbmN0aXZlSWRlbnRp
ZmllclJlcXVpcmVtZW50OworCisgICAgLy8gOC4gTGV0IHBlcnNpc3RlbnQgc3RhdGUgcmVxdWly
ZW1lbnQgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3Mg
cGVyc2lzdGVudFN0YXRlIG1lbWJlci4KKyAgICBDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudCA9IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlOwor
CisgICAgLy8gOS4gSWYgcGVyc2lzdGVudCBzdGF0ZSByZXF1aXJlbWVudCBpcyAib3B0aW9uYWwi
IGFuZCBwZXJzaXN0aW5nIHN0YXRlIGlzIG5vdCBhbGxvd2VkIGFjY29yZGluZyB0byByZXN0cmlj
dGlvbnMsCisgICAgLy8gICAgc2V0IHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQgdG8gIm5v
dC1hbGxvd2VkIi4KKyAgICBpZiAocGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgPT0gQ0RNUmVx
dWlyZW1lbnQ6Ok9wdGlvbmFsICYmIHJlc3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQp
CisgICAgICAgIHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50ID0gQ0RNUmVxdWlyZW1lbnQ6Ok5v
dEFsbG93ZWQ7CisKKyAgICAvLyAxMC4gRm9sbG93IHRoZSBzdGVwcyBmb3IgcGVyc2lzdGVudCBz
dGF0ZSByZXF1aXJlbWVudCBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBzd2l0Y2ggKHBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KSB7CisgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6UmVx
dWlyZWQ6CisgICAgICAgIC8vIOKGsyAicmVxdWlyZWQiCisgICAgICAgIC8vIElmIHRoZSBpbXBs
ZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBlcnNpc3Rpbmcgc3RhdGUgaW4gY29tYmluYXRp
b24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGFuZCByZXN0cmlj
dGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICh0aGlzLT5wZXJzaXN0ZW50
U3RhdGVSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykg
PT0gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlv
bmFsOgorICAgICAgICAvLyDihrMgIm9wdGlvbmFsIgorICAgICAgICAvLyBDb250aW51ZSB3aXRo
IHRoZSBmb2xsb3dpbmcgc3RlcHMuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDRE1SZXF1
aXJlbWVudDo6Tm90QWxsb3dlZDoKKyAgICAgICAgLy8g4oazICJub3QtYWxsb3dlZCIKKyAgICAg
ICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHBlcnNpc3Rpbmcgc3RhdGUgaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCisgICAgICAgIC8vIGFu
ZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQKKyAgICAgICAgaWYgKHRoaXMtPnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJp
Y3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyAxMS4gU2V0IHRo
ZSBwZXJzaXN0ZW50U3RhdGUgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8g
ZXF1YWwgdGhlIHZhbHVlIG9mIHBlcnNpc3RlbnQgc3RhdGUgcmVxdWlyZW1lbnQuCisgICAgYWNj
dW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IHBlcnNpc3RlbnRTdGF0ZVJl
cXVpcmVtZW50OworCisgICAgLy8gMTIuIEZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSBmaXJzdCBt
YXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgVmVjdG9yPENE
TVNlc3Npb25UeXBlPiBzZXNzaW9uVHlwZXM7CisKKyAgICBpZiAoIWNhbmRpZGF0ZUNvbmZpZ3Vy
YXRpb24uc2Vzc2lvblR5cGVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyDihrMgSWYgdGhlIHNl
c3Npb25UeXBlcyBtZW1iZXIgaXMgcHJlc2VudCBbV2ViSURMXSBpbiBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbgorICAgICAgICAvLyBMZXQgc2Vzc2lvbiB0eXBlcyBiZSBjYW5kaWRhdGUgY29uZmln
dXJhdGlvbidzIHNlc3Npb25UeXBlcyBtZW1iZXIuCisgICAgICAgIHNlc3Npb25UeXBlcyA9IGNh
bmRpZGF0ZUNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIOKGsyBPdGhlcndpc2UKKyAgICAgICAgLy8gTGV0IHNlc3Npb24gdHlwZXMgYmUgWyAidGVt
cG9yYXJ5IiBdLgorICAgICAgICBzZXNzaW9uVHlwZXMgPSB7IENETVNlc3Npb25UeXBlOjpUZW1w
b3JhcnkgfTsKKyAgICB9CisKKyAgICAvLyAxMy4gRm9yIGVhY2ggdmFsdWUgaW4gc2Vzc2lvbiB0
eXBlczoKKyAgICBmb3IgKGF1dG8mIHNlc3Npb25UeXBlIDogc2Vzc2lvblR5cGVzKSB7CisgICAg
ICAgIC8vIDEzLjEuIExldCBzZXNzaW9uIHR5cGUgYmUgdGhlIHZhbHVlLgorICAgICAgICAvLyAx
My4yLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlIHZhbHVl
IGlzICJub3QtYWxsb3dlZCIgYW5kIHRoZQorICAgICAgICAvLyAgICAgICBJcyBwZXJzaXN0ZW50
IHNlc3Npb24gdHlwZT8gYWxnb3JpdGhtIHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0eXBlIHJl
dHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24u
cGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlzUGVyc2lz
dGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICAvLyAxMy4zLiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9y
dCBzZXNzaW9uIHR5cGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0
aW9uCisgICAgICAgIC8vICAgICAgIGFuZCByZXN0cmljdGlvbnMgZm9yIG90aGVyIHJlYXNvbnMs
IHJldHVybiBOb3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKHNlc3Npb25UeXBlLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxMy40IElmIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUgaXMgIm9wdGlv
bmFsIiBhbmQgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBJcworICAgICAgICAvLyAgICAgIHBl
cnNpc3RlbnQgc2Vzc2lvbiB0eXBlPyBhbGdvcml0aG0gb24gc2Vzc2lvbiB0eXBlIGlzIHRydWUs
IGNoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlCisgICAg
ICAgIC8vICAgICAgdmFsdWUgdG8gInJlcXVpcmVkIi4KKyAgICAgICAgaWYgKGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
ICYmIGlzUGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5cGUpKQorICAgICAgICAgICAgYWNjdW11bGF0
ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpSZXF1aXJl
ZDsKKyAgICB9CisKKyAgICAvLyAxNC4gU2V0IHRoZSBzZXNzaW9uVHlwZXMgbWVtYmVyIG9mIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gc2Vzc2lvbiB0eXBlcy4KKyAgICBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzID0gc2Vzc2lvblR5cGVzOworCisgICAgLy8gMTUu
IElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBhbmQgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVycyBp
biBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBhcmUgYm90aCBlbXB0eSwgcmV0dXJuIE5vdFN1cHBv
cnRlZC4KKyAgICBpZiAoY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5p
c0VtcHR5KCkgJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAvLyAxNi4g4oazIElm
IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24g
aXMgbm9uLWVtcHR5OgorICAgIGlmICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFi
aWxpdGllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gMTYuMS4gTGV0IHZpZGVvIGNhcGFiaWxp
dGllcyBiZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgR2V0IFN1cHBvcnRlZCBDYXBhYmls
aXRpZXMgZm9yIEF1ZGlvL1ZpZGVvIFR5cGUgYWxnb3JpdGhtIG9uCisgICAgICAgIC8vICAgICAg
IFZpZGVvLCBjYW5kaWRhdGUgY29uZmlndXJhdGlvbidzIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJl
ciwgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiwgYW5kIHJlc3RyaWN0aW9ucy4KKyAgICAgICAg
YXV0byB2aWRlb0NhcGFiaWxpdGllcyA9IGdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvckF1ZGlv
VmlkZW9UeXBlKEF1ZGlvVmlkZW9UeXBlOjpWaWRlbywgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52
aWRlb0NhcGFiaWxpdGllcywgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMp
OworCisgICAgICAgIC8vIDE2LjIuIElmIHZpZGVvIGNhcGFiaWxpdGllcyBpcyBudWxsLCByZXR1
cm4gTm90U3VwcG9ydGVkLgorICAgICAgICBpZiAoIXZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAvLyAxNi4zIFNldCB0aGUgdmlk
ZW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gdmlk
ZW8gY2FwYWJpbGl0aWVzLgorICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlkZW9D
YXBhYmlsaXRpZXMgPSBXVEZNb3ZlKHZpZGVvQ2FwYWJpbGl0aWVzLnZhbHVlKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIDE2LiDihrMgT3RoZXJ3aXNlOgorICAgICAgICAvLyAgICAgU2V0
IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlv
biB0byBhbiBlbXB0eSBzZXF1ZW5jZS4KKyAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LnZpZGVvQ2FwYWJpbGl0aWVzID0geyB9OworICAgIH0KKworICAgIC8vIDE3LiDihrMgSWYgdGhl
IGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBpcyBu
b24tZW1wdHk6CisgICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0
aWVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyAxNy4xLiBMZXQgYXVkaW8gY2FwYWJpbGl0aWVz
IGJlIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBHZXQgU3VwcG9ydGVkIENhcGFiaWxpdGll
cyBmb3IgQXVkaW8vVmlkZW8gVHlwZSBhbGdvcml0aG0gb24KKyAgICAgICAgLy8gICAgICAgQXVk
aW8sIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uJ3MgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVyLCBh
Y2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLCBhbmQgcmVzdHJpY3Rpb25zLgorICAgICAgICBhdXRv
IGF1ZGlvQ2FwYWJpbGl0aWVzID0gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRl
b1R5cGUoQXVkaW9WaWRlb1R5cGU6OkF1ZGlvLCBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlv
Q2FwYWJpbGl0aWVzLCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucyk7CisK
KyAgICAgICAgLy8gMTcuMi4gSWYgYXVkaW8gY2FwYWJpbGl0aWVzIGlzIG51bGwsIHJldHVybiBO
b3RTdXBwb3J0ZWQuCisgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIC8vIDE3LjMgU2V0IHRoZSBhdWRpb0Nh
cGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBhdWRpbyBj
YXBhYmlsaXRpZXMuCisgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFi
aWxpdGllcyA9IFdURk1vdmUoYXVkaW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgLy8gMTcuIOKGsyBPdGhlcndpc2U6CisgICAgICAgIC8vICAgICBTZXQgdGhl
IGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRv
IGFuIGVtcHR5IHNlcXVlbmNlLgorICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uYXVk
aW9DYXBhYmlsaXRpZXMgPSB7IH07CisgICAgfQorCisgICAgLy8gMTguIElmIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMgIm9wdGlvbmFs
IiwgZm9sbG93IHRoZSBzdGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nCisgICAgLy8gICAgIGNv
bmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoKKyAgICBpZiAoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVudDo6T3B0aW9u
YWwpIHsKKyAgICAgICAgLy8g4oazIElmIHRoZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyB1c2Ug
RGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBvciBEaXN0aW5jdGl2ZSBQZXJtYW5lbnQgSWRlbnRp
ZmllcihzKSBmb3IgYW55IG9mIHRoZQorICAgICAgICAvLyAgICBjb21iaW5hdGlvbnMgaW4gYWNj
dW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlmaWVy
c1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBD
RE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpIHsKKyAgICAgICAgICAgIC8vIENoYW5nZSBhY2N1bXVs
YXRlZCBjb25maWd1cmF0aW9uJ3MgZGlzdGluY3RpdmVJZGVudGlmaWVyIHZhbHVlIHRvICJyZXF1
aXJlZCIuCisgICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8g4oazIE90aGVyd2lzZQorICAgICAgICAgICAgLy8gICAgQ2hhbmdlIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgdG8g
Im5vdC1hbGxvd2VkIi4KKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0
aW5jdGl2ZUlkZW50aWZpZXIgPSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIDE5LiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVy
c2lzdGVudFN0YXRlIHZhbHVlIGlzICJvcHRpb25hbCIsIGZvbGxvdyB0aGUgc3RlcHMgZm9yIHRo
ZSBmaXJzdCBtYXRjaGluZworICAgIC8vICAgICBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5n
IGxpc3Q6CisgICAgaWYgKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUg
PT0gQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsKSB7CisgICAgICAgIC8vIOKGsyBJZiB0aGUgaW1w
bGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBzdGF0ZSBmb3IgYW55IG9mIHRoZSBjb21i
aW5hdGlvbnMgaW4gYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAodGhpcy0+
cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0
cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgeworICAgICAgICAgICAgLy8g
Q2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUg
dG8gInJlcXVpcmVkIi4KKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQ7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyDihrMgT3RoZXJ3aXNlCisgICAgICAgICAgICAvLyAgICBDaGFuZ2Ug
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSB0byAibm90
LWFsbG93ZWQiLgorICAgICAgICAgICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3Rl
bnRTdGF0ZSA9IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25maWd1cmF0aW9uIHNwZWNp
ZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhY2N1bXVsYXRlZCBjb25m
aWd1cmF0aW9uCisgICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90IGFsbG93ZWQgaW4g
dGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KKyAgICBpZiAoIXN1cHBvcnRzQ29uZmln
dXJhdGlvbihhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgaWYgKChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCB8fCBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgJiYg
YWNjZXNzID09IExvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247Cisg
ICAgLy8gTk9URTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0dXMoKS4KK30KKworT3B0aW9u
YWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENh
cGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKENETVByaXZhdGU6OkF1ZGlvVmlkZW9UeXBlIHR5
cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRp
ZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9u
LCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykKK3sKKyAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNnZXQtc3VwcG9ydGVkLWNhcGFiaWxpdGllcy1mb3It
YXVkaW8tdmlkZW8tdHlwZQorICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAy
MDE2CisKKyAgICAvLyAzLjEuMS4zIEdldCBTdXBwb3J0ZWQgQ2FwYWJpbGl0aWVzIGZvciBBdWRp
by9WaWRlbyBUeXBlCisKKyAgICAvLyBHaXZlbiBhbiBhdWRpby92aWRlbyB0eXBlLCBDRE1NZWRp
YUNhcGFiaWxpdHkgc2VxdWVuY2UgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdGllcywgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbgorICAgIC8vIHBhcnRpYWwgY29uZmlndXJhdGlvbiwgYW5kIHJl
c3RyaWN0aW9ucywgdGhpcyBhbGdvcml0aG0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIHN1cHBvcnRl
ZCBDRE1NZWRpYUNhcGFiaWxpdHkgdmFsdWVzCisgICAgLy8gZm9yIHRoaXMgYXVkaW8vdmlkZW8g
dHlwZSBvciBudWxsIGFzIGFwcHJvcHJpYXRlLgorCisgICAgLy8gMS4gTGV0IGxvY2FsIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gYmUgYSBsb2NhbCBjb3B5IG9mIHBhcnRpYWwgY29uZmlndXJh
dGlvbi4KKyAgICBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGFjY3VtdWxhdGVkQ29uZmlndXJh
dGlvbiA9IHBhcnRpYWxDb25maWd1cmF0aW9uOworCisgICAgLy8gMi4gTGV0IHN1cHBvcnRlZCBt
ZWRpYSBjYXBhYmlsaXRpZXMgYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgQ0RNTWVkaWFDYXBhYmls
aXR5IGRpY3Rpb25hcmllcy4KKyAgICBWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiBzdXBwb3J0
ZWRNZWRpYUNhcGFiaWxpdGllcyB7IH07CisKKyAgICAvLyAzLiBGb3IgZWFjaCByZXF1ZXN0ZWQg
bWVkaWEgY2FwYWJpbGl0eSBpbiByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzOgorICAgIGZv
ciAoYXV0byYgcmVxdWVzdGVkQ2FwYWJpbGl0eSA6IHJlcXVlc3RlZENhcGFiaWxpdGllcykgewor
ICAgICAgICAvLyAzLjEuIExldCBjb250ZW50IHR5cGUgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFi
aWxpdHkncyBjb250ZW50VHlwZSBtZW1iZXIuCisgICAgICAgIC8vIDMuMi4gTGV0IHJvYnVzdG5l
c3MgYmUgcmVxdWVzdGVkIG1lZGlhIGNhcGFiaWxpdHkncyByb2J1c3RuZXNzIG1lbWJlci4KKyAg
ICAgICAgU3RyaW5nIHJvYnVzdG5lc3MgPSByZXF1ZXN0ZWRDYXBhYmlsaXR5LnJvYnVzdG5lc3M7
CisKKyAgICAgICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMgdGhlIGVtcHR5IHN0cmluZywg
cmV0dXJuIG51bGwuCisgICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBhYmlsaXR5LmNvbnRlbnRUeXBl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
Ly8gMy40LiBJZiBjb250ZW50IHR5cGUgaXMgYW4gaW52YWxpZCBvciB1bnJlY29nbml6ZWQgTUlN
RSB0eXBlLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAgICAgIE9wdGlvbmFs
PFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNlZENvbnRlbnRUeXBlOjpjcmVh
dGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9kZTo6UmZjMjA0NSk7CisgICAg
ICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyAzLjUuIExldCBjb250YWluZXIgYmUgdGhlIGNvbnRhaW5lciB0eXBlIHNwZWNpZmllZCBieSBj
b250ZW50IHR5cGUuCisgICAgICAgIFN0cmluZyBjb250YWluZXIgPSBjb250ZW50VHlwZS0+bWlt
ZVR5cGUoKTsKKworICAgICAgICAvLyAzLjYuIElmIHRoZSB1c2VyIGFnZW50IGRvZXMgbm90IHN1
cHBvcnQgY29udGFpbmVyLCBjb250aW51ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uIFRoZSBjYXNl
LXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNvbXBhcmlzb25zIGlzIGRl
dGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQy4KKyAgICAgICAgLy8gMy43LiBMZXQgcGFy
YW1ldGVycyBiZSB0aGUgUkZDIDYzODEgW1JGQzYzODFdIHBhcmFtZXRlcnMsIGlmIGFueSwgc3Bl
Y2lmaWVkIGJ5IGNvbnRlbnQgdHlwZS4KKyAgICAgICAgLy8gMy44LiBJZiB0aGUgdXNlciBhZ2Vu
dCBkb2VzIG5vdCByZWNvZ25pemUgb25lIG9yIG1vcmUgcGFyYW1ldGVycywgY29udGludWUgdG8g
dGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAvLyAzLjkuIExldCBtZWRpYSB0eXBlcyBiZSB0
aGUgc2V0IG9mIGNvZGVjcyBhbmQgY29kZWMgY29uc3RyYWludHMgc3BlY2lmaWVkIGJ5IHBhcmFt
ZXRlcnMuIFRoZSBjYXNlLXNlbnNpdGl2aXR5CisgICAgICAgIC8vICAgICAgb2Ygc3RyaW5nIGNv
bXBhcmlzb25zIGlzIGRldGVybWluZWQgYnkgdGhlIGFwcHJvcHJpYXRlIFJGQyBvciBvdGhlciBz
cGVjaWZpY2F0aW9uLgorICAgICAgICBTdHJpbmcgY29kZWNzID0gY29udGVudFR5cGUtPnBhcmFt
ZXRlclZhbHVlRm9yTmFtZSgiY29kZWNzIik7CisgICAgICAgIGlmIChjb250ZW50VHlwZS0+cGFy
YW1ldGVyQ291bnQoKSA+IChjb2RlY3MuaXNFbXB0eSgpID8gMCA6IDEpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgLy8gMy4xMC4gSWYgbWVkaWEgdHlwZXMgaXMgZW1wdHk6Cisg
ICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyDihrMgSWYgY29u
dGFpbmVyIG5vcm1hdGl2ZWx5IGltcGxpZXMgYSBzcGVjaWZpYyBzZXQgb2YgY29kZWNzIGFuZCBj
b2RlYyBjb25zdHJhaW50czoKKyAgICAgICAgICAgIC8vIOKGsyBPdGhlcndpc2U6CisgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4xMS4gSWYg
Y29udGVudCB0eXBlIGlzIG5vdCBzdHJpY3RseSBhIGF1ZGlvL3ZpZGVvIHR5cGUsIGNvbnRpbnVl
IHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKyAgICAgICAgLy8gMy4xMi4gSWYgcm9idXN0bmVzcyBp
cyBub3QgdGhlIGVtcHR5IHN0cmluZyBhbmQgY29udGFpbnMgYW4gdW5yZWNvZ25pemVkIHZhbHVl
IG9yIGEgdmFsdWUgbm90IHN1cHBvcnRlZCBieQorICAgICAgICAvLyAgICAgICBpbXBsZW1lbnRh
dGlvbiwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLiBTdHJpbmcgY29tcGFyaXNvbiBp
cyBjYXNlLXNlbnNpdGl2ZS4KKyAgICAgICAgaWYgKCFyb2J1c3RuZXNzLmlzRW1wdHkoKSAmJiAh
c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkuY29udGFpbnMocm9idXN0bmVzcykpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyAzLjEzLiBJZiB0aGUgdXNlciBhZ2VudCBhbmQgaW1w
bGVtZW50YXRpb24gZGVmaW5pdGVseSBzdXBwb3J0IHBsYXliYWNrIG9mIGVuY3J5cHRlZCBtZWRp
YSBkYXRhIGZvciB0aGUKKyAgICAgICAgLy8gICAgICAgY29tYmluYXRpb24gb2YgY29udGFpbmVy
LCBtZWRpYSB0eXBlcywgcm9idXN0bmVzcyBhbmQgbG9jYWwgYWNjdW11bGF0ZWQgY29uZmlndXJh
dGlvbiBpbiBjb21iaW5hdGlvbgorICAgICAgICAvLyAgICAgICB3aXRoIHJlc3RyaWN0aW9uczoK
KyAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAg
ICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZShjb250ZW50VHlwZS0+bWltZVR5cGUoKSk7
CisgICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKSB7CisKKyAgICAgICAgICAg
IC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRp
YVNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlw
ZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRl
ZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24sIHJlc3RyaWN0aW9ucykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyAzLjEzLjEuIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byBzdXBwb3J0ZWQgbWVk
aWEgY2FwYWJpbGl0aWVzLgorICAgICAgICBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllcy5hcHBl
bmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisKKyAgICAgICAgLy8gMy4xMy4yLiDihrMgSWYgYXVk
aW8vdmlkZW8gdHlwZSBpcyBWaWRlbzoKKyAgICAgICAgLy8gICAgICAgICBBZGQgcmVxdWVzdGVk
IG1lZGlhIGNhcGFiaWxpdHkgdG8gdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIG1lbWJlciBvZiBsb2Nh
bCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uLgorICAgICAgICBpZiAodHlwZSA9PSBBdWRpb1Zp
ZGVvVHlwZTo6VmlkZW8pCisgICAgICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlk
ZW9DYXBhYmlsaXRpZXMuYXBwZW5kKHJlcXVlc3RlZENhcGFiaWxpdHkpOworICAgICAgICAvLyAz
LjEzLjIuIOKGsyBJZiBhdWRpby92aWRlbyB0eXBlIGlzIEF1ZGlvOgorICAgICAgICAvLyAgICAg
ICAgIEFkZCByZXF1ZXN0ZWQgbWVkaWEgY2FwYWJpbGl0eSB0byB0aGUgYXVkaW9DYXBhYmlsaXRp
ZXMgbWVtYmVyIG9mIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGll
cy5hcHBlbmQocmVxdWVzdGVkQ2FwYWJpbGl0eSk7CisgICAgfQorCisgICAgLy8gNC4gSWYgc3Vw
cG9ydGVkIG1lZGlhIGNhcGFiaWxpdGllcyBpcyBlbXB0eSwgcmV0dXJuIG51bGwuCisgICAgaWYg
KHN1cHBvcnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIC8vIDUuIFJldHVybiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0
aWVzLgorICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllczsKK30KKwordm9pZCBD
RE1Qcml2YXRlOjpnZXRDb25zZW50U3RhdHVzKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmIHJlc3RyaWN0aW9ucywg
TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0
LXN1cHBvcnRlZC1jb25maWd1cmF0aW9uLWFuZC1jb25zZW50CisgICAgLy8gVzNDIEVkaXRvcidz
IERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKKworICAgIC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBD
b25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQuCisgICAgLy8gMjEuIElmIGFjY3VtdWxhdGVk
IGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgdmFsdWUgaXMgInJlcXVpcmVk
IiBhbmQgdGhlIERpc3RpbmN0aXZlIElkZW50aWZpZXIocykgYXNzb2NpYXRlZAorICAgIC8vICAg
ICB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gYXJlIG5vdCB1bmlxdWUgcGVyIG9yaWdp
biBhbmQgcHJvZmlsZSBhbmQgY2xlYXJhYmxlOgorICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAm
JiAhZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShh
Y2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKSB7CisgICAgICAgIC8vIDIxLjEuIFVwZGF0ZSByZXN0
cmljdGlvbnMgdG8gcmVmbGVjdCB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBkZXNjcmliZWQgYnkg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkbyBub3QgaGF2ZSB1c2VyIGNvbnNlbnQuCisgICAg
ICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVlOworICAg
ICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3ZlKGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhLyNnZXQtY29uc2VudC1zdGF0dXMKKyAgICAvLyAzLjEuMS40IEdldCBDb25zZW50IFN0YXR1
cworICAgIC8vIEdpdmVuIGFuIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9u
cyBhbmQgb3JpZ2luLCB0aGlzIGFsZ29yaXRobSByZXR1cm5zIHRoZSBjb25zZW50IHN0YXR1cyBm
b3IgYWNjdW11bGF0ZWQKKyAgICAvLyBjb25maWd1cmF0aW9uIGFuZCBvcmlnaW4gYXMgb25lIG9m
IENvbnNlbnREZW5pZWQsIEluZm9ybVVzZXIgb3IgQWxsb3dlZCwgdG9nZXRoZXIgd2l0aCBhbiB1
cGRhdGVkIHZhbHVlIGZvciByZXN0cmljdGlvbnMKKyAgICAvLyBpbiB0aGUgQ29uc2VudERlbmll
ZCBjYXNlLgorCisgICAgLy8gMS4gSWYgdGhlcmUgaXMgcGVyc2lzdGVkIGRlbmlhbCBmb3Igb3Jp
Z2luIGluZGljYXRpbmcgdGhhdCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCBhbGxv
d2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLjEuIFVwZGF0ZSByZXN0cmlj
dGlvbnMgdG8gcmVmbGVjdCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHdoaWNoIGNvbnNlbnQgaGFz
IGJlZW4gZGVuaWVkLgorICAgIC8vIDEuMi4gUmV0dXJuIENvbnNlbnREZW5pZWQgYW5kIHJlc3Ry
aWN0aW9ucy4KKyAgICAvLyAyLiBJZiB0aGVyZSBpcyBwZXJzaXN0ZWQgY29uc2VudCBmb3Igb3Jp
Z2luIGluZGljYXRpbmcgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBpcyBhbGxvd2VkLCByZXR1
cm4gQWxsb3dlZC4KKyAgICAvLyBOT1RFOiBwZXJzaXN0ZWQgZGVuaWFsIC8gY29uc2VudCB1bmlt
cGxlbWVudGVkLgorCisgICAgLy8gMy4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6
CisgICAgLy8gICAg4oazIFRoZSBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90ICJub3QtYWxsb3dlZCIgYW5kIHRoZSBjb21iaW5h
dGlvbiBvZiB0aGUgVXNlciBBZ2VudCwKKyAgICAvLyAgICAgICBpbXBsZW1lbnRhdGlvbiBhbmQg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBmb2xsb3cgYWxsIHRoZSByZWNvbW1l
bmRhdGlvbnMgb2YgQWxsb3cgUGVyc2lzdGVudCBEYXRhIHRvIEJlIENsZWFyZWQKKyAgICAvLyAg
ICAgICB3aXRoIHJlc3BlY3QgdG8gRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKS4KKyAgICAvLyBO
T1RFOiBhc3N1bWUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgZm9sbG93IGFsbCByZWNvbW1lbmRhdGlv
bnMuCisKKyAgICAvLyAgICDihrMgVGhlIHVzZXIgYWdlbnQgcmVxdWlyZXMgZXhwbGljaXQgdXNl
ciBjb25zZW50IGZvciB0aGUgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBmb3Igb3RoZXIgcmVh
c29ucy4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVzZXIgYWdlbnQgZG9lcyBub3QgcmVxdWly
ZSBleHBsaWNpdCB1c2VyIGNvbnNlbnQuCisKKyAgICAvLyAzLjEuIFJlcXVlc3QgdXNlciBjb25z
ZW50IHRvIHVzZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGluIHRoZSBvcmlnaW4gYW5kIHdh
aXQgZm9yIHRoZSB1c2VyIHJlc3BvbnNlLgorICAgIC8vICAgICAgVGhlIGNvbnNlbnQgbXVzdCBp
bmNsdWRlIGNvbnNlbnQgdG8gdXNlIGEgRGlzdGluY3RpdmUgSWRlbnRpZmllcihzKSBhbmQvb3Ig
RGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykgYXMgYXBwcm9wcmlhdGUKKyAgICAv
LyAgICAgIGlmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXIgbWVtYmVyIGlzICJyZXF1aXJlZCIuCisgICAgLy8gMy4yLiBJZiBjb25zZW50IHdhcyBkZW5p
ZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDMuMi4xLiBVcGRhdGUgcmVzdHJp
Y3Rpb25zIHRvIHJlZmxlY3QgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB3aGljaCBjb25zZW50IHdh
cyBkZW5pZWQuCisgICAgLy8gMy4yLjEuIFJldHVybiBDb25zZW50RGVuaWVkIGFuZCByZXN0cmlj
dGlvbnMuCisgICAgLy8gTk9URTogYXNzdW1lIGltcGxpZWQgY29uc2VudCBpZiB0aGUgY29tYmlu
YXRpb24gb2Ygb3JpZ2luIGFuZCB0b3BPcmlnaW4gYWxsb3dzIGl0LgorICAgIGlmIChhY2N1bXVs
YXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50
OjpSZXF1aXJlZCAmJiBhY2Nlc3MgPT0gTG9jYWxTdG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkKSB7
CisgICAgICAgIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgPSB0cnVl
OworICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpDb25zZW50RGVuaWVkLCBXVEZNb3Zl
KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyA0LiBJZiB0aGUgZGlzdGluY3RpdmVJZGVudGlm
aWVyIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGlzIG5vdCAibm90LWFsbG93
ZWQiLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LmRpc3RpbmN0aXZlSWRlbnRpZmllciAhPSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkgewor
ICAgICAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpJbmZvcm1Vc2VyLCBXVEZNb3ZlKGFjY3Vt
dWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyA1LiBJZiB0aGUgdXNlciBhZ2VudCByZXF1aXJlcyBpbmZv
cm1pbmcgdGhlIHVzZXIgZm9yIHRoZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGZvciBvdGhl
ciByZWFzb25zLCByZXR1cm4gSW5mb3JtVXNlci4KKyAgICAvLyBOT1RFOiBhc3N1bWUgdGhlIHVz
ZXIgYWdlbnQgZG9lcyBub3QgcmVxdWlyZSBpbmZvcm1pbmcgdGhlIHVzZXIuCisKKyAgICAvLyA2
LiBSZXR1cm4gQWxsb3dlZC4KKyAgICBjYWxsYmFjayhDb25zZW50U3RhdHVzOjpBbGxvd2VkLCBX
VEZNb3ZlKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiksIFdURk1vdmUocmVzdHJpY3Rpb25zKSk7
Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCAyNWY3ODE2YTJmZTFkYTZmOTBjMmZlZjc3
NzU1MTQwNmFhMGY0YTAzLi5mOGQyYzEzOWIwN2EzM2M3YmIzZDMyMzhjNjE4ZTE3ZmI4ZjQzYTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCkBAIC0zMSwyMSArMzEsMzEgQEAKICNpbmNsdWRlICJDRE1SZXF1aXJlbWVudC5o
IgogI2luY2x1ZGUgIkNETVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eTsK
IHN0cnVjdCBDRE1SZXN0cmljdGlvbnM7CiAKLWNsYXNzIENETVByaXZhdGUgeworY2xhc3MgQ0RN
UHJpdmF0ZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1Qcml2YXRlPiB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+Q0RNUHJpdmF0ZSgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5DRE1Qcml2YXRlKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0ID0gMDsKKyAgICBlbnVtIGNsYXNzIExvY2Fs
U3RvcmFnZUFjY2VzcyA6IGJvb2wgeworICAgICAgICBOb3RBbGxvd2VkLAorICAgICAgICBBbGxv
d2VkLAorICAgIH07CisKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4p
PjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbihDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwg
TG9jYWxTdG9yYWdlQWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CisK
KyAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lv
blR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JvYnVzdG5lc3MoY29uc3QgU3RyaW5nJikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVz
dG5lc3NlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENETVJlcXVpcmVtZW50IGRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ0RNUmVx
dWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFy
YWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgPSAwOwpAQCAtNTYs
NiArNjYsMzQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VC
Q09SRV9FWFBPUlQgQ0RNUHJpdmF0ZSgpOworICAgIHN0YXRpYyBib29sIGlzUGVyc2lzdGVudFR5
cGUoQ0RNU2Vzc2lvblR5cGUpOworCisgICAgZW51bSBjbGFzcyBDb25maWd1cmF0aW9uU3RhdHVz
IHsKKyAgICAgICAgU3VwcG9ydGVkLAorICAgICAgICBOb3RTdXBwb3J0ZWQsCisgICAgICAgIENv
bnNlbnREZW5pZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQ29uc2VudFN0YXR1cyB7Cisg
ICAgICAgIENvbnNlbnREZW5pZWQsCisgICAgICAgIEluZm9ybVVzZXIsCisgICAgICAgIEFsbG93
ZWQsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQXVkaW9WaWRlb1R5cGUgeworICAgICAgICBB
dWRpbywKKyAgICAgICAgVmlkZW8sCisgICAgfTsKKworICAgIHZvaWQgZG9TdXBwb3J0ZWRDb25m
aWd1cmF0aW9uU3RlcChDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmln
dXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiYsIExvY2FsU3RvcmFnZUFjY2VzcywgU3VwcG9ydGVk
Q29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOworICAgIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24+IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiwgTG9j
YWxTdG9yYWdlQWNjZXNzKTsKKyAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5
Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5
cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRp
ZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9u
LCBDRE1SZXN0cmljdGlvbnMmKTsKKworICAgIHVzaW5nIENvbnNlbnRTdGF0dXNDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChDb25zZW50U3RhdHVzLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiYsIENETVJlc3RyaWN0aW9ucyYmKT47CisgICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJl
c3RyaWN0aW9ucyYmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIENvbnNlbnRTdGF0dXNDYWxsYmFjayYm
KTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVJlcXVpcmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXF1aXJlbWVudC5oCmluZGV4IDY5YWMxMmQzMTZiZjY2NTdiYjBhMjRkYWY3
YWU0ZmEwZmQ0ZjFjOTguLjViMGI3NzgwZDI3ZGZlYjE5M2RjZTZlY2RhNzE3ODUyOGY3Y2Q1OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJl
cXVpcmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUmVxdWlyZW1lbnQuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgeworZW51bSBjbGFzcyBDRE1SZXF1aXJl
bWVudCA6IHVpbnQ4X3QgewogICAgIFJlcXVpcmVkLAogICAgIE9wdGlvbmFsLAogICAgIE5vdEFs
bG93ZWQKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgewogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVJlcXVpcmVtZW50PiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQsCisgICAg
ICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50OjpSZXF1aXJlZCwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsLAorICAgICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVu
dDo6Tm90QWxsb3dlZAorICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAppbmRleCBjNTJlMjgyYTEyZTkxYTQ4ODEwYmQxOGI4
N2ViNmFkNjM4ZjIxMGE4Li45Y2EyYWM1OWU4YjEzNTQ2M2E1MmRiNDVlODA3MzFmNTBjNjk0ZjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1S
ZXN0cmljdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1SZXN0cmljdGlvbnMuaApAQCAtMzYsNiArMzYsMzkgQEAgc3RydWN0IENETVJlc3RyaWN0
aW9ucyB7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlRGVuaWVkIHsgZmFsc2UgfTsKICAgICBIYXNoU2V0PENE
TVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJE
ZW5pZWQ7CisgICAgICAgIGVuY29kZXIgPDwgcGVyc2lzdGVudFN0YXRlRGVuaWVkOworICAgICAg
ICBlbmNvZGVyIDw8IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8Q0RNUmVzdHJpY3Rpb25zPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3Rp
bmN0aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAgICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJEZW5pZWQ7CisgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVk
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxi
b29sPiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CisgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVu
dFN0YXRlRGVuaWVkOworICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZURlbmllZCkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8SGFzaFNldDxD
RE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRIYXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdF
bnVtSGFzaFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CisgICAg
ICAgIGRlY29kZXIgPj4gZGVuaWVkU2Vzc2lvblR5cGVzOworICAgICAgICBpZiAoIWRlbmllZFNl
c3Npb25UeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
cmV0dXJuIHt7CisgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkLAorICAg
ICAgICAgICAgKnBlcnNpc3RlbnRTdGF0ZURlbmllZCwKKyAgICAgICAgICAgIFdURk1vdmUoKmRl
bmllZFNlc3Npb25UeXBlcyksCisgICAgICAgIH19OworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVNlc3Npb25UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1TZXNzaW9uVHlwZS5oCmluZGV4IDYwNTc0YTVhNjkzYTk2YzQ5ZjQ5ZmI3MzQ5
NmVkNzViN2UxZTZmYmIuLmUwN2MzMDAyNzkzMDVmNzc0M2YyMmZjZjU0MDZmMmNmYTY4MWRlMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVNl
c3Npb25UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNU2Vzc2lvblR5cGUuaApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgeworZW51bSBjbGFzcyBDRE1TZXNzaW9u
VHlwZSA6IHVpbnQ4X3QgewogICAgIFRlbXBvcmFyeSwKICAgICBQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQsCiAgICAgUGVyc2lzdGVudExpY2Vuc2UKQEAgLTQwLDQgKzQyLDE3IEBAIGVudW0gY2xhc3Mg
Q0RNU2Vzc2lvblR5cGUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
Q0RNU2Vzc2lvblR5cGUsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpUZW1wb3Jh
cnksCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQsCisgICAgICAgIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZQor
ICAgID47Cit9OworCit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDQ1MTExZGM3NWI1NTA4MGNlZjRlNWZiMzhh
ZTI2MzNiMzllYTcyMzMuLmRhYTNjZWMyNTMwNjcxNDBhMmZlM2I1MjIyOTQ1MGQwODg5MjNmYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ0RNUmVzdHJpY3Rp
b25zLmgiCiAjaW5jbHVkZSAiQ0RNU2Vzc2lvblR5cGUuaCIKKyNpbmNsdWRlICJJbml0RGF0YVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI5MCwxMCArMjkxLDEzIEBAIGJvb2wgQ0RNRmFj
dG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkK
IENETVByaXZhdGVDbGVhcktleTo6Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogQ0RN
UHJpdmF0ZUNsZWFyS2V5Ojp+Q0RNUHJpdmF0ZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1ib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7Ci0gICAgLy8gYGtleWlkc2Ag
YW5kICdjZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgotICAgIHJl
dHVybiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRz
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgIndlYm0iKSk7
CisgICAgcmV0dXJuIHsKKyAgICAgICAgSW5pdERhdGFSZWdpc3RyeTo6a2V5aWRzTmFtZSgpLAor
ICAgICAgICBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpLAorICAgICAgICBJbml0RGF0YVJl
Z2lzdHJ5Ojp3ZWJtTmFtZSgpLAorICAgIH07CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zUGVy
c2lzdGVudExpY2Vuc2VUeXBlKGNvbnN0IFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4mIHR5cGVzKQpA
QCAtMzM3LDcgKzM0MSw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0NvbmZp
Z3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24oQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAorYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1T
ZXNzaW9uVHlwZSYgc2Vzc2lvblR5cGUsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgLy8gT25seSBzdXBwb3J0IHRoZSAndGVtcG9y
YXJ5JyBhbmQgJ3BlcnNpc3RlbnQtbGljZW5zZScgc2Vzc2lvbiB0eXBlcy4KICAgICBpZiAoc2Vz
c2lvblR5cGUgIT0gQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSAmJiBzZXNzaW9uVHlwZSAhPSBD
RE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2UpCkBAIC0zNDUsMTAgKzM0OSwxMCBAQCBi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKENETVNlc3Npb25UeXBlJiBzZQogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbik7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Jv
YnVzdG5lc3MoY29uc3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJp
bmc+IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsK
ICAgICAvLyBPbmx5IGVtcHR5IGByb2J1c3RuZXNzYCBzdHJpbmcgaXMgc3VwcG9ydGVkLgotICAg
IHJldHVybiByb2J1c3RuZXNzLmlzRW1wdHkoKTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSB9
OwogfQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlQ2xlYXJLZXk6OmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29u
c3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0CkBAIC00MzIsMzQgKzQzNiwy
MCBAQCBPcHRpb25hbDxTdHJpbmc+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVTZXNzaW9u
SWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCiAKIENETUluc3RhbmNlQ2xlYXJLZXk6On5DRE1J
bnN0YW5jZUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1DRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgZGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxs
b3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICAvLyBOby1vcC4KLSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQotCi1DRE1J
bnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldERpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkKGJvb2wgYWxsb3dlZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGlu
ZyBkaXN0aW5jdGl2ZSBpZGVudGlmaWVycyBhcyBhbGxvd2VkLgotICAgIHJldHVybiAhYWxsb3dl
ZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZDsKLX0KLQotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBD
RE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wgYWxsb3dl
ZCkKLXsKLSAgICAvLyBSZWplY3Qgc2V0dGluZyBwZXJzaXN0ZW50IHN0YXRlIGFzIGFsbG93ZWQu
Ci0gICAgcmV0dXJuICFhbGxvd2VkID8gU3VjY2VlZGVkIDogRmFpbGVkOworICAgIFN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0
aXZlSWRlbnRpZmllcnM6Ok5vICYmIHBlcnNpc3RlbnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3RlbnRT
dGF0ZTo6Tm8pID8gU3VjY2VlZGVkIDogRmFpbGVkOworICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7
CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ0RNSW5zdGFuY2VD
bGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZl
ciBjZXJ0aWZpY2F0ZS4KLSAgICByZXR1cm4gRmFpbGVkOworICAgIGNhbGxiYWNrKEZhaWxlZCk7
CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCit2b2lkIENE
TUluc3RhbmNlQ2xlYXJLZXk6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikKIHsK
LSAgICAvLyBSZWplY3QgYW55IHBlcnNpc3RlbnQgc3RhdGUgc3RvcmFnZS4KLSAgICByZXR1cm4g
c3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7CiB9CiAKIGNv
bnN0IFN0cmluZyYgQ0RNSW5zdGFuY2VDbGVhcktleTo6a2V5U3lzdGVtKCkgY29uc3QKQEAgLTQ5
OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRo
ZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBj
aGVja3MgYXJlIGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDY3MDRhZTdh
OTU3ZjMyZmUxZjg0OTgzZWQzYjNmNjUwMmE1MzE1YTIuLjY2OTdhMDQ1NWJlZjI5MTU1YmY1OTAz
ODRmNTJmMDQyOTFhZGMwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNzQsMTEg
Kzc0LDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUo
Y29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOwogICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJl
c3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3QgZmluYWw7CkBAIC05NywxMSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICAv
LyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkNsZWFyS2V5OyB9Ci0g
ICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQ
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKLSAgICBTdWNjZXNz
VmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIH07CkBAIC0xMTEsNyArMTA5LDcgQEAgcHVibGlj
OgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBh
cmVudCkKICAgICAgICAgOiBtX3BhcmVudEluc3RhbmNlKHBhcmVudCkgeyB9CiAgICAgdm9pZCBy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCmluZGV4IDU3ZGZjYmY0YmM3YzQ4ODQ0ZDM4MWNiMzVlY2M2NDNjMWFhYjRiOTIu
LmRiMGIyZjhhN2UwZjI2OTZhMWQ4ZGI2ZjRkNGY0N2FhZWM4ZWJkNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY1Nyw2ICs2
NTcsMTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShD
RE1JbnN0YW5jZSYgaW5zdGFuY2UpCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVy
OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1f
c2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCA9IHNob3VsZDsKKyAgICBtX3ByaXZhdGUtPnNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKTsKK30KKyNlbmRpZgorCiBNZWRp
YVRpbWUgTWVkaWFQbGF5ZXI6OmR1cmF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2
YXRlLT5kdXJhdGlvbk1lZGlhVGltZSgpOwpAQCAtMTMxMiw5ICsxMzIwLDkgQEAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBNZWRpYVBsYXllcjo6Y2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBr
ZXlJZCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChrZXlJZCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5
KiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSkKIHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJLZXlOZWVkZWQoaW5pdERh
dGEpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyS2V5TmVlZGVkKGluaXREYXRhKTsKIH0KIAog
U3RyaW5nIE1lZGlhUGxheWVyOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdl
NmNiOGEzOTBkZjdmZTFhN2FhZTAxNzM5ZGM5NDhmNzc2NjIxZWUuLmFlZjNjZWU0YWFiOWVhMjBj
NTY5ZTY3YTQxZTEyMGI3NjQwZWZhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5
QnVmZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoVWludDhBcnJheSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0
cmluZygpOyB9CiAjZW5kaWYKIApAQCAtMzY2LDYgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJik7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyAg
ICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQ7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBwYXVzZWQo
KSBjb25zdDsKICAgICBib29sIHNlZWtpbmcoKSBjb25zdDsKIApAQCAtNTE5LDcgKzUyNCw3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29u
c3Q7Ci0gICAgYm9vbCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQg
a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTY2NSw2ICs2NzAsOSBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4gbV9tZWRpYVN0cmVhbTsKICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGJvb2wgbV9zaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggOWY3ZjZlNmIwMmQzYmViZTA5MGViY2MzMmE0
YjBkY2ExY2MxNzVhOC4uN2E4MjA0NzBmOTk5YWM5OWE2YTk5ZDhmMzQyNzZjOWY0NTU5MGE3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKQEAgLTI0Myw2ICsyNDMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkg
eyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAppbmRleCA0ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4Li5iNmJh
YmZjZGU1YTBkNGI4MTE4ZDAzY2M5MmYxZDYxOWQ2MWQ3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI0Nyw5ICsyNDcsOSBAQCBib29sIENETUZh
Y3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZygpID0gZGVmYXVsdDsKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIAotYm9vbCBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSkgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewotICAgIHJldHVy
biB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOworICAgIHJldHVy
biBjb3B5VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5cGVzKCkpOwogfQogCiBib29sIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pIGNvbnN0CkBAIC0zMDUsNyArMzA1LDcg
QEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzQ29uZmlndXJhdGlv
bldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0QKICAgICByZXR1cm4gc3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiBz
ZXNzaW9uVHlwZSwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmIHNlc3Npb25UeXBl
LCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25zdAog
ewogICAgIGlmIChzZXNzaW9uVHlwZSA9PSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5KSB7CiAg
ICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVu
dDo6UmVxdWlyZWQpCkBAIC0zMTYsMTMgKzMxNiwxMCBAQCBib29sIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Np
bwogICAgIHJldHVybiBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAK
LWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1JvYnVzdG5lc3MoY29u
c3QgU3RyaW5nJiByb2J1c3RuZXNzKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAg
ICBpZiAocm9idXN0bmVzcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAg
Ly8gRklYTUU6IERldGVybWluZSBhbiBlbnVtZXJhdGVkIGxpc3Qgb2Ygcm9idXN0bmVzcyB2YWx1
ZXMgc3VwcG9ydGVkIGJ5IEZQUy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHsgZW1w
dHlBdG9tKCkgfTsKIH0KIAogQ0RNUmVxdWlyZW1lbnQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0CkBAIC0zNjYsNyAr
MzYzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdAogCiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0
RGF0YVR5cGUpKQorICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERh
dGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9
PSBzaW5mTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmlu
ZGV4IDUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZkMTI1NTFlMjhiODUuLjM4N2I5ZjkyNWFk
N2FmYmFlMmQyYzU2MTJmODRiNDM0YzBmMTBmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oCkBAIC01NSwxMSArNTUsMTEgQEAgcHVibGljOgogICAgIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZygpOwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3Ry
aW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZElu
aXREYXRhVHlwZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1T
ZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBj
b25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVz
c2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKICAgICBDRE1SZXF1aXJlbWVudCBw
ZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IDcwZWFjMzZhNDc5NzgxNWExYWYyNGUyZDU3YjAyMjZmYjQ5NzljNDYuLjVkOWE5YTBh
ZjU3NTNhMTBiMmRkMTdjMWU5NWI3OTQyYTE0MTgyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAt
MTkzMSw5ICsxOTMxLDcgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKIAogICAgICAgICB1bnNp
Z25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAgICAg
YXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVy
KSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghbV9vd25lci0+cGxheWVyKCktPmtleU5l
ZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAg
ICAgbV9vd25lci0+cGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5wdHIoKSk7CiAgICAgICAg
IHNldFJlcXVlc3RGb3JLZXkoa2V5VVJJLCBhdlJlcXVlc3QpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCBiMTFmNzFhOWI1ZTM4YmY2OThi
MTM5NDlkZGRlODZmM2RkOTk0Y2MxLi4wMGI2ZmI4MjIwY2E3ZjA1YzA5MWYyNjUzODZlMjk5MmY0
MGU2M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTc0LDExICs3NCw5IEBAIHB1Ymxp
YzoKIAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAK
LSAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNl
dFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwotICAgIFN1Y2Nl
c3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZv
aWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRl
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxD
RE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIAogICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CkBAIC0xMjAsNyArMTE4LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3MzI2Nzc1ZjQ3ZDM4NThiMDVmNzg3OGI3MzU3NGE0
NjQ3Y2I4ZDMxLi4yYThiYjM4YzcwMzMwN2E3MmE3MTM1MTNmYTZiMjM4NDE0M2FhMWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjY4LDcyICsyNjgsNjMgQEAgYm9vbCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNNZWRpYUNhcGFiaWxpdHkoY29u
c3QgQ0RNTWVkaWEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NW
YWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSBwZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8v
IEZJWE1FOiB2ZXJpZnkgdGhhdCBGYWlyUGxheVN0cmVhbWluZyBkb2VzIG5vdCAoYW5kIGNhbm5v
dCkgZXhwb3NlIGEgZGlzdGluY3RpdmUgaWRlbnRpZmllciB0byB0aGUgY2xpZW50Ci0gICAgaWYg
KGNvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpS
ZXF1aXJlZCkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKLQotICAgIGlmIChjb25maWd1cmF0aW9u
LnBlcnNpc3RlbnRTdGF0ZSAhPSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQgJiYgKGNvbmZpZ3Vy
YXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNh
Z2VSZWNvcmQpIHx8IGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Np
b25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkpKQotICAgICAgICByZXR1cm4gRmFpbGVkOwotCi0g
ICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpS
ZXF1aXJlZCAmJiAhbV9zdG9yYWdlVVJMKQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgIGF1
dG8gaW5pdGlhbGl6ZSA9IFsmXSAoKSB7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLmRpc3Rp
bmN0aXZlSWRlbnRpZmllciA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAgICAg
ICByZXR1cm4gRmFpbGVkOwogCi0gICAgaWYgKGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNv
bnRhaW5zKENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50TGljZW5zZSkgJiYgIXN1cHBvcnRzUGVy
c2lzdGVudEtleXMoKSkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKKyAgICAgICAgaWYgKGNvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudFN0YXRlICE9IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCAmJiAo
Y29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNp
c3RlbnRVc2FnZVJlY29yZCkgfHwgY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMo
Q0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKSkpCisgICAgICAgICAgICByZXR1cm4g
RmFpbGVkOwogCi0gICAgaWYgKCFQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWQ29udGVudEtl
eVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCkpCi0gICAgICAgIHJldHVybiBGYWlsZWQ7CisgICAg
ICAgIGlmIChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6
UmVxdWlyZWQgJiYgIW1fc3RvcmFnZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7CiAK
LSAgICByZXR1cm4gU3VjY2VlZGVkOwotfQorICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5zZXNz
aW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlKSAmJiAh
c3VwcG9ydHNQZXJzaXN0ZW50S2V5cygpKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAot
Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkKLXsKLSAgICAvLyBG
SVhNRTogdmVyaWZ5IHRoYXQgRmFpclBsYXlTdHJlYW1pbmcgZG9lcyBub3QgKGFuZCBjYW5ub3Qp
IGV4cG9zZSBhIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgdG8gdGhlIGNsaWVudAotICAgIHJldHVy
biBTdWNjZWVkZWQ7Ci19CisgICAgICAgIGlmICghUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9B
VkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpKQorICAgICAgICAgICAgcmV0dXJu
IEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sIHBlcnNpc3Rl
bnRTdGF0ZUFsbG93ZWQpCi17Ci0gICAgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVyc2lz
dGVudFN0YXRlQWxsb3dlZDsKLSAgICByZXR1cm4gU3VjY2VlZGVkOworICAgICAgICBtX3BlcnNp
c3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3RhdGUgPT0gQWxsb3dQZXJzaXN0ZW50U3Rh
dGU6OlllczsKKyAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICB9OworICAgIGNhbGxiYWNr
KGluaXRpYWxpemUoKSk7CiB9CiAKLUNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUpCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBt
X3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0
dXJuIFN1Y2NlZWRlZDsKKyAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi1DRE1JbnN0YW5j
ZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRT
dG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSkKK3ZvaWQgQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KQogewogICAgIGlmIChzdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkgewogICAgICAgICBtX3N0b3JhZ2VVUkwgPSBuaWw7Ci0gICAgICAgIHJldHVy
biBTdWNjZWVkZWQ7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHN0b3JhZ2VQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rv
cnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVk
OworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoIUZpbGVTeXN0ZW06OmZpbGVJ
c0RpcmVjdG9yeShzdG9yYWdlRGlyZWN0b3J5LCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1i
b2xpY0xpbmtzOjpZZXMpKSB7CiAgICAgICAgIGF1dG8gdGVtcERpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIk1lZGlhS2V5cyIpOwogICAgICAgICBpZiAo
IXRlbXBEaXJlY3RvcnkpCi0gICAgICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGF1dG8gdGVtcFN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBEaXJlY3RvcnksIEZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShzdG9yYWdlUGF0aCkpOwogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1vdmVGaWxl
KHN0b3JhZ2VEaXJlY3RvcnksIHRlbXBTdG9yYWdlUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4g
RmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
bW92ZUZpbGUodGVtcERpcmVjdG9yeSwgc3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICBy
ZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fc3RvcmFn
ZVVSTCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpzdG9yYWdl
UGF0aCBpc0RpcmVjdG9yeTpOT10pOwotICAgIHJldHVybiBTdWNjZWVkZWQ7CiB9CiAKIFJlZlB0
cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpjcmVhdGVTZXNzaW9uKCkKQEAgLTU4MCw3ICs1NzEsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFs
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1
cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VE
YXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9u
cy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7
CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CkBAIC03MTEsNyArNzAyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBbbV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJl
cXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsK
IAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxi
YWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNj
ZXNzIGNhbGxiYWNrLgogICAgIHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiBtZXRob2Qg
PSBwcm90b2NvbF9nZXRNZXRob2REZXNjcmlwdGlvbihAcHJvdG9jb2woQVZDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNzaW9uOmNvbnRlbnRLZXlSZXF1
ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVTKTsKQEAgLTExNDAsNyArMTEzMSw4IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmll
ckNoYW5nZWQoTlNEYXRhCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2Vzc2lvbklkID0gc2Vz
c2lvbklkOwotICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vz
c2lvbklkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKEFWQ29udGVudEtleVJlcG9ydEdy
b3VwKiBncm91cCwgTlNEYXRhICpzZXNzaW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IGYyYTg2Y2FiZjY4Yzg4NjgxY2MyZGZkMWVlYmY1YmJjOWQ0ZGZhYmIuLjZkZmMw
MTMzN2ZmODQ5YTc3NDJjMTFhMDAxYjYxNzkxOTFjY2NjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMTY3OCw4ICsxNjc4LDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAg
ICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7
CiAKICAgICAgICAgYXV0byBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGlu
aXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7Ci0gICAgICAgIGlmICghcGxheWVyKCktPmtl
eU5lZWRlZChpbml0RGF0YS5wdHIoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEucHRyKCkpOworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgICAgIGlmICghcGxheWVyKCktPnNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikK
QEAgLTE3MTMsNyArMTcxNiw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYXllcigpLT5rZXlO
ZWVkZWQoaW5pdERhdGEucHRyKCkpKQorICAgICAgICBwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXRE
YXRhLnB0cigpKTsKKworICAgICAgICBpZiAoIXBsYXllcigpLT5zaG91bGRDb250aW51ZUFmdGVy
S2V5TmVlZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9rZXlV
UklUb1JlcXVlc3RNYXAuc2V0KGtleUlELCBhdlJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCBjZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2
ZDcxYjM2OTY2MzJkLi44OTE5NjRiYWQ1NTA0OTNkY2Q3YjgxOGY3MDBhZWViZjdjYmYyYzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtOTgsNiArOTgs
MTEgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxT
dHJpbmc+JiYgdHlwZXMpCiAgICAgICAgIG1fc3VwcG9ydGVkRGF0YVR5cGVzLmFwcGVuZCh0eXBl
KTsKIH0KIAordm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3NlcykKK3sKKyAgICBtX3N1cHBvcnRlZFJvYnVzdG5lc3Mg
PSByb2J1c3RuZXNzZXMubWFwKFtdIChhdXRvJiByb2J1c3RuZXNzKSAtPiBBdG9tU3RyaW5nIHsg
cmV0dXJuIHJvYnVzdG5lc3M7IH0pOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
TW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBt
YWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CkBAIC0xMDgsMTEgKzExMywx
OCBAQCBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCiB7
CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IE1vY2tDRE06OnN1cHBv
cnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBtX2ZhY3RvcnktPnN1cHBvcnRlZERhdGFUeXBlcygpOworICAgIHJldHVybiB7IH07
Cit9CisKK1ZlY3RvcjxBdG9tU3RyaW5nPiBNb2NrQ0RNOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMo
KSBjb25zdAogewogICAgIGlmIChtX2ZhY3RvcnkpCi0gICAgICAgIHJldHVybiBtX2ZhY3Rvcnkt
PnN1cHBvcnRlZERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBwb3J0ZWRSb2J1c3RuZXNzKCk7
CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKSBjb25z
dApAQCAtMTM5LDcgKzE1MSw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNDb25maWd1cmF0aW9u
V2l0aFJlc3RyaWN0aW9ucyhjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UeXBlLCBjb25zdCBNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTZXNzaW9uVHlwZSYgc2Vzc2lvblR5
cGUsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2ZhY3RvcnkgfHwgIW1fZmFjdG9yeS0+c3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkuY29udGFp
bnMoc2Vzc2lvblR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDgsMTMgKzE2MCw2
IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKE1l
ZGlhS2V5U2Vzc2lvblR5cGUmIHNlc3Npb25UCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
TW9ja0NETTo6c3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYgcm9idXN0bmVzcykgY29u
c3QKLXsKLSAgICBpZiAobV9mYWN0b3J5KQotICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5zdXBw
b3J0ZWRSb2J1c3RuZXNzKCkuY29udGFpbnMocm9idXN0bmVzcyk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBNZWRpYUtleXNSZXF1aXJlbWVudCBNb2NrQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
TWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QKIHsKICAgICBpZiAobV9mYWN0b3J5KQpAQCAt
MTk5LDcgKzIwNCw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAK
IGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFz
dXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQorICAgIGlmICghc3VwcG9ydGVkSW5p
dERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YSk7CkBAIC0yMzEsNTUgKzIzNiw0OCBAQCBN
b2NrQ0RNSW5zdGFuY2U6Ok1vY2tDRE1JbnN0YW5jZShXZWFrUHRyPE1vY2tDRE0+IGNkbSkKIHsK
IH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93
UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7Ci0gICAgaWYgKCFtX2NkbSB8fCAhbV9jZG0tPnN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKKyAgICBhdXRvIGluaXRpYWxp
emUgPSBbJl0geworICAgICAgICBpZiAoIW1fY2RtIHx8ICFtX2NkbS0+c3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbmZpZ3VyYXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAg
IHJldHVybiBTdWNjZWVkZWQ7Ci19CisgICAgICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKCFmYWN0b3J5
KQorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1
ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi17Ci0gICAgaWYgKG1fZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc0FsbG93ZWQgPT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpCi0gICAg
ICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FsbG93ZWQgPSAoZGlzdGluY3RpdmVJZGVudGlmaWVycyA9PSBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnM6Olllcyk7CiAKLSAgICBhdXRvKiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFj
dG9yeSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fs
bG93ZWQgIT0gZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQpIHsKKyAgICAgICAgICAgIGlm
ICghZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgJiYgZmFjdG9yeS0+ZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc1JlcXVpcmVtZW50KCkgPT0gTWVkaWFLZXlzUmVxdWlyZW1lbnQ6OlJlcXVpcmVk
KQorICAgICAgICAgICAgICAgIHJldHVybiBGYWlsZWQ7CiAKLSAgICBpZiAoIWZhY3RvcnkgfHwg
KCFkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCAmJiBmYWN0b3J5LT5kaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzUmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQp
KQotICAgICAgICByZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9kaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQWxsb3dlZCA9IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkOworICAgICAgICB9
CiAKLSAgICBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkID0gZGlzdGluY3RpdmVJZGVu
dGlmaWVyc0FsbG93ZWQ7Ci0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKLX0KKyAgICAgICAgYm9vbCBw
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gKHBlcnNpc3RlbnRTdGF0ZSA9PSBBbGxvd1BlcnNpc3Rl
bnRTdGF0ZTo6WWVzKTsKIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFu
Y2U6OnNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
KQotewotICAgIGlmIChtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPT0gcGVyc2lzdGVudFN0YXRl
QWxsb3dlZCkKLSAgICAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKKyAgICAgICAgaWYgKG1fcGVyc2lz
dGVudFN0YXRlQWxsb3dlZCAhPSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKSB7CisgICAgICAgICAg
ICBpZiAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhaWxlZDsKIAotICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKLQotICAgIGlmICghZmFjdG9yeSB8
fCAoIXBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgZmFjdG9yeS0+cGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQoKSA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQpKQotICAgICAgICBy
ZXR1cm4gRmFpbGVkOworICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkID0gcGVy
c2lzdGVudFN0YXRlQWxsb3dlZDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gU3VjY2VlZGVk
OworICAgIH07CiAKLSAgICBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgPSBwZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkOwotICAgIHJldHVybiBTdWNjZWVkZWQ7CisgICAgY2FsbGJhY2soaW5pdGlhbGl6
ZSgpKTsKIH0KIAotQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUpCit2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgU3RyaW5n
VmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNh
dGUtPnNpemUoKSk7CiAKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpKQotICAgICAgICByZXR1cm4gU3VjY2VlZGVkOwotICAgIHJl
dHVybiBGYWlsZWQ7CisgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KIAotQ0RN
SW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJikKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgLy8gT24gZGlzayBzdG9yYWdlIGlzIHVudXNlZDsg
bm8tb3AuCi0gICAgcmV0dXJuIFN1Y2NlZWRlZDsKIH0KIAogY29uc3QgU3RyaW5nJiBNb2NrQ0RN
SW5zdGFuY2U6OmtleVN5c3RlbSgpIGNvbnN0CkBAIC0zMjUsNyArMzIzLDcgQEAgdm9pZCBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNl
LmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1
ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9y
eSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlm
ICghZmFjdG9yeSkgewpAQCAtMzMzLDcgKzMzMSw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUs
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZl
Y3RvciA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAn
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+
ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNl
VmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCmluZGV4IDM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5ZjEuLjM3MGI2
ZTI4MGQ5MWRiYTY3OWFiNDBjNWM2NDY0Y2NiYzM5MDI2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIGNvbnN0
IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzKCkgY29u
c3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRTZXNzaW9uVHlwZXM7IH0KICAgICB2b2lkIHNldFN1cHBv
cnRlZFNlc3Npb25UeXBlcyhWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mJiB0eXBlcykgeyBt
X3N1cHBvcnRlZFNlc3Npb25UeXBlcyA9IFdURk1vdmUodHlwZXMpOyB9CiAKLSAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkUm9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vw
cG9ydGVkUm9idXN0bmVzczsgfQotICAgIHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0
b3I8U3RyaW5nPiYmIHJvYnVzdG5lc3MpIHsgbV9zdXBwb3J0ZWRSb2J1c3RuZXNzID0gV1RGTW92
ZShyb2J1c3RuZXNzKTsgfQorICAgIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgc3VwcG9ydGVk
Um9idXN0bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkUm9idXN0bmVzczsgfQorICAg
IHZvaWQgc2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8U3RyaW5nPiYmKTsKIAogICAgIE1l
ZGlhS2V5c1JlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50OyB9CiAgICAg
dm9pZCBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoTWVkaWFLZXlzUmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQpIHsgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQg
PSByZXF1aXJlbWVudDsgfQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5
c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBNZWRpYUtleXNSZXF1
aXJlbWVudDo6T3B0aW9uYWwgfTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRE
YXRhVHlwZXM7CiAgICAgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+IG1fc3VwcG9ydGVkU2Vz
c2lvblR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkUm9idXN0bmVzczsKKyAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWRSb2J1c3RuZXNzOwogICAgIFZlY3RvcjxN
ZWRpYUtleUVuY3J5cHRpb25TY2hlbWU+IG1fc3VwcG9ydGVkRW5jcnlwdGlvblNjaGVtZXM7CiAg
ICAgYm9vbCBtX3JlZ2lzdGVyZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3Rh
bmNlcyB7IHRydWUgfTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKLWNsYXNz
IE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1vY2tD
RE0+IHsKK2NsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0
b3J5Pik7CkBAIC0xMDksMTEgKzEwOSwxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBNb2NrQ0RNSW5zdGFuY2U7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBl
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsOworICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMo
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb24oTWVkaWFLZXlTZXNzaW9uVHlwZSYsIGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYUtleXNSZXF1aXJl
bWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJpY3Rpb25zJikgY29uc3QgZmlu
YWw7CiAgICAgTWVkaWFLZXlzUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQo
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgTWVkaWFLZXlzUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJl
VW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0IGZpbmFsOwpAQCAtMTM4LDExICsxMzgsOSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQotICAgIFN1Y2Nlc3NWYWx1
ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgZmluYWw7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmll
cnNBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKGJvb2wpIGZpbmFsOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKLSAgICBTdWNjZXNzVmFsdWUgc2V0U3Rv
cmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTdG9yYWdl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOwogCkBAIC0xNTcsNyArMTU1LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA1ZWZlNjYyNWQ2
ZjJmOTBhZGVkNzdkOGM1NTk3ZGYzYzc4OGYzMWRiLi41YjBmYTE5Y2UyZWIyZTNlODM5MDE0OGUx
NTY2NDg3ZGMwODkzYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC00OTAsMTAgKzQ5MCw5IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJD
YWNoZWRLZXlGb3JLZXlJZChjb25zdCBTCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSop
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE2YmIyZGRmYTIxNDc0NzBlODYwMGFiNzEzOTZh
NTljZGY1NDQ5ZmEuLjRhNzM5ZmI0ZjliNWQ2NzNkNGU5ZjJiNWFmNTM5NTFlM2VlZGQwY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1lZGlhUGxh
eWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBtZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CisgICAgdm9pZCBtZWRp
YVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikgZmluYWw7CiAgICAgU3RyaW5nIG1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKQEAg
LTI1Miw2ICsyNTIsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpMYXlvdXRSZWN0IG1fdmlk
ZW9Db250ZW50Qm94UmVjdDsKICAgICBmbG9hdCBtX3ZpZGVvQ29udGVudFNjYWxlIHsgMS4wIH07
CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyAgICBib29sIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCB7IGZhbHNl
IH07CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbV9sb2dnZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IDM5MTJiNDAxNGExMTAxYjNm
MjE0MDQ3ODIwMWI1M2IxYzczYTE0NDguLjJhYWU1ZTU0NDUxMDg0NzliZDNjZDMzOWFmYTZiZjZk
MmRkYWJjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0
aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00Nyw0
ICs0OCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gV2Vi
TWVkaWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdAogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQordm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZh
Y3RvcmllcyhWZWN0b3I8V2ViQ29yZTo6Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpCit7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFj
dG9yaWVzKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKaW5k
ZXggZTE5YTUzYWZmYzhhYmU0MzIxZGVlZGFlNTFiODIyM2JhMTJiNzEzYi4uNGZhYjBlOTQ0ZmMx
NGU2ODQzNzllMzAwODE2M2JlMTYyZGQ4OWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKQEAgLTQyLDYgKzQyLDkg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bj4gY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2smLAogICAg
ICAgICBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRD
aGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0
ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZv
aWQgcmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYpIG92
ZXJyaWRlOworI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgYm9vbCBtX3Vz
ZUdQVVByb2Nlc3MgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4
IDYwZjM0NTE3OWY0OTE0Yjc3OWEwYTJiN2FhNzVlZjQzZGI2ZTFmM2UuLmI5MDllY2M0MzliY2Qz
YzZmNmRhODA0MWM2ZWYyOTNmZjM0NjY5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5o
IgogI2ltcG9ydCA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0Jsb2JSZWdpc3RyeUltcGwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9NZWRpYVN0cmF0ZWd5Lmg+CkBAIC03Myw2ICs3NCwxMiBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKGNhbGxiYWNrLCBpbnB1dERl
dmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNh
bXBsZVJhdGUpOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisg
ICAgdm9pZCByZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8Q0RNRmFjdG9yeSo+JiBmYWN0b3Jp
ZXMpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q0RNRmFjdG9yeTo6
cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOworICAgIH0KKyNlbmRpZgogfTsK
IAogTWVkaWFTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0cmF0
ZWd5KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392008</attachid>
            <date>2020-02-28 13:04:39 -0800</date>
            <delta_ts>2020-02-28 21:29:32 -0800</delta_ts>
            <desc>Patch for landing: Part 2: WebKit + SharedBuffer</desc>
            <filename>bug-208090-20200228130438.patch</filename>
            <type>text/plain</type>
            <size>35952</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFlZTQ5ZTY5MTY1ZjllM2Y0
MmU5ZDA0YzQ3NmJiZjE1NWY1M2JlYmQuLjFlODZiMjU4MmNlZDUxNzkzMDNhYzhlZjkzMzQzNWIz
NzEzZWY5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjAtMDItMjMgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rl
cm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXgg
Q2hyaXN0ZW5zZW4uCisKKyAgICAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGlz
IG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgdXNpbmcgdGhlIHNhbWUgZW5jb2RlL2RlY29kZSBwYXRo
IGFzIGlzIHVzZWQgaW4KKyAgICAgICAgV2ViQ29yZUFyZ3VtZW50Q29kZXJzOiB0aGUgU2hhcmVk
QnVmZmVyIGlzIGNvcGllZCBpbnRvIHNoYXJlZCBtZW1vcnksIGFuZCBvbmx5IGEgaGFuZGxlIGlz
IHBhc3NlZCBhY3Jvc3MKKyAgICAgICAgdGhlIFhQQyBib3VuZGFyeS4gVGhpcyByZXF1aXJlcyBl
eGlzdGluZyB1c2VycyB0byBoYW5kbGUgcmVjZWl2aW5nIGEgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
SGFuZGxlIG9uIHRoZQorICAgICAgICByZW1vdGUgc2lkZSBvZiB0aGUgWFBDIGJvdW5kYXJ5LCBi
dXQgdGhpcyBpcyB0cml2aWFsLCBhbmQgbWFueSBjYWxsIHNpdGVzIHJlcXVpcmUgYSBTaGFyZWRC
dWZmZXIgb24gdGhlCisgICAgICAgIHJlbW90ZSBzaWRlIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhp
cyBjb2RlIGNvdWxkIGJlIGltcHJvdmVkIGJ5IGFsbG93aW5nIHRoZSBTaGFyZWRNZW1vcnkgb2Jq
ZWN0IGJlIGFkb3B0ZWQKKyAgICAgICAgYnkgdGhlIFNoYXJlZEJ1ZmZlciBvYmplY3QgYXQgY3Jl
YXRpb24gdGltZSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byB6ZXJvLWNvcHkgZGVjb2RpbmcsIGJ1
dCBpcyBub3QgZG9uZSBpbgorICAgICAgICB0aGlzIHBhdGNoLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVTaGFyZWRCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
SGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlOjpidWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6
OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNo
bWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmspOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2Fk
aW5nSWNvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpkcmF3UGFnZXNUb1BERik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorCiAyMDIwLTAyLTIzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTW9kZXJuIEVNRSBBUEkgaW4gdGhl
IEdQVSBQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2JjNTVkZmMzMjhlNGE2ODgzNTFjYWU4MWYw
NjY1MWU5M2MxNzg0My4uNjg1MjAyMzE4ZTgyYjY2MzAzMDhlMTUwY2YyZDc3YzZlZDZmOGFkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcApAQCAtOTUwLDcgKzk1MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRh
RW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZVNoYXJlZEJ1ZmZlcih7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7
CkBAIC05NjAsNyArOTYwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUwKIHsKICAgICBBU1NF
UlQoIWlzU3luY2hyb25vdXMoKSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoeyBidWZmZXIgfSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVNoYXJlZEJ1ZmZl
cih7IGJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDY3MmJlYzQ4ZWE3OWM2ODJjMTI0NWU1MjZmMDQ4OGM2
Nzk5NjgwYjcuLjVjMmU3YzAwMDAwMWI1ODNlOTVmZDU0OWM2MWIxZjkzYzFlNjE4NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTE1NSw3ICsxNTUsMTYg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDYKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KCFtX3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSB7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0
aCB9KTsKKyAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0pOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVTaGFyZWRCdWZmZXIoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQor
eworICAgIGlmIChtX2lzRG9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFtX3Rp
bWVvdXRUaW1lci5pc0FjdGl2ZSgpKTsKKyAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpEaWRSZWNlaXZlU2hhcmVkQnVmZmVyIHsgZGF0YSwgZW5jb2RlZERhdGFM
ZW5ndGggfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZUZv
cm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGZvcm1EYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggZDMzY2JmZjEwODljYzEwNWRkMWEwMGJl
YmZkZjYxZDMzYzdmNjZiZC4uOTVlZDc1OTZhOGIxMWFkOWJkZThjOWIyZTJmMDVhYWY1NjdmNjBj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC00NCw2ICs0NCw3
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZTsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTc5
LDYgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlk
UmVjZWl2ZVNoYXJlZEJ1ZmZlcihjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0
YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsK
ICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgppbmRleCAx
OGU2MjlmMGQxNDZlZDJkNDI5ZGIxYmEyODcwMWU4M2ZiOTZlNjJmLi40Mjc0YWRjMTY2MTg3NDBh
ZTg4OGYyMTFkZjQ5MjIzNGNmMzQ0NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgpAQCAtMjcsNyArMjcsOCBAQCBtZXNzYWdlcyAt
PiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIE5vdFJlZkNvdW50ZWQgewogICAgIERpZEZhaWwoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICBEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQor
ICAgIERpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVTaGFyZWRCdWZmZXIoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlk
UmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5p
c2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVz
c2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4
IGE3NDlhYWI4NzAwNTRjZWI2OTBlNWYxNGY0MDc1NjNmZmNkMGY5YjguLjg4ZjRmMmZhNjQyNjMz
NDliN2FkMjJkMDZmNDNhMjdmNzIzMzUxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgKQEAgLTk2LDEyICs5Niw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsK
ICAgICB0eXBlZGVmIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8
VD4+IFR5cGU7CiB9OwogCi1jbGFzcyBEYXRhUmVmZXJlbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZTsKLXRlbXBsYXRlPD4gc3RydWN0IENvZGluZ1R5cGU8Y29uc3QgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSY+IHsKLSAgICB0eXBlZGVmIERhdGFSZWZlcmVuY2UgVHlwZTsK
LX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFRzPgogc3RydWN0IENvZGluZ1R5cGU8c3RkOjp0
dXBsZTxUcy4uLj4+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dHlwZW5hbWUgQ29kaW5nVHlw
ZTxUcz46OlR5cGUuLi4+IFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5kZXggZGFkNDY2MDQ2MzJlOTI2OWYx
OTFkMTVjODBkZDIxMWU1NDg0ZTdhMy4uMmNmYzdmYWM4MTE4YmViZDE4NTUzYWMyMmExZDg1ZDdk
ZjI4MGFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAtMjUsNDAgKzI1LDQ1IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoKSA9IGRlZmF1
bHQ7CisgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6
IG1fZGF0YShidWZmZXIpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKHN0ZDo6bWFrZV9w
YWlyKGRhdGEsIHNpemUpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpKQorICAgIHsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIp
OworICAgIH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7
IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorCisgICAgY29uc3QgY2hh
ciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51
bGxwdHI7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9i
dWZmZXItPnNpemUoKSA6IDA7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKICAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgc3dpdGNoT24obV9kYXRh
LAotICAgICAgICAgICAgW2VuY29kZXIgPSAmZW5jb2Rlcl0gKGNvbnN0IFJlZjxjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIG11dGFibGUgewotICAgICAgICAgICAgICAgIHVp
bnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICAgICAgICAgICAgICBlbmNv
ZGVyLT5yZXNlcnZlKGJ1ZmZlclNpemUgKyBzaXplb2YodWludDY0X3QpKTsKLSAgICAgICAgICAg
ICAgICAqZW5jb2RlciA8PCBidWZmZXJTaXplOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCksIDEpOwot
ICAgICAgICAgICAgfSwgW2VuY29kZXIgPSAmZW5jb2Rlcl0gKGNvbnN0IHN0ZDo6cGFpcjxjb25z
dCB1aW50OF90Kiwgc2l6ZV90PiYgcGFpcikgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgdWlu
dDY0X3QgYnVmZmVyU2l6ZSA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgICAgIGVuY29kZXIt
PnJlc2VydmUoYnVmZmVyU2l6ZSArIHNpemVvZih1aW50NjRfdCkpOwotICAgICAgICAgICAgICAg
ICplbmNvZGVyIDw8IGJ1ZmZlclNpemU7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLCAxKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgKTsKKyAgICAgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKKyAgICB9CisKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4gYnVmZmVyOworICAgICAgICBkZWNvZGVyID4+IGJ1ZmZlcjsKKyAgICAgICAg
aWYgKCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4geyBXVEZNb3ZlKCpidWZmZXIpIH07CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZhcmlh
bnQ8c3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Q+LCBSZWY8Y29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggOGM5ZmEyMWFmMzhhNzE2MmM2YzIwOWU5Mzk0Njg5MDZhMjVj
M2NhMy4uNWFkYjM3ZDhiNWJkZWYwMGE1NjZmNGEwMmRiNjRiYjk1ZGFiMDAyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMjAzLDQg
KzMyMDMsMTggQEAgT3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm8KIH0KICNlbmRpZgogCit2b2lkIEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
K3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKwor
T3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVy
biBidWZmZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAzZDJlYjk0NTA3Nzc1ZDc5OGRlNzFkYTA0
YjQ0ZWNhMDUyM2VmZmE3Li44OTg2MzU4M2YzYmMxNjY5MDk3NDZkZjYxODI2NDdkNjkyNTlhZWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
MTAxLDYgKzEwMSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0ZXBz
VGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7
CkBAIC04MzAsNiArODMxLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiB7CiB9OwogI2VuZGlmCiAKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogfSAvLyBuYW1lc3BhY2Ug
SVBDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBmZmJmMGZhMWVlODRjYmIxZjI1YzZhY2Rj
NzJiODM0YzA0ZDAxZWZiLi4yNTgzNzM2NmNmZDU2ODlmMDEwNDllZTM3MjhmNTY4MWVmZWJiZDA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiUGFnZUNsaWVudC5oIgogI2ltcG9y
dCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCisj
aW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJXZWJQYWdlTWVz
c2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2Vic2l0ZURh
dGFTdG9yZS5oIgpAQCAtMTgzLDEzICsxODQsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERy
YWdDYXJldFJlY3QoY29uc3QgSW50UmVjdCYgZHJhZ0NhcmV0UmVjdCkKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVy
QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIGNvbnN0IFN0cmlu
ZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVy
ZW5jZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8
QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSkKIHsKICAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5k
YXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRv
cHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCldKTsK
KyAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdy
YXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhUmVmZXJlbmNl
LmJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpXSk7CiAgICAgW2ZpbGVXcmFw
cGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnByZWZlcnJlZEZpbGVOYW1lXTsKICAgICBhdHRhY2ht
ZW50LT5zZXRGaWxlV3JhcHBlcihmaWxlV3JhcHBlci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjZTlhMTBjNjY1ZTAzMmQ0Njk2NjljZDgw
NjkwYjQ0NmMzNTczM2JkLi44ODRmNjUxN2ZlYzFhNzhhMTkwMTM0NWM5MmI1Y2QxNjIwYTVhYmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY5MTcsMTMg
KzY5MTcsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayhDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJl
ZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRhdGFD
YWxsYmFjayhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2sp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0
dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZl
cmVuY2Uuc2l6ZSgpKS5wdHIoKSk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhS
ZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpib29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKQEAgLTkwOTIsNyArOTA5Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBD
YWxsYmFjCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJ
Y29uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
KQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxs
YmFja0lELCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAg
ICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQpAQCAtOTMyMyw3ICs5MzIzLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQ
STo6QXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNo
bWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRh
Y2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9t
RGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
RnJvbURhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Ms
IElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXA6OmlzVmFsaWRLZXkoaWRlbnRpZmllcikpOwogCkBA
IC05NDMwLDcgKzk0MzAsNyBAQCBXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0dGFjaG1lbnRB
dHRyaWJ1dGVzIFdlYlBhZ2VQcm94eTo6d2lsbFVwZGF0ZUF0dGFjaG1lbgogCiAjaWYgIVBMQVRG
T1JNKENPQ09BKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1l
bnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJikKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVu
dChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDU3ODg0M2RjMmYyYjI3N2VhNzcwMDcyZWQ1ZDk0M2RkODBkNjI1YzIu
LjQ4NGI5NzU2MzA4ZWJkY2E2NDhhMGFmOTU4NjA5N2U5NjZmM2JiZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xOTQsNiArMTk0LDcgQEAgZW51bSBjbGFzcyBJ
bnNwZWN0b3JUYXJnZXRUeXBlIDogdWludDhfdDsKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVj
b2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTUwOCw3ICsxNTA5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAKICAgICB2b2lk
IGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBXZWJLaXQ6
OkNhbGxiYWNrSUQpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxi
YWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSYpOwogCiAgICAgdm9pZCBzZXRGb2N1cyhib29sIGZvY3VzZWQpOwogICAgIHZvaWQg
c2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CkBAIC0yMDA5LDcgKzIw
MTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1
ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKICAgICB2b2lkIHZvaWRDYWxsYmFjayhDYWxsYmFja0lE
KTsKLSAgICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBDYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGltYWdlQ2FsbGJhY2soY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGJvb2xDYWxs
YmFjayhib29sIHJlc3VsdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhj
b25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKQEAgLTIxODcsMTIgKzIxODgsMTIgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN0b3BBbGxVUkxTY2hlbWVUYXNrcyhXZWJQcm9jZXNzUHJveHkqID0gbnVs
bHB0cik7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
ckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxl
UGF0aChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXpl
ZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAg
dm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKTsKIAotICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0
dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBwbGF0Zm9ybVJl
Z2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmIHBy
ZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKTsK
ICAgICB2b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+
JiYsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQgcGxhdGZvcm1DbG9uZUF0dGFj
aG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBmcm9tQXR0YWNobWVudCwgUmVmPEFQSTo6QXR0
YWNobWVudD4mJiB0b0F0dGFjaG1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOWY2NDRmNDYyZmJhNjU2MTc2NzllZjIy
ZGJjZTI4ODI1NjFhOTEwNS4uZWExOThjNTU1MWZhNGM5MmNlNWUxYjNjMDk2NzJjZTBhZDBiMjFi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtNTMwLDcgKzUzMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogICAgIEdldExvYWREZWNpc2lvbkZvckljb24o
c3RydWN0IFdlYkNvcmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQotICAgIEZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKTsKKyAgICBGaW5pc2hlZExvYWRpbmdJY29uKFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5k
aWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCA2YjI3NzNlYzk3
MzUxOGEwMWUxNDU1NDA1MjcyNWU1NTk0MDZiYzA1Li45NDdhZTAyNjcwYTIwZjU0Y2M3NDEzN2Q1
MGUyZGI1NGY5MWUzMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZQcml2YXRlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBl
YmQ4NTZmNmIyM2EwMzU0NTQ0NGRhNzM5ZDQyODE3ZGI2YWU4NTQyLi44NDliOWE3YmNiMzA0ODI0
OTBkYjgyOTI0NTU0MDFiYzFlZGExNjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNiwxMSArMjYsMTEg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgog
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkZyYW1l
LmgiCkBAIC0xOTAsMjcgKzE5MCw0NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1f
Y29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURl
Y2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVNoYXJl
ZEJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBkYXRhLCBpbnQ2NF90IGVu
Y29kZWREYXRhTGVuZ3RoKQoreworICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlU2hhcmVkQnVmZmVyIG9mIHNpemUgJWx1IGZvciAnJXMn
IiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNw
b25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2
YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CisKKyAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRD
b250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsK
KyAgICAgICAgZGVmZXJSZWNlaXZpbmdTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcHJvY2Vzc1JlY2Vp
dmVkRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXpl
KCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdv
cmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhl
IHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlz
SW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOwotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9h
ZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAg
ICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0
YSwgZW5jb2RlZERhdGFMZW5ndGgpOwotICAgICAgICB9KTsKKyAgICAgICAgZGVmZXJSZWNlaXZp
bmdTaGFyZWRCdWZmZXIoeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICBwcm9jZXNzUmVjZWl2ZWREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKK30KKwor
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGVmZXJSZWNlaXZpbmdTaGFyZWRCdWZmZXIoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKK3sKKyAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KG1fY29yZUxvYWRlcikKKyAgICAgICAgICAgIGRpZFJlY2VpdmVTaGFyZWRCdWZmZXIoV1RGTW92
ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIH0pOworfQogCit2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpwcm9jZXNzUmVjZWl2ZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorewogICAgIGlmICghbV9udW1CeXRlc1Jl
Y2VpdmVkKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRh
OiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgfQotICAgIG1fbnVtQnl0ZXNSZWNlaXZl
ZCArPSBkYXRhLnNpemUoKTsKKyAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gc2l6ZTsKIAotICAg
IG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkQnl0ZXMpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6ZSwg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ODNlMzc5Yzg5ZWNmYTk1MzBiMGFi
ZmExYzY5ZmVhOWQ1Mzk2NmZiLi44NDZiMDA3MjkyMjJjNDMyMTc3OTE4MDRlNzY2MjI4OTk3ZDAw
YzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIH0KIApAQCAtODMs
NyArODMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRf
dCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UmJiwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlU2hhcmVkQnVmZmVyKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTkyLDYgKzkzLDkgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgc3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0
eVBvbGljeURlbmllZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKKyAgICB2
b2lkIGRlZmVyUmVjZWl2aW5nU2hhcmVkQnVmZmVyKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSYmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHByb2Nlc3NSZWNl
aXZlZERhdGEoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpOworCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJik7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KaW5kZXggMDJhMTRmNTlhMzA0NzQ0YzJkMTgzZWE3
OWU5OWViYWViNGNmYmJhMi4uYWIzOWI1OTQ2Y2FjYTgxZjc1YjE4MDc3MTRiZjc5ZGE1MjNhYTNk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDggQEAgbWVzc2Fn
ZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogICAgIFdpbGxTZW5kUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3Bv
bnNlKQogICAgIERpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxC
eXRlc1RvQmVTZW50KQogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJl
Y2VpdmVTaGFyZWRCdWZmZXIoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAgICAgRGlkRmFpbFJl
c291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZEZhaWxTZXJ2
aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCAzNGU4NmMxMWUyNDg2YzdhMTYwMzZkN2I0
NjhmYjc4ZDI3NThmZDYxLi42NjBiODFlOThmYjBjNmMyOTNkZDAzNzdmM2M4NDQ5ZDE4Zjk1MjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtODQsNyArODQs
NyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlRGF0YSB7IGJ1ZmZlci5nZXQoKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVy
LT5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVTaGFyZWRCdWZmZXIg
eyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBt
X2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJiBmb3JtRGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRjYjBkY2RjY2FmNjA2ZDYz
NjVkNDg2Mjk0ODhmODA2M2RiZjg2YTkuLjI2ZThjZTQxNjRiNGQyMjc3ZDM3NTBiYzI0MjE4M2Ey
OGI1ZTBhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDAsNiArNDAs
NyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQbHVnaW5W
aWV3LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgpAQCAtMTkyNSw5ICsxOTI2LDkgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIFNoYXIKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50
ZWdlcihjYWxsYmFja0lkZW50aWZpZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9m
cmFtZS0+cGFnZSgpIH0pIHsKICAgICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJh
Y2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBk
YXRhLT5zaXplKCkgfSkpOworICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgKmRhdGEgfSkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyBudWxscHRyLCAwIH0pKTsK
KyAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNo
ZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7IH0pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMGFiMzM3NWNkNjAwZmQw
NTQwNWYyODlhNTUwNmFkNjNkYjg0MDNiMC4uM2ZmYTgyY2Q1ODcwZTE5OGJkYzQ5ZTZmMTc5YWZi
NTI2M2MzODEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTM1MTQsNyArMzUxNCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
aWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0
YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkp
KSB9OworICAgICAgICBkYXRhUmVmZXJlbmNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSk7CiAjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxs
YmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CkBAIC0zNTk1LDcgKzM1OTUsNyBA
QCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBDYWxsYmFja0lEIGNhbGxiYWNrSQogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQot
ICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAg
ICAgZGF0YVJlZmVyZW5jZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2Vu
ZGlmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJl
ZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQpAQCAtNDkzNSw3ICs0OTM1LDcgQEAgdm9pZCBXZWJQ
YWdlOjpkcmF3UGFnZXNUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFn
ZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgZmlyc3Qs
IGNvdW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
YXRhQ2FsbGJhY2soeyBDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSB9LCBjYWxs
YmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2so
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZQYWdlRGF0YS5nZXQoKSkgfSwgY2FsbGJhY2tJRCkp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGSW1wbChGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50
MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSkKQEAg
LTY1NzksMTIgKzY1NzksMTIgQEAgdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjQKICAgICBoYW5kbGVy
LT50YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHRhc2tJZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRs
ZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEo
dWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgYXV0byogaGFu
ZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVy
SWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0Rp
ZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOwor
ICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXpl
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhLmRhdGEoKSkpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVy
SWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQpAQCAtNjgwNiw3ICs2ODA2LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmkKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRp
ZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0
ZUxheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IGQyNjM0YTVmNDMzNDE1Y2JhYmFiNzVjOTZjMGVlMDAzMTk3NDJhNDQuLjNhZTQ2MzEwMzI1
Y2JmZDBiMjE1NzY3ZTg5ZDYxZTFiOTY0NmQ0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NSw2ICsxNTUsNyBAQCBuYW1lc3BhY2UgSVBDIHsK
IGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xMTk0LDcgKzExOTUsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xv
c2luZ0ltYWdlRGF0YSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZp
bGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0
YSwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKQEAgLTE2NzgsNyArMTY3OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVybFNjaGVtZVRh
c2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2
NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB1cmxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRh
c2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHVybFNj
aGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0
X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYp
OwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVu
dGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogCiAgICAgdm9pZCBzZXRJc1N1c3BlbmRlZChib29sKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392035</attachid>
            <date>2020-02-28 17:13:14 -0800</date>
            <delta_ts>2020-02-28 21:53:09 -0800</delta_ts>
            <desc>Part 3: RemoteCDM</desc>
            <filename>bug-208090-20200228171312.patch</filename>
            <type>text/plain</type>
            <size>166622</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5ODU5Nzk0ZjdlY2U2ZWZj
NDU1ODZmNmE2ZWQyMWVkODEyYTc2Y2UuLmQ0ZTY3ZTM4NWU5YzZjNTUyNzZkOTEwNjI3YTI5ODRj
YWUyOTg1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcwIEBACisyMDIwLTAyLTIzICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTW9k
ZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
UmVtb3RlQ0RNRmFjdG9yeSwgUmVtYXRlQ0RNLCBSZW1vdGVDRE1JbnN0YW5jZSwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLCBhbmQgYWxsCisgICAgICAgIG9mIHRoZWlyIGFzc29jaWF0ZWQgUHJv
eHkgb2JqZWN0cy4KKworICAgICAgICBBbGxvdyB0aGUgZXhpc3RpbmcgQ0RNRmFjdG9yeSBtYWNo
aW5lcnkgdG8gd29yayBub3JtYWxseSBieSBleHBsaWNpdGx5IGNsZWFyaW5nIG91dCBhbGwgdGhl
IGV4aXN0aW5nIAorICAgICAgICB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBlbmFibGVkLCBhbmQg
cmVzZXR0aW5nIHRob3NlIGZhY3RvcmllcyB0byBkZWZhdWx0IHdoZW4gdGhlIEdQVSBwcm9jZXNz
IGlzIGRpc2FibGVkLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFk
ZEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNl
c3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNl
c3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y29u
ZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6Omluc3RhbmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Ojp+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENo
YW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6
OlJlbW90ZUNETVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBv
cnRzSW5pdERhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVNlc3Np
b25JZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpnZXRTdXBwb3J0ZWRDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXpl
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y29uZmlndXJhdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpmYWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6Y2RtSW5zdGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVB
ZnRlcktleU5lZWRlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1
c1ZlY3Rvcj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURl
dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRl
bXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktl
eU5lZWRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6UmVtb3RlQ0RNKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3Vw
cG9ydHNJbml0RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6ZGlzdGlu
Y3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNOjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFu
ZENsZWFyYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Y3JlYXRlSW5z
dGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1GYWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5OjphZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeTo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6UmVtb3RlQ0RNSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y2xvc2VTZXNzaW9u
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c3Rv
cmVSZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW46
IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKwogMjAyMC0w
Mi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0g
SW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDUy
NWM4NGVjYmU3OTFmNDBiNTQ3ZmI3ZmFmZGU5ZDAzYmE4MTBiYWUuLmZiMzUwZDQ4NTVhMWFiMzNi
MWI2ZDFjNGRjZTczYTdlNzI2YTY1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IGNyZWF0ZUNETShjb25z
dCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0
IFN0cmluZyYpID0gMDsKIAotICAgIHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiByZWdpc3Rl
cmVkRmFjdG9yaWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxDRE1GYWN0
b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCByZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIHVucmVnaXN0ZXJGYWN0b3J5KENETUZhY3RvcnkmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDg2ZjAxYjM5YTA0NzI4
YzJjMGJmZjY3ZTViZDM5M2YwOTFiNzdmOWQuLjlmOTQ2Zjg0OTdhZjIzYjRhZmE1MWI3OTE4NDE4
NTE4ODYwYWM1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKQEAgLTE4LDYgKzE4LDEwIEBAICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BV
UHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgogJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
UHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xMTIsNiArMTE2LDcgQEAg
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2Vz
LmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdl
cy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
aW5kZXggNjQ2NGQ4Mzg5ZmI1M2Y1Mjc1MDcwNTM5Yzk4MTBmYjJkOGNjYjMxOS4uYTk2YzJjZmRk
ZDQ2YjM1OTIzOGU5NjIzNDNhOTkyMjEwNGVlYTU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xMzcsNiArMTM3LDIxIEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFj
dG9yeVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RN
UHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDQzNmU0YjQyMjRjYjA0NWM5ZWFiM2E2YzcwNTQzMGJkNTI1MzMzMzQuLjQ1ZWUzZGI3
ZWQ3ZTEzMzcyYzhhNzVhZDU1NWExNjU4N2Y2N2QwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTE1MSw2ICsxNTEsMTEgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciBcCiAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eSBcCisgICAgUmVtb3RlQ0RNUHJveHkgXAorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94
eSBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uIFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCiAgICAgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBc
CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmEyYzg3MGY3
YWFhMWIwZGIwMDBlZjg4ODI3YzlhMGY2MWRjZjI1Yi4uNmNmMWMzMGIzZTMzMDEyNzc0NjZkOTJl
ZTI5MzMyNDYwN2U1OWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjAsMTAgKzYwLDE4IEBACiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0KICNpbmNsdWRlIDxXZWJDb3JlL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oIgorI2VuZGlmCisKKwogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTk5LDYgKzIwNywx
NiBAQCBMaWJXZWJSVENDb2RlY3NQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bGli
V2ViUlRDQ29kZWNzUHJveHkoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
ZG1GYWN0b3J5UHJveHkoKQoreworICAgIGlmICghbV9jZG1GYWN0b3J5UHJveHkpCisgICAgICAg
IG1fY2RtRmFjdG9yeVByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVDRE1GYWN0b3J5UHJveHk+KCp0
aGlzKTsKKworICAgIHJldHVybiAqbV9jZG1GYWN0b3J5UHJveHk7Cit9CisjZW5kaWYKKwogdm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogewogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNYXAuZW5zdXJl
KHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBbJl0oKSB7CkBAIC0yNjksNiArMjg3LDI4IEBA
IGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNl
bmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZl
TWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAg
ICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRp
ZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFw
KCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCkBAIC0yOTQsNiAr
MzM0LDI4IEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgfQogI2VuZGlmCiAjZW5kaWYK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIG1lc3NhZ2VS
ZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKTsKIH0KIApAQCAtMzAyLDcgKzM2NCw3IEBAIGNvbnN0IFN0cmluZyYgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZ3B1UHJvY2Vzcy0+bWVkaWFDYWNoZURpcmVjdG9yeShtX3Nlc3Npb25JRCk7CiB9CiAK
LSNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKSB8fCBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIGNvbnN0IFN0cmluZyYg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fZ3B1UHJvY2Vzcy0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eShtX3Nlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA3NDcxNWM4MGM1NDViZWFmZWMzZjZiN2UwOTg0
ZWNhNTBjYmEyNjY5Li5hM2VjYTVjOGZhZDY5MTgzODBmZDkzM2JmNjMwZGQ0Y2ZmNzMwZDk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgR1BVUHJvY2VzczsKIGNsYXNzIExpYldl
YlJUQ0NvZGVjc1Byb3h5OwogY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI7CiBj
bGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CitjbGFzcyBS
ZW1vdGVDRE1GYWN0b3J5UHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTsKIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXI7CkBAIC04NSw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIHNlc3Npb25NYW5hZ2VyKCk7CiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSYgY2RtRmFj
dG9yeVByb3h5KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTEzOCw2ICsxNDMsMTAg
QEAgcHJpdmF0ZToKICAgICAKICAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
YXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Pj47CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5TWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWFwOworCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1GYWN0b3J5UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YjRhZmQ0YjQzNjc3N2QxYzRkMTNmODcw
YjQ0ZGQyYjM2OTgxMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApAQCAtMCwwICsxLDE2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0RNRmFjdG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpSZW1vdGVDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9u
KQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6On5SZW1vdGVDRE1GYWN0b3J5UHJveHko
KSA9IGRlZmF1bHQ7CisKK3N0YXRpYyBDRE1GYWN0b3J5KiBmYWN0b3J5Rm9yS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIGF1dG8mIGZhY3RvcmllcyA9IENETUZhY3Rv
cnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBhdXRvIGZvdW5kSW5kZXggPSBmYWN0b3Jp
ZXMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgZmFjdG9yeSkgeyByZXR1cm4gZmFjdG9yeS0+c3Vw
cG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKTsgfSk7CisgICAgaWYgKGZvdW5kSW5kZXggPT0gbm90
Rm91bmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBmYWN0b3JpZXNbZm91
bmRJbmRleF07Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpjcmVhdGVDRE0oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSWRl
bnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgYXV0byBmYWN0b3J5ID0gZmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0ZW0pOworICAgIGlm
ICghZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gcHJpdmF0ZUNETSA9IGZhY3RvcnktPmNyZWF0ZUNETShr
ZXlTeXN0ZW0pOworICAgIGlmICghcHJpdmF0ZUNETSkgeworICAgICAgICBjb21wbGV0aW9uKHsg
fSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcHJveHkgPSBSZW1v
dGVDRE1Qcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBXVEZNb3ZlKHByaXZhdGVDRE0p
KTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OworICAgIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IHByb3h5LT5jb25m
aWd1cmF0aW9uKCk7CisgICAgYWRkUHJveHkoaWRlbnRpZmllciwgV1RGTW92ZShwcm94eSkpOwor
ICAgIGNvbXBsZXRpb24oV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShjb25maWd1cmF0aW9u
KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24oZmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0
ZW0pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7
CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVD
RE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9u
cy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0
KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRl
c3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IG1faW5zdGFuY2Vz
LmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBl
PihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpbnN0YW5jZS0+ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQor
ICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
ciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRQcm94eShS
ZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYg
cHJveHkpCit7CisgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3By
b3hpZXMuc2V0KGlkLCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpyZW1vdmVQcm94eShSZW1vdGVDRE1JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VS
VChtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMucmVtb3ZlKGlkKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZEluc3RhbmNlKFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+
JiYgaW5zdGFuY2UpCit7CisgICAgQVNTRVJUKCFtX2luc3RhbmNlcy5jb250YWlucyhpZCkpOwor
ICAgIG1faW5zdGFuY2VzLnNldChpZCwgV1RGTW92ZShpbnN0YW5jZSkpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhpZCkpOworICAg
IG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlUHJveHkqIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlkKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5PiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNvbnRhaW5z
KGlkKSk7CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5z
KGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM5YjFjY2M5NWJiZDNmZTNiOWYzMzUyZDg1MDAyNzdhNGJmZDM5
MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTsKK2NsYXNzIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OworY2xhc3MgUmVtb3RlQ0RNUHJveHk7CitzdHJ1Y3Qg
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjsKKworY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IGZp
bmFsIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFJlbW90ZUNETUZhY3RvcnlQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeVByb3h5KCk7CisKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9j
ZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2Vp
dmVDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1N
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jik7CisKKyAgICB2b2lkIGFkZFByb3h5KFJlbW90ZUNETUlkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShS
ZW1vdGVDRE1JZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkSW5zdGFuY2UoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4m
Jik7CisgICAgdm9pZCByZW1vdmVJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIp
OworICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNz
Q29ubmVjdGlvbjsKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWwgeyB9Cisg
ICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIE1l
c3NhZ2VzCisgICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1
cmF0aW9uJiYpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBI
YXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94
eT4+IG1fcHJveGllczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+PiBtX2luc3RhbmNlczsKKyAg
ICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lvbnM7Cit9OworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ3
YzVlNmU2MWM0MjA3ODMxZGEwYmQxMThhNmFhZWI0MGQzMzEzNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNE
TUZhY3RvcnlQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVDRE0oU3RyaW5nIGtleVN5
c3RlbSkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5jaHJvbm91cworICAgIFN1
cHBvcnRzS2V5U3lzdGVtKFN0cmluZyBrZXlTeXN0ZW0pIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUyNDhmZGZj
ODJkOTRhZTZlMGVkMTc1YjM1MWMxYjI2YjU1YTMxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApAQCAt
MCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29u
ZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0RNSW5zdGFuY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2Rt
LCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBt
YWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24sIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmPih7CisgICAgICAgIHBy
aXYtPmtleVN5c3RlbSgpLAorICAgIH0pOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eT4obmV3IFJlbW90ZUNETUluc3RhbmNlUHJveHkoV1RGTW92ZShj
ZG0pLCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90
ZUNETUluc3RhbmNlUHJveHk6OlJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2NkbShX
VEZNb3ZlKGNkbSkpCisgICAgLCBtX2luc3RhbmNlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2Nv
bmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEFsbG93
RGlzdGluY3RpdmVJZGVudGlmaWVycyBhbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93
UGVyc2lzdGVudFN0YXRlIGFsbG93UGVyc2lzdGVudFN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN1Y2Nlc3NWYWx1ZSk+JiYgY29tcGxldGlvbikKK3sKKyAgICBtX2luc3RhbmNlLT5pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgYWxsb3dEaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzLCBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgV1RGTW92ZShjb21wbGV0aW9uKSk7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgY2VydGlmaWNhdGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIGlmICghY2VydGlm
aWNhdGUuYnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbihDRE1JbnN0YW5jZTo6RmFpbGVk
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW5zdGFuY2UtPnNldFNlcnZlckNl
cnRpZmljYXRlKGNlcnRpZmljYXRlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUo
Y29tcGxldGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgbV9pbnN0YW5jZS0+
c2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OmNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBh
dXRvIHByaXZTZXNzaW9uID0gbV9pbnN0YW5jZS0+Y3JlYXRlU2Vzc2lvbigpOworICAgIGlmICgh
cHJpdlNlc3Npb24gfHwgIW1fY2RtIHx8ICFtX2NkbS0+ZmFjdG9yeSgpKSB7CisgICAgICAgIGNv
bXBsZXRpb24oeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAg
IGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjcmVhdGUobWFr
ZVdlYWtQdHIobV9jZG0uZ2V0KCkpLCBwcml2U2Vzc2lvbi5yZWxlYXNlTm9uTnVsbCgpLCBpZGVu
dGlmaWVyKTsKKyAgICBtX2NkbS0+ZmFjdG9yeSgpLT5hZGRTZXNzaW9uKGlkZW50aWZpZXIsIFdU
Rk1vdmUoc2Vzc2lvbikpOworICAgIGNvbXBsZXRpb24oaWRlbnRpZmllcik7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzExMmQ1Zjg0Yjg4NDczMTlkYzQwNGZl
YTE1MDZjOGIxZWYzMGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtMCwwICsxLDg3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5o
PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENETUluc3RhbmNlOworc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETUluc3RhbmNlUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYpOworICAgIH5SZW1vdGVDRE1JbnN0YW5jZVByb3h5KCk7
CisKKyAgICBjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KKyAgICBXZWJDb3Jl
OjpDRE1JbnN0YW5jZSYgaW5zdGFuY2UoKSB7IHJldHVybiBtX2luc3RhbmNlOyB9CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpD
RE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4m
Jik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIHVzaW5nIFN1Y2Nlc3NW
YWx1ZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWU7CisgICAgdXNpbmcgQWxs
b3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVyczsKKyAgICB1c2luZyBBbGxvd1BlcnNpc3RlbnRTdGF0ZSA9IFdl
YkNvcmU6OkNETUluc3RhbmNlOjpBbGxvd1BlcnNpc3RlbnRTdGF0ZTsKKworICAgIC8vIE1lc3Nh
Z2VzCisgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywg
QWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3VjY2Vzc1ZhbHVl
KT4mJik7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmKTsK
KyAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBj
cmVhdGVTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciYpPiYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+
IG1fY2RtOworICAgIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBV
bmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247
CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOworfTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTUwZTg1MzQxYzJlYjM1YmI2ZWMwODA5NWQ1YTAwNGVjY2ExMzlmOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZVNlc3Npb24o
KSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKSBTeW5j
aHJvbm91cworICAgIEluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBlbnVtOmJvb2wgV2ViQ29y
ZTo6Q0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzQWxsb3dlZCwgZW51bTpib29sIFdlYkNvcmU6OkNETUluc3RhbmNlOjpBbGxvd1Bl
cnNpc3RlbnRTdGF0ZSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKSAtPiAoZW51bTpib29sIFdlYkNv
cmU6OkNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgc3VjY2VzcykgQXN5bmMKKyAgICBTZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgY2VydGlmaWNhdGUp
IC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNz
KSBBc3luYworICAgIFNldFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nIGRpcmVjdG9yeSkKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWM4NmU2
YjQ2MmY5M2ZjYTVlZDdhOGNlY2EyNjRiNTU1NmRhNGVhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94
eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lvbiks
IGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9u
UHJveHktPm1fc2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJu
IHNlc3Npb25Qcm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBS
ZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY2RtKFdURk1vdmUoY2Rt
KSkKKyAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3Ry
aW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFpbml0RGF0YS5i
dWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2Us
IGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUg
Q0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YSgpIGNoZWNrIGhlcmU6CisgICAgaWYgKCFtX2Nk
bS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUsICppbml0RGF0YS5idWZmZXIoKSkpIHsK
KyAgICAgICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5
cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2Nv
bXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewor
ICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRp
dmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVk
KTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBk
YXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y29tcGxldGlvbikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNv
bXBsZXRpb24odHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRl
OjpzYW5pdGl6ZVJlc3BvbnNlKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFJlc3Bv
bnNlID0gbV9jZG0tPnNhbml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKTsKKyAgICBp
ZiAoIXNhbml0aXplZFJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UsIHsgfSwg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0
aXplZFJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21w
bGV0aW9uKV0gKGJvb2wgc2Vzc2lvbkNsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBp
cmF0aW9uVGltZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3Nh
Z2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CisgICAgICAgIGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyks
IFdURk1vdmUoZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0g
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBT
dHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29t
cGxldGlvbikKK3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplU2Vz
c2lvbklkKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFNlc3Npb25JZCA9IG1fY2Rt
LT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgIGlmICghc2FuaXRpemVkU2Vzc2lv
bklkKSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJl
OjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9zZXNzaW9uLT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4s
IFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3RhbmNl
U2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+
JiYgZXhwaXJhdGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4m
JiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENE
TUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgewor
ICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRp
b25UaW1lKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2VlZGVkLCBmYWlsdXJlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBD
bG9zZVNlc3Npb25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5jbG9z
ZVNlc3Npb24oc2Vzc2lvbklkLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgp
IG11dGFibGUgeyBjb21wbGV0aW9uKCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24p
Cit7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYm
IGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoZXhw
aXJlZFNlc3Npb25zRGF0YSkKKyAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5j
ZSA9IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lv
bnNEYXRhKSk7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1v
dmUoZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKQoreworICAgIG1fc2Vzc2lvbi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1
c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmICghbV9jZG0pCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3Rvcnko
KSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0
YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jZG0pCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3Rvcnko
KSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdl
KHR5cGUsIFdURk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9pZGVu
dGlmaWVyKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTgxNTM1NjZmNjQyZmM2OGEzNDU2NGU3NDY3NDUwZmI0NDlkYTk0MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwg
UmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJv
eHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOworCisgICAgLy8gVHlwZXMKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7CisgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I7CisgICAg
dXNpbmcgTWVzc2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAg
ICB1c2luZyBTZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OlNlc3Npb25Mb2FkRmFpbHVyZTsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCwgYm9vbCk+OworICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVz
VmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wp
PjsKKyAgICB1c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9u
YWw8TWVzc2FnZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHVzaW5n
IFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0
YXR1c1ZlY3RvciYmLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYs
IGJvb2wpPjsKKyAgICB1c2luZyBTdG9yZVJlY29yZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPjsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJik7CisgICAgdm9pZCB1cGRh
dGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpOworICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBv
cmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVz
YWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKKworICAgIC8vIENETUluc3RhbmNlU2Vzc2lv
bkNsaWVudAorICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZp
bmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXNzaW9u
SWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Q
cm94eT4gbV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gbV9zZXNz
aW9uOworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjkzMTk2YzA5NWUwMzRiNjQyMWY4ZWU2MzhhZTA5ZWZj
ZTIwZTk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBO
b3RSZWZDb3VudGVkIHsKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1
YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmlu
ZyBzZXNzaW9uSWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlw
ZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNz
aW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRp
b24sIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2Fn
ZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcg
b3JpZ2luKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9u
LCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2Us
IGJvb2wgc3VjY2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9u
KFN0cmluZyBzZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3Ry
aW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0
eXBlKSAtPiAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hh
bmdlZEtleXMsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2Fn
ZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmlu
ZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhYzkyZmQwOTdhZjFjZjli
OGZmOGJiNDBkYjFiZWE1ZTNhODBhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHku
aCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNUHJpdmF0ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6
OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtl
VW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERh
dGFUeXBlcygpLAorICAgICAgICBwcml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAg
ICAgcHJpdi0+c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3Vw
cG9ydHNTZXNzaW9ucygpCisgICAgfSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Q
cml2YXRlJ3MgcHJpdmF0ZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNETVByb3h5PihuZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RG
TW92ZShwcml2KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94
eTo6UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9y
eSwgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3Zl
KGZhY3RvcnkpKQorICAgICwgbV9wcml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZp
Z3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6
On5SZW1vdGVDRE1Qcm94eSgpID0gZGVmYXVsdDsKKworYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBk
YXRhKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKworT3B0aW9uYWw8U3RyaW5n
PiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklk
KTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV2ViQ29y
ZTo6Q0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgV2ViQ29yZTo6Q0RNUHJp
dmF0ZTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAg
bV9wcml2YXRlLT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlv
biksIGFjY2VzcywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5
OjpjcmVhdGVJbnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRp
b24pCit7CisgICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUluc3Rh
bmNlKCk7CisgICAgaWYgKCFwcml2YXRlSW5zdGFuY2UgfHwgIW1fZmFjdG9yeSkgeworICAgICAg
ICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRv
IGluc3RhbmNlID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRo
aXMpLCBwcml2YXRlSW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlm
aWVyID0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZp
Z3VyYXRpb24oKTsKKyAgICBtX2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1v
dmUoaW5zdGFuY2UpKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmln
dXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgp
Cit7CisgICAgbV9wcml2YXRlLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYzlkNTU4ZGZmYTE1MmMwZGQ1YTBjMGIyYjVhODE3MzJhMWRiNWIxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVBy
b3h5LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDog
dWludDhfdDsKK2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Oworc3RydWN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zOworfQorCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Oworc3RydWN0
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1
cmF0aW9uOworCitjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4geworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IGNyZWF0ZShXZWFrUHRy
PFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVBy
aXZhdGU+JiYpOworICAgIH5SZW1vdGVDRE1Qcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RN
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi5nZXQoKTsgfQorCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5p
dGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1Qcm94eShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkNETVByaXZhdGU+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKKwor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lk
IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYmLCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OkNETVByaXZhdGU6OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lk
IGNyZWF0ZUluc3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZv
aWQgbG9hZEFuZEluaXRpYWxpemUoKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5PiBtX2ZhY3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+
IG1fcHJpdmF0ZTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gbV9jb25m
aWd1cmF0aW9uOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zOTU1NTg0ZWRmMTcxYTE2NWRjNTNmMGRhZTVmMWEzOTQ4Yzc1NWYyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1Q
cm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKHN0cnVj
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZpZ3VyYXRp
b24sIGVudW06Ym9vbCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNj
ZXNzKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gYWNj
dW11bGF0ZWRDb25maWd1cmF0aW9uKSBBc3luYworICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAg
ICBMb2FkQW5kSW5pdGlhbGl6ZSgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4
IGZlODg0NGI0NDM4N2ZmYjU4YzFkNWM4Zjg1YjdiMmIwZjJkY2I4Y2EuLmE3ZTNjMzE3ZGUzZjY5
YmQwMjFhY2Y1ZjA0YjI5NDc2ZTRkNGY0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZU1lc3NhZ2VzLmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC01MjksOSArNTM0LDkgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJ
UEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRh
dGEoKSksIGluaXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC03
MTMsNiArNzE4LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQog
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
ZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21h
bmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldElu
c3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VBdHRhY2hl
ZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYm
IGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIu
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNl
KGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0
YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFn
ZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3Rh
bmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJ
bnN0YW5jZShpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRpZgorCisKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
K3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5l
ZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRl
cktleU5lZWRlZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxheWVyLT5iZWdpblNp
bXVsYXRlZEhEQ1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggZjc4ZWMwNmVjMDQzOWZjYTk1
MGE0YmMzNTY0MmUwNGQ5YzdmYTJmZi4uZDk0YmYyMTliMjdmNmU5YTliZDkxOGE4ZDRjZjVhMTIz
MjM0OGMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdU
RiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTM4LDYgKzE0MywxNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXImJik7CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYKKwogICAgIHZvaWQg
YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BFcnJv
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM1MzliYzFkOWM4
NDE2ODkyYTg3NTk2MWVkMWU0YTk4YzEzYjI1NzYuLjVjZGNjODJjNDAxYjk3ZmQ1ZDdhOGVjOGRl
ZGUwMDQ3NzQ3NDgwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC03
OSw5ICs3OSwxNiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNv
dW50ZWQgewogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICMgU2V0Q0RN
U2Vzc2lvbgogICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0YWNoZWQKLSAgICAj
IENkbUluc3RhbmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UK
KyNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBDZG1JbnN0YW5jZUF0
dGFjaGVkKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisg
ICAgQ2RtSW5zdGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciBpbnN0YW5jZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRpZgorCisjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisg
ICAgU2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKICNlbmRpZgog
CiAgICAgQmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKaW5kZXggNDdiNTg3ODI3ZjMxODgxZTYzMDRlOTRmZDc5YWU5NjM3MDEy
NTBmMC4uMjVmMDg5MGU3MTVlMmU3ZmFiNmU3Njg4ZmEyODYwN2M4YWY5MDljYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMzIsNiArMjMyLDkgQEAgZGVm
IHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJywKKyAg
ICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSVENE
ZWNvZGVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCA1YWRiMzdkOGI1YmRlZjAwYTU2NmY0YTAyZGI2NGJiOTVkYWIw
MDI0Li44YmY4ZDNkNTVlYTU1NDY1NDdiYzEzN2U0MjY4NDBhNGExMWY4MTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMyMTcsNCAr
MzIxNyw1OSBAQCBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlYwogICAgIHJldHVybiBidWZmZXI7CiB9
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2UmIG1lc3NhZ2UpCit7
CisgICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CisgICAgZW5jb2RlciA8
PCBtZXNzYWdlRGF0YTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpNZXNzYWdlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1l
c3NhZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2VUeXBlIHR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0
eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBtYWtlT3B0aW9u
YWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPih7IHR5cGUsIGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpIH0pOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImIGtl
eVN0YXR1c2VzKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGtleVN0
YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBrZXlTdGF0dXMgOiBrZXlTdGF0dXNlcykg
eworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXkgPSBrZXlTdGF0dXMuZmlyc3QuY29w
eVJlZigpOworICAgICAgICBlbmNvZGVyIDw8IGtleSA8PCBrZXlTdGF0dXMuc2Vjb25kOworICAg
IH0KK30KKworT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3I+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICB1aW50NjRfdCBkYXRh
U2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFTaXplKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yIGtleVN0YXR1c2VzOworICAgIGtleVN0YXR1c2VzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZGF0YVNpemUpOworCisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXpl
OyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5OworICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGtleSkgfHwgIWtleSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlT
dGF0dXMgc3RhdHVzOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXR1cykpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGtleVN0YXR1c2VzLnVuY2hl
Y2tlZEFwcGVuZCh7IGtleS5yZWxlYXNlTm9uTnVsbCgpLCBzdGF0dXMgfSk7CisgICAgfQorICAg
IHJldHVybiBrZXlTdGF0dXNlczsKK30KKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKaW5kZXggODk4NjM1ODNmM2JjMTY2OTA5NzQ2ZGY2MTgyNjQ3ZDY5MjU5
YWVjMy4uZDA3ZjJiZjViMjFiNjIwYjkxOTgxMDE5OTQwZTI3NDRlZDI1MDBjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTU2LDYgKzU2LDEx
IEBACiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0FkZGl0
aW9ucy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUg
PFdlYkNvcmUvQ0RNSW5zdGFuY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vz
c2lvbi5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewog
Y2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTgzNiw2ICs4NDEsMTggQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0
YXRpYyBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYpOworICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4g
ZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtOTg0LDQgKzEwMDEsMjggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXVEZMb2dMZXZlbD4gewogICAgID47CiB9OwogCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZh
aWx1cmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1
cmU6Ok5vbmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZh
aWx1cmU6Ok5vU2Vzc2lvbkRhdGEsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpT
ZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZSwKKyAgICBXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6UXVvdGFFeGNlZWRlZCwKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIK
KyAgICA+OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RN
SW5zdGFuY2U6OkhEQ1BTdGF0dXM+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cywKKyAgICBXZWJDb3JlOjpDRE1J
bnN0YW5jZTo6SERDUFN0YXR1czo6VW5rbm93biwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
SERDUFN0YXR1czo6VmFsaWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6
Ok91dHB1dFJlc3RyaWN0ZWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6
Ok91dHB1dERvd25zY2FsZWQKKyAgICA+OworfTsKKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggMzBkNTViNDVkODMzZGVjMjNmN2E2MDBmMjgzZmM5MzU5OGFk
OWIwNy4uMDQ4ZjZhOGYyNzg0MTA1NjhmZTMwNzBhMTlkZGJkYzIzYzNmZTRiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0yNiw2ICsyNiwxMCBAQCBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuY3BwCkBAIC00MCw2ICs0NCw3IEBAIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5jcHAKIAorCiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRp
b25NYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAK
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTUzOSw2
ICs1NDQsMTAgQEAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAor
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBjOTdiMTU4
MzY0YTc1NmZhMDBiZDljMGMwNzZhYWVkN2JlNWI2Y2EuLjM5M2QxMDFjNzI3MzY2YzlhYTUxYzQw
NWY2YjIyMjJlNWU1NzJiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTcwNiw2ICsxNzA2LDcgQEAKIAkJQ0QxOUQyRUEyMDQ2NDA2
RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxOUQyRTgyMDQ2NDA2RjAwMTcwNzRB
IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMjg2NUVFMjI1NTU2MjAwMDYwNkFDNyAvKiBQ
cm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nl
c3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMjg2NUVEMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRl
T2JzZXJ2ZXIubW0gKi87IH07CisJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0EzNSAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNENDkx
QjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMDYxRTcwRDA1RjAw
MDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi87IH07CiAJCUNENDkxQjBEMUU3
MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ5MUIw
QjFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwRTFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q0OTFCMEMxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTE3MjgsNiArMTcyOSwyMCBAQAogCQlDREEyOUEy
QjFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI3
MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5o
ICovOyB9OwogCQlDREE5M0RCMDIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNl
Y2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVl
blRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi87IH07CisJCUNEQUMyMEI0MjNGQjU4
RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovOyB9OworCQlDREFDMjBDMzIzRkMyRjc1MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCNjIzRkMyRjczMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMEM0MjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlLmggKi87IH07CisJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1D
b25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5o
ICovOyB9OworCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQTIzRkMyRjc0
MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi87IH07CisJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBD
QTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCRDIzRkMyRjc0MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IH07CisJCUNEQUMyMENEMjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNRmFjdG9yeS5oICovOyB9OworCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi87IH07CisJCUNEQUMyMENGMjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRl
bnRpZmllci5oICovOyB9OworCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RN
RmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGODIzRkM3
MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBGNTIz
RkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CisJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFD
MjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRUYy
M0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjgzMUIy
MDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICovOyB9OwogCQlDRENB
ODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzcxMzJB
QkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJ
Q0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUg
LyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKQEAgLTQ5ODcsNiArNTAwMiwxMCBAQAogCQlDRDE5RDJF
OTIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHA7IHBhdGggPSBp
b3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rh
c2tTdGF0ZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFRDIyNTU1NjIwMDA2MDZB
QzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDUxRTcwRDA1
RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
NDkxQjBBMUU3MzJEMTIwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMjgsNiArNTA0Nyw0MyBAQAogCQlDREEyOUEyNzFDQkVC
NjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpY1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlz
dGljUGFyYW1ldGVycy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREE5
M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1l
dGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQ
YXJhbWV0ZXJzLmNwcDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hl
dXJpc3RpY1BhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFD
MjA3ODIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVD
RE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3Rv
cnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
ODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDgzMjNG
QjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDg2
MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1v
dGVDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQUQyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjEyM0ZCNThFMjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMzIzRkI1OEYyMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjYyM0ZD
MkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI4MjNG
QzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RN
RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJBMjNGQzJG
NzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJCMjNG
QzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkUyM0ZD
MkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMwMjNGQzJGNzUw
MDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzIyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNE
TUluc3RhbmNlUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1v
dGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMzIzRkMzODNBMDAyMURFRTMgLyog
UmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNUHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGNTIzRkMz
ODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4v
V0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
QzI4MzFDMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHBhdGggPSBpb3MvZnVs
bHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBDRk5ldHdvcmsuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1
dGU+IjsgfTsKQEAgLTUzMTIsNiArNTM2OCwyMCBAQAogCQkJCTlCNUJFQzI5MjQwMTAxNTgwMDcw
QzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwICovLAogCQkJCTlCNUJFQzI4
MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLywKIAkJ
CQk5QjVCRUMyRTI0MDEwMThDMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEJGMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVD
RE0uY3BwICovLAorCQkJCUNEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAq
LywKKwkJCQlDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlv
bi5oICovLAorCQkJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
LmNwcCAqLywKKwkJCQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eS5oICovLAorCQkJCUNEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlm
aWVyLmggKi8sCisJCQkJQ0RBQzIwQkIyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlLmNwcCAqLywKKwkJCQlDREFDMjBCNzIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2UuaCAqLywKKwkJCQlDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJFMjNGQzJGNzQw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICovLAorCQkJCUNEQUMyMEJE
MjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLywKKwkJCQlD
RDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3Nh
Z2VzLmluICovLAorCQkJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8sCiAJCQkJMDdCOTNGRjUyM0FGMENCODAwMzZGOEVB
IC8qIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTA3OTIzMTMwMjM5
QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwICovLAogCQkJCTA3
OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLywK
QEAgLTUzNDIsNiArNTQxMiwxOCBAQAogCQkJCTlCMTIyOUNGMjNGRjI4MTQwMDhDQTc1MSAvKiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzFCQzU3
RTIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkw
NzFCQzU3RjIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmggKi8sCisJ
CQkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAg
Ki8sCisJCQkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94
eS5oICovLAorCQkJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi8sCisJCQkJQ0RBQzIwQjEyM0ZCNThFMjAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RB
QzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNw
cCAqLywKKwkJCQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaCAqLywKKwkJCQlDREFDMjBBRDIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwODMyM0ZC
MjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjA4MjIzRkIy
MTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLywKKwkJCQlDREFDMjA4NjIzRkIyMTU4
MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcyNUVGQUQy
MzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLywK
IAkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaCAqLywKIAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05NzI5LDYgKzk4MTEsMjEgQEAK
IAkJCQkxQTA0M0I1QzEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXMuaCAqLywKIAkJCQkxQThFRkE2RTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVn
aW5Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRjMy
M0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8sCisJ
CQkJQ0RBQzIwRUUyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEY1MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBFQjIzRkMz
ODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJ
Q0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLywKKwkJCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDRDQ2NjE4MjI0MDEw
NTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLywKKwkJ
CQlDRDQ2NjE4MDI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVz
c2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFD
MjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlcy5oICovLAorCQkJCUNEQUMyMEYxMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVGMjNGQzM4
MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJ
Q0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCAqLywK
KwkJCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZGMjRBMkMx
ODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
cy5oICovLAogCQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTA2MzUsNiArMTA3MzIsMTYgQEAK
IAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUNEMjNGRjI1RjIwMDhDQTc1MSAv
KiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI1
QkVDMkEyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENEMjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRjIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBQzIwQzQyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDMzIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzkyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMTZB
RUExNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTIzMzQsNiArMTI0NDEsMTEgQEAKIAkJCQkyRDU0QzMxQjIxMkY0REE2MDA0OUMx
NzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjg2NUVGMjI1
NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQk5QjEyMjlDRTIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUz
IC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDQ2NjE4MzI0MDEwQTY3
MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRBMkQx
ODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5RTAwMjVBODhE
IC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4
IGRmYjliOWE5MzhiOTg1ZDI4MGFjZGVkYTA0OGJjNWE2NmY3N2U2MWIuLmY5Yjk3MDE4MTcyZGE1
MmIxYzcwNTQ5Mzk1OTNjMjExZGZlZDAxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMyw2ICszMyw4IEBA
CiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94
eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWVzc2FnZXMuaCIKQEAgLTQ0LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2VzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtNzUsNiArODEsMTMgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0KIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUNETUZhY3Rvcnkm
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpjZG1GYWN0b3J5KCkKK3sKKyAgICByZXR1cm4gKldlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKTsKK30KKyNl
bmRpZgorCiBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpAQCAtMTAwLDYgKzExMywxMiBA
QCBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlYwogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5saWJXZWJSVENDb2RlY3MoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFj
dG9yeT4oKS0+ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
CmluZGV4IDZhY2RjYmYzOTU0NTFiNmI0Yzk1OGVjYzkyYjUyMDE2YjY3NzcyODkuLjJiNTcyYzFi
YWNiZmE2YjZiMjZmMzU2MGMyNjJhOWE0MWIwYzc1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM5LDYgKzM5LDgg
QEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFJl
bW90ZUNETUZhY3Rvcnk7CisKIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxHUFVQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTU4LDYg
KzYwLDEwIEBAIHB1YmxpYzoKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBz
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlQ0RNRmFjdG9yeSYgY2RtRmFjdG9yeSgpOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDhlZjdk
ZWVlYTcwZTIwYWU4ZmFhN2NlY2JhNmJkMzc2OTY2NmI1MDIuLjZjNDc4Mzk4N2FmNTY3ZDMzZTQ4
MjE1ZjExYWY4ZjVjMzg1ZjAwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTQ5LDYgKzQ5LDEwIEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVt
b3RlQ0RNSW5zdGFuY2UuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAgLTkx
MCwxOSArOTE0LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYg
aW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RN
SW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNkbUluc3RhbmNlQXR0YWNoZWQoZG93bmNhc3Q8UmVt
b3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAotdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFu
Y2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQo
Q0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYg
KGlzPFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZURldGFjaGVk
KGRvd25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9p
ZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0
V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5z
dGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6QXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShkb3duY2FzdDxSZW1vdGVD
RE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtOTMwLDYg
KzkzNywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNo
YW5nZWQoKQogICAgIG1fcGxheWVyLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwogfQogCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQo
Y29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSYmIGluaXREYXRh
KQoreworICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGluaXRE
YXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKTsKKyAgICBtX3BsYXllci0+aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSk7
Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29u
c3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtOTM3LDYgKzk1MCwxMyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVl
QWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91bGQpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQoc2hvdWxkKSwgbV9pZCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc1RleHRUcmFja1JlcHJl
c2VudGF0aW9uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDg1NGFh
YzU2NmFiYjIwMjI3Y2RhOTE1NjAxNWJmMjQ4N2E3NjNkZGYuLjM3ZjNlOTRlZjM4MzU2Y2JlMzhl
ZmVmZDhlNTMxYTllMWYwOTM4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMTM3
LDYgKzEzNyw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAg
dm9pZCB3YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOworICAgIHZvaWQgaW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiwgSVBDOjpEYXRhUmVmZXJlbmNlJiYpOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMzEzLDYgKzMxNCwx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IGZpbmFsOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9v
bCkgZmluYWw7CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29sIHJl
cXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNl
dFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0aW9u
KikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmlu
ZGV4IDNmZmNmMzZlZmUyNGIzZDA4NTBlZWEyODZlMmNlNzI4ZTRhMmZjMWEuLjZhZTBkYjMxZmFi
ZWU5YTQ0NGQ1MjgzZGRiYTA4ZmIzMGM2MDk4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC03NSw2ICs3NSw3IEBAIG1lc3NhZ2VzIC0+IE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZSBOb3RSZWZDb3VudGVkIHsKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAgICAgV2FpdGluZ0ZvcktleUNoYW5nZWQoKQorICAgIEluaXRpYWxpemF0aW9u
RGF0YUVuY291bnRlcmVkKFN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBp
bml0RGF0YSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYzkxYjQwZjNiOWM3NWIzYzExMGI2MzZmNjhjYTU3MDVhMjViNTQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE0uY3BwCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DRE1SZXN0cmljdGlvbnMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IFJl
bW90ZUNETTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1v
dGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPihuZXcgUmVtb3Rl
Q0RNKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KSk7Cit9CisKK1JlbW90ZUNETTo6UmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4m
JiBmYWN0b3J5LCBSZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRp
b24mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisg
ICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE06OmdldFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb24oQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24s
IExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNr
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSwgYWNjZXNzKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmll
cik7Cit9CisKKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0Nv
bmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRz
U2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KSBjb25zdAoreworICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRl
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgorICAgIHJl
dHVybiB0cnVlOworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ0RNUmVxdWlyZW1lbnQ6Ok5v
dEFsbG93ZWQ7Cit9CisKK0NETVJlcXVpcmVtZW50IFJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJl
c3RyaWN0aW9ucyYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworfQorCitib29sIFJlbW90ZUNETTo6ZGlz
dGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZlB0cjxDRE1JbnN0YW5jZT4gUmVtb3Rl
Q0RNOjpjcmVhdGVJbnN0YW5jZSgpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkOworICAg
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5jZSgpLCBNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6OkNyZWF0ZUluc3RhbmNlOjpSZXBseShpZCwgY29uZmlndXJhdGlvbiksIG1faWRlbnRp
Zmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwg
V1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNE
TTo6bG9hZEFuZEluaXRpYWxpemUoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBt
X2lkZW50aWZpZXIpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK3sKKyAgICAv
LyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSgpLgorICAgIHJldHVybiByZXNwb25zZS5jb3B5
KCk7Cit9CisKK09wdGlvbmFsPFN0cmluZz4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIHdpbGwg
YmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bG9h
ZFNlc3Npb24oKS4KKyAgICByZXR1cm4gc2Vzc2lvbklkOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjZkNmYzNjk3OWIwNDUyY2Y5NmE1MmQxOGY2YWQwYjdmMzM0OGU4ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAg
LTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRl
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFJlbW90ZUNETSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1Qcml2YXRlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4gY3JlYXRlKFdlYWtQ
dHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETSgpID0gZGVmYXVsdDsKKwor
cHJpdmF0ZToKKyAgICBSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1v
dGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICB2b2lk
IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIExvY2FsU3RvcmFnZUFjY2VzcywgU3VwcG9y
dGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOworCisgICAgYm9vbCBzdXBwb3J0c0Nv
bmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9u
cyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBj
b25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVu
dCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJl
cXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKKyAgICB2b2lk
IGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYpIGNvbnN0IGZpbmFsOworCisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZElu
aXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9y
dGVkSW5pdERhdGFUeXBlczsgfQorICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1
c3RuZXNzZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVk
Um9idXN0bmVzc2VzOyB9CisgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1Nlc3Npb25zOyB9CisKKyAgICBXZWFrUHRyPFJlbW90
ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MmM0NjRmZGZk
Y2Q4YzM1NzU2YjBlMzhkYWQwZjg5MzkwNTg4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaApAQCAt
MCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiB7CisgICAgVmVj
dG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgVmVjdG9yPEF0b21T
dHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICBib29sIHN1cHBvcnRzU2VydmVyQ2Vy
dGlmaWNhdGVzOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uczsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAg
ZW5jb2RlciA8PCBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3Vw
cG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydHNTZXNz
aW9uczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMg
T3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CisgICAgeworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZElu
aXREYXRhVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsK
KyAgICAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1
cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRSb2J1c3Ru
ZXNzZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkUm9idXN0bmVzc2VzKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1Nl
cnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1NlcnZlckNlcnRp
ZmljYXRlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcykKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3Vw
cG9ydHNTZXNzaW9uczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nlc3Npb25zOworICAg
ICAgICBpZiAoIXN1cHBvcnRzU2Vzc2lvbnMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVk
SW5pdERhdGFUeXBlcyksCisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBwb3J0ZWRSb2J1c3RuZXNz
ZXMpLAorICAgICAgICAgICAgKnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzLAorICAgICAgICAg
ICAgKnN1cHBvcnRzU2Vzc2lvbnMsCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMmQzZDVj
NjEwYWY1NGFkMWQzZWY0ZmE2MWM0NTk2NjY1Mjk3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCkBAIC0w
LDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUNETUZhY3Rv
cnk6OlJlbW90ZUNETUZhY3RvcnkoV2ViUHJvY2VzcyYgcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vz
cyhwcm9jZXNzKQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5Ojp+UmVtb3RlQ0RNRmFjdG9yeSgp
ID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZWdpc3RlckZhY3RvcnkoVmVj
dG9yPENETUZhY3RvcnkqPiYgZmFjdG9yaWVzKQoreworICAgIGZhY3Rvcmllcy5hcHBlbmQodGhp
cyk7Cit9CisKK2NvbnN0IGNoYXIqIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKCkK
K3sKKyAgICByZXR1cm4gIlJlbW90ZUNETUZhY3RvcnkiOworfQorCitHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgUmVtb3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworICAgIHJl
dHVybiBtX3Byb2Nlc3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKworYm9vbCBS
ZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKK3sKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAgIGdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJv
eHk6OlN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOworICAg
IHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBSZW1v
dGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAg
UmVtb3RlQ0RNSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb247CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNKGtleVN5c3RlbSks
IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETTo6UmVwbHkoaWQsIGNv
bmZpZ3VyYXRpb24pLCB7IH0pOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBSZW1vdGVDRE06OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92
ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rv
cnk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCwgUmVm
PFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9z
ZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNl
c3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uKFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fc2Vzc2lv
bnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODllZDA2MDAxYzY2M2JhZjE4
NWRiOTMxNzQ5N2U5MmNmYmZjMDZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKQEAgLTAsMCArMSw4NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNRmFjdG9y
eS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBJ
UEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFJlbW90ZUNETTsK
K2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjsKK2NsYXNzIFdlYlByb2Nlc3M7CisKK2Ns
YXNzIFJlbW90ZUNETUZhY3RvcnkgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpDRE1GYWN0
b3J5CisgICAgLCBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlQ0RNRmFjdG9yeShXZWJQcm9jZXNzJik7
CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeSgpOworCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHN1cHBsZW1lbnROYW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvY2VzczsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmFjdG9yeShWZWN0b3I8V2ViQ29y
ZTo6Q0RNRmFjdG9yeSo+Jik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkNETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIHN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgSGFzaE1hcDxSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uPj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVDRE0+PiBtX2NkbXM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNz
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVlM2EzODE5
YzE3MDdiNTU4YjNmZDlhYWE4ODE2MzE1ODM5MmZhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCkBAIC0w
LDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9PYmpl
Y3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNETUlk
ZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUlkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTFhMGUwYjUyZDJkYjViMzY2
ZThhYjY2OTY4YzU2MTQ2MmVkZDljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTAsMCArMSwxMDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2UuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUluc3Rh
bmNlPiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4m
JiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVDRE1JbnN0YW5jZShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwg
V1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZTo6UmVtb3Rl
Q0RNSW5zdGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24m
JiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAg
LCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24sIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyBkaXN0aW5j
dGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBwZXJzaXN0ZW50U3RhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAg
ICAgIGNhbGxiYWNrKEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Zh
Y3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNpc3Rl
bnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhGYWlsZWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNl
UHJveHk6OlNldFNlcnZlckNlcnRpZmljYXRlKGNlcnRpZmljYXRlLmdldCgpKSwgV1RGTW92ZShj
YWxsYmFjayksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNl
dFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgaWYgKCFt
X2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpLCBtX2lkZW50aWZpZXIpOworfQor
CitSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5jZTo6
Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZDsKKyAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uKCksIE1lc3Nh
Z2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBseShpZCksIG1f
aWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
YXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUobWFrZVdlYWtQ
dHIobV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCkpOworICAgIG1fZmFjdG9yeS0+YWRkU2Vz
c2lvbihpZCwgc2Vzc2lvbi5jb3B5UmVmKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NWY0OWI5NzM5ZDI0NzlkNTU1ZGY4
ZmIwMjdlZGZlY2E5YzM0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2Uu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkNETUluc3RhbmNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5S
ZW1vdGVDRE1JbnN0YW5jZSgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNETUlu
c3RhbmNlPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOworCisg
ICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNSW5zdGFu
Y2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOworCisgICAgSW1wbGVtZW50
YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxl
bWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CisgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVt
OyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bigpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7Cisg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworfTsKKworfQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0NETV9JTlNUQU5DRShXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
LCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGUpCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUz
MmQ3MmU3Y2U0Yjg1M2YyZDNiOTM0NTVlMTkyODFjNDE5ZmE0MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbiB7CisgICAgU3RyaW5nIGtleVN5c3RlbTsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwga2V5U3lzdGVtOworICAgIH0KKworICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0
aW9uYWw8U3RyaW5nPiBrZXlTeXN0ZW07CisgICAgICAgIGRlY29kZXIgPj4ga2V5U3lzdGVtOwor
ICAgICAgICBpZiAoIWtleVN5c3RlbSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCprZXlTeXN0ZW0pLAor
ICAgICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmZkZTY5MWMzZTg5
NWI4ODU5ZTYyMDVhNzFlMTE1ZmE5YjRmZTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYv
T2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlw
ZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVjY2JlMjM5NmY5YjJmODZjOWM2YjI2ZjMzZTFiYTIz
NWIwMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVm
PFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVh
dGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXImJiBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsKK30K
KworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAg
ICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBj
YWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFp
bGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERh
dGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVyKCkpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBG
YWlsZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNr
KG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1f
aWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIFdURk1vdmUocmVzcG9u
c2UpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHNlc3Npb25XYXNDbG9z
ZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91
YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJv
b2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soc2Vzc2lvbldhc0Nsb3Nl
ZCwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBXVEZN
b3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1f
aWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAo
IW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpMb2FkU2Vzc2lvbih0eXBlLCBzZXNzaW9uSWQsIG9yaWdpbiks
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9w
dGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFp
bHVyZSBsb2FkRmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hh
bmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwg
c3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkLCBsb2FkRmFpbHVyZSk7CisgICAgfSwgbV9p
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmNsb3NlU2Vz
c2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjaygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpDbG9zZVNlc3Npb24oc2Vzc2lvbklkKSwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjaygpOworICAg
IH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9m
YWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUp
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5n
ZWRLZXlzLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYgbWVzc2Fn
ZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBPcHRpb25hbDxSZWY8U2hhcmVk
QnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlmIChtZXNzYWdl
ICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKKyAgICAgICAgICAgIHJlYWxNZXNzYWdlID0g
bWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVk
ID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpTdG9yZVJlY29yZE9m
S2V5VXNhZ2Uoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0
YXR1c2VzKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUtl
eVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5cGUsIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fY2xp
ZW50ICYmIG1lc3NhZ2UuYnVmZmVyKCkpCisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZSh0
eXBlLCBtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCkpOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9uSWRD
aGFuZ2VkKHNlc3Npb25JZCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZmZlYzA5YzQ5YWUyNDIxNTBjYjI0YWNhMDk1MWZlZThmNDhmNTUw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1v
dGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBmaW5hbCA6IHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bigpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFj
dG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYpOworCisgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2
b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKTsKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJik7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOworCisK
KyAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNs
aWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KKyAg
ICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KKyAgICB2
b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBsb2FkU2Vzc2lvbihM
aWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgZmluYWw7CisKKyAgICBX
ZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRyPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOGMyMzkyZTdlZjg2MjA0NjIxZDI4NDE0MzhiNWVkZjRkMzgxNTM2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMiBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFVwZGF0ZUtleVN0YXR1c2VzKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKQorICAg
IFNlbmRNZXNzYWdlKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSB0eXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2FnZSkKKyAgICBTZXNzaW9uSWRDaGFu
Z2VkKFN0cmluZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODZhY2QxMjY1YWYwYzg0NjM4OGUy
M2Y5Y2NhMTZkOTAyMzM4ZmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgKQEAg
LTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlh
U3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRp
YVN0cmF0ZWd5LmNwcAppbmRleCAyYWFlNWU1NDQ1MTA4NDc5YmQzY2QzMzlhZmE2YmY2ZDJkZGFi
Y2Y2Li41ZDdhOGI4ZDExMjRiMmE1MjhhZDczYmRjOTZkOWE5NzgwZGMyMDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVn
eS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxs
YmFjay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgpAQCAtNTEsNyArNTMsMTMg
QEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24+IFdlYk1lZGlhU3Ry
YXRlZ3k6OmNyZWF0ZUF1ZGlvRGVzdGluYXQKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
dm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8V2ViQ29y
ZTo6Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkNETUZh
Y3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisgICAgaWYgKG1fdXNlR1BVUHJvY2VzcykgeworICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNkbUZhY3Rvcnko
KS5yZWdpc3RlckZhY3RvcnkoZmFjdG9yaWVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorICAgIFdlYkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMo
ZmFjdG9yaWVzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IGUyNDg1MzJiYWE3MDllZjBlOWU0YWZkMjYwYWI3MmUyYjk2
OTkxMDIuLmNjNWI4OGUwMzBjM2QwZTQ0ZWQwMDAzOGQ5NjVlZmJlN2UzYzhlZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjIsNiArMzIy
LDkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaCIKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJl
bW90ZUNETUZhY3RvcnkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMzcwMiw2ICszNzA1LDkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICAvLyBGSVhNRTogdXNlR1BVUHJvY2Vz
c0Zvck1lZGlhIHNob3VsZCBiZSBhIFJ1bnRpbWVFbmFibGVkRmVhdHVyZSBzaW5jZSBpdCdzIGds
b2JhbC4KICAgICBzdGF0aWNfY2FzdDxXZWJNZWRpYVN0cmF0ZWd5Jj4ocGxhdGZvcm1TdHJhdGVn
aWVzKCktPm1lZGlhU3RyYXRlZ3koKSkuc2V0VXNlR1BVUHJvY2VzcyhzZXR0aW5ncy51c2VHUFVQ
cm9jZXNzRm9yTWVkaWEoKSk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVu
dDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCktPnVwZGF0ZVByZWZlcmVuY2VzKHNldHRpbmdz
KTsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0
dGluZ3MpOworI2VuZGlmCiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDNlNWExNmQxNzAxNTM3MzQxNGFhYWE2ZWZiMWRiODY1ZWVmYjcxNGQu
LjhjZmRhMWYzMTBlNWFlMGU5M2ZhOGMxMDk0Yjc1NjE3ZTZjOWI5ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE3NCw2ICsxNzQsMTAgQEAKICNpbmNsdWRl
ICJMaWJXZWJSVENDb2RlY3MuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjZW5kaWYKKwogI2RlZmluZSBSRUxF
QVNFX0xPR19TRVNTSU9OX0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgp
IDogMCkKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikg
UkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAt
IFtzZXNzaW9uSUQ9JSIgUFJJdTY0ICJdIFdlYlByb2Nlc3M6OiIgZm10LCB0aGlzLCBSRUxFQVNF
X0xPR19TRVNTSU9OX0lELCAjI19fVkFfQVJHU19fKQogCkBAIC0yNDAsNiArMjQ0LDEwIEBAIFdl
YlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgIGFkZFN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyPigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVDRE1GYWN0b3J5Pigp
OworI2VuZGlmCisKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2UoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392048</attachid>
            <date>2020-02-28 21:53:12 -0800</date>
            <delta_ts>2020-02-28 22:56:19 -0800</delta_ts>
            <desc>Part 3: RemoteCDM</desc>
            <filename>bug-208090-20200228215311.patch</filename>
            <type>text/plain</type>
            <size>165338</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5ODU5Nzk0ZjdlY2U2ZWZj
NDU1ODZmNmE2ZWQyMWVkODEyYTc2Y2UuLmQ0ZTY3ZTM4NWU5YzZjNTUyNzZkOTEwNjI3YTI5ODRj
YWUyOTg1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcwIEBACisyMDIwLTAyLTIzICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTW9k
ZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
UmVtb3RlQ0RNRmFjdG9yeSwgUmVtYXRlQ0RNLCBSZW1vdGVDRE1JbnN0YW5jZSwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLCBhbmQgYWxsCisgICAgICAgIG9mIHRoZWlyIGFzc29jaWF0ZWQgUHJv
eHkgb2JqZWN0cy4KKworICAgICAgICBBbGxvdyB0aGUgZXhpc3RpbmcgQ0RNRmFjdG9yeSBtYWNo
aW5lcnkgdG8gd29yayBub3JtYWxseSBieSBleHBsaWNpdGx5IGNsZWFyaW5nIG91dCBhbGwgdGhl
IGV4aXN0aW5nIAorICAgICAgICB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBlbmFibGVkLCBhbmQg
cmVzZXR0aW5nIHRob3NlIGZhY3RvcmllcyB0byBkZWZhdWx0IHdoZW4gdGhlIEdQVSBwcm9jZXNz
IGlzIGRpc2FibGVkLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNkbUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OmZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFk
ZEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNl
c3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRpZmljYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNl
c3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y29u
ZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6Omluc3RhbmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Ojp+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENo
YW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6
OlJlbW90ZUNETVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBv
cnRzSW5pdERhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVNlc3Np
b25JZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpnZXRTdXBwb3J0ZWRDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXpl
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y29uZmlndXJhdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpmYWN0b3J5IGNvbnN0KToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6Y2RtSW5zdGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVB
ZnRlcktleU5lZWRlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1
c1ZlY3Rvcj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURl
dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRl
bXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktl
eU5lZWRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6UmVtb3RlQ0RNKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3Vw
cG9ydHNJbml0RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6ZGlzdGlu
Y3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNOjpwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFu
ZENsZWFyYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Y3JlYXRlSW5z
dGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1GYWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5OjphZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeTo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6UmVtb3RlQ0RNSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y2xvc2VTZXNzaW9u
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c3Rv
cmVSZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW46
IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKwogMjAyMC0w
Mi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0g
SW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDg2ZjAxYjM5YTA0NzI4
YzJjMGJmZjY3ZTViZDM5M2YwOTFiNzdmOWQuLjlmOTQ2Zjg0OTdhZjIzYjRhZmE1MWI3OTE4NDE4
NTE4ODYwYWM1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKQEAgLTE4LDYgKzE4LDEwIEBAICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BV
UHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgogJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
UHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xMTIsNiArMTE2LDcgQEAg
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2Vz
LmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdl
cy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
aW5kZXggNjQ2NGQ4Mzg5ZmI1M2Y1Mjc1MDcwNTM5Yzk4MTBmYjJkOGNjYjMxOS4uYTk2YzJjZmRk
ZDQ2YjM1OTIzOGU5NjIzNDNhOTkyMjEwNGVlYTU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xMzcsNiArMTM3LDIxIEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNRmFj
dG9yeVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RN
UHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDQzNmU0YjQyMjRjYjA0NWM5ZWFiM2E2YzcwNTQzMGJkNTI1MzMzMzQuLjQ1ZWUzZGI3
ZWQ3ZTEzMzcyYzhhNzVhZDU1NWExNjU4N2Y2N2QwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTE1MSw2ICsxNTEsMTEgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciBcCiAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eSBcCisgICAgUmVtb3RlQ0RNUHJveHkgXAorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94
eSBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uIFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCiAgICAgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBc
CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmEyYzg3MGY3
YWFhMWIwZGIwMDBlZjg4ODI3YzlhMGY2MWRjZjI1Yi4uNmNmMWMzMGIzZTMzMDEyNzc0NjZkOTJl
ZTI5MzMyNDYwN2U1OWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjAsMTAgKzYwLDE4IEBACiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0KICNpbmNsdWRlIDxXZWJDb3JlL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oIgorI2VuZGlmCisKKwogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTk5LDYgKzIwNywx
NiBAQCBMaWJXZWJSVENDb2RlY3NQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bGli
V2ViUlRDQ29kZWNzUHJveHkoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
ZG1GYWN0b3J5UHJveHkoKQoreworICAgIGlmICghbV9jZG1GYWN0b3J5UHJveHkpCisgICAgICAg
IG1fY2RtRmFjdG9yeVByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVDRE1GYWN0b3J5UHJveHk+KCp0
aGlzKTsKKworICAgIHJldHVybiAqbV9jZG1GYWN0b3J5UHJveHk7Cit9CisjZW5kaWYKKwogdm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogewogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNYXAuZW5zdXJl
KHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBbJl0oKSB7CkBAIC0yNjksNiArMjg3LDI4IEBA
IGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNl
bmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZl
TWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAg
ICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRp
ZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFw
KCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCkBAIC0yOTQsNiAr
MzM0LDI4IEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgfQogI2VuZGlmCiAjZW5kaWYK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIG1lc3NhZ2VS
ZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKTsKIH0KIApAQCAtMzAyLDcgKzM2NCw3IEBAIGNvbnN0IFN0cmluZyYgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZ3B1UHJvY2Vzcy0+bWVkaWFDYWNoZURpcmVjdG9yeShtX3Nlc3Npb25JRCk7CiB9CiAK
LSNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKSB8fCBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIGNvbnN0IFN0cmluZyYg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fZ3B1UHJvY2Vzcy0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eShtX3Nlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA3NDcxNWM4MGM1NDViZWFmZWMzZjZiN2UwOTg0
ZWNhNTBjYmEyNjY5Li5hM2VjYTVjOGZhZDY5MTgzODBmZDkzM2JmNjMwZGQ0Y2ZmNzMwZDk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgR1BVUHJvY2VzczsKIGNsYXNzIExpYldl
YlJUQ0NvZGVjc1Byb3h5OwogY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI7CiBj
bGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CitjbGFzcyBS
ZW1vdGVDRE1GYWN0b3J5UHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTsKIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXI7CkBAIC04NSw2ICs4NiwxMCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIHNlc3Npb25NYW5hZ2VyKCk7CiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSYgY2RtRmFj
dG9yeVByb3h5KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTEzOCw2ICsxNDMsMTAg
QEAgcHJpdmF0ZToKICAgICAKICAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
YXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Pj47CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5TWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWFwOworCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1GYWN0b3J5UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YjRhZmQ0YjQzNjc3N2QxYzRkMTNmODcw
YjQ0ZGQyYjM2OTgxMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApAQCAtMCwwICsxLDE2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0RNRmFjdG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpSZW1vdGVDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9u
KQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6On5SZW1vdGVDRE1GYWN0b3J5UHJveHko
KSA9IGRlZmF1bHQ7CisKK3N0YXRpYyBDRE1GYWN0b3J5KiBmYWN0b3J5Rm9yS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIGF1dG8mIGZhY3RvcmllcyA9IENETUZhY3Rv
cnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBhdXRvIGZvdW5kSW5kZXggPSBmYWN0b3Jp
ZXMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgZmFjdG9yeSkgeyByZXR1cm4gZmFjdG9yeS0+c3Vw
cG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKTsgfSk7CisgICAgaWYgKGZvdW5kSW5kZXggPT0gbm90
Rm91bmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBmYWN0b3JpZXNbZm91
bmRJbmRleF07Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpjcmVhdGVDRE0oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSWRl
bnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgYXV0byBmYWN0b3J5ID0gZmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0ZW0pOworICAgIGlm
ICghZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gcHJpdmF0ZUNETSA9IGZhY3RvcnktPmNyZWF0ZUNETShr
ZXlTeXN0ZW0pOworICAgIGlmICghcHJpdmF0ZUNETSkgeworICAgICAgICBjb21wbGV0aW9uKHsg
fSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcHJveHkgPSBSZW1v
dGVDRE1Qcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBXVEZNb3ZlKHByaXZhdGVDRE0p
KTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVDRE1JZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OworICAgIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IHByb3h5LT5jb25m
aWd1cmF0aW9uKCk7CisgICAgYWRkUHJveHkoaWRlbnRpZmllciwgV1RGTW92ZShwcm94eSkpOwor
ICAgIGNvbXBsZXRpb24oV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShjb25maWd1cmF0aW9u
KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uKQoreworICAgIGNvbXBsZXRpb24oZmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0
ZW0pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7
CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVD
RE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9u
cy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0
KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRl
c3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IG1faW5zdGFuY2Vz
LmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBl
PihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpbnN0YW5jZS0+ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQor
ICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
ciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRQcm94eShS
ZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYg
cHJveHkpCit7CisgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3By
b3hpZXMuc2V0KGlkLCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpyZW1vdmVQcm94eShSZW1vdGVDRE1JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VS
VChtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMucmVtb3ZlKGlkKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZEluc3RhbmNlKFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+
JiYgaW5zdGFuY2UpCit7CisgICAgQVNTRVJUKCFtX2luc3RhbmNlcy5jb250YWlucyhpZCkpOwor
ICAgIG1faW5zdGFuY2VzLnNldChpZCwgV1RGTW92ZShpbnN0YW5jZSkpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhpZCkpOworICAg
IG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlUHJveHkqIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlkKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5PiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNvbnRhaW5z
KGlkKSk7CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5z
KGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM5YjFjY2M5NWJiZDNmZTNiOWYzMzUyZDg1MDAyNzdhNGJmZDM5
MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTsKK2NsYXNzIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OworY2xhc3MgUmVtb3RlQ0RNUHJveHk7CitzdHJ1Y3Qg
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjsKKworY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IGZp
bmFsIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFJlbW90ZUNETUZhY3RvcnlQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeVByb3h5KCk7CisKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9j
ZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2Vp
dmVDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1N
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jik7CisKKyAgICB2b2lkIGFkZFByb3h5KFJlbW90ZUNETUlkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShS
ZW1vdGVDRE1JZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkSW5zdGFuY2UoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4m
Jik7CisgICAgdm9pZCByZW1vdmVJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIp
OworICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNz
Q29ubmVjdGlvbjsKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWwgeyB9Cisg
ICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIE1l
c3NhZ2VzCisgICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1
cmF0aW9uJiYpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBI
YXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94
eT4+IG1fcHJveGllczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+PiBtX2luc3RhbmNlczsKKyAg
ICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lvbnM7Cit9OworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ3
YzVlNmU2MWM0MjA3ODMxZGEwYmQxMThhNmFhZWI0MGQzMzEzNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNE
TUZhY3RvcnlQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVDRE0oU3RyaW5nIGtleVN5
c3RlbSkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5jaHJvbm91cworICAgIFN1
cHBvcnRzS2V5U3lzdGVtKFN0cmluZyBrZXlTeXN0ZW0pIC0+IChib29sIHJlc3VsdCkgU3luY2hy
b25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUyNDhmZGZj
ODJkOTRhZTZlMGVkMTc1YjM1MWMxYjI2YjU1YTMxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApAQCAt
MCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29u
ZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0RNSW5zdGFuY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2Rt
LCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBt
YWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24sIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmPih7CisgICAgICAgIHBy
aXYtPmtleVN5c3RlbSgpLAorICAgIH0pOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eT4obmV3IFJlbW90ZUNETUluc3RhbmNlUHJveHkoV1RGTW92ZShj
ZG0pLCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90
ZUNETUluc3RhbmNlUHJveHk6OlJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2NkbShX
VEZNb3ZlKGNkbSkpCisgICAgLCBtX2luc3RhbmNlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2Nv
bmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEFsbG93
RGlzdGluY3RpdmVJZGVudGlmaWVycyBhbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93
UGVyc2lzdGVudFN0YXRlIGFsbG93UGVyc2lzdGVudFN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN1Y2Nlc3NWYWx1ZSk+JiYgY29tcGxldGlvbikKK3sKKyAgICBtX2luc3RhbmNlLT5pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgYWxsb3dEaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzLCBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgV1RGTW92ZShjb21wbGV0aW9uKSk7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgY2VydGlmaWNhdGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIGlmICghY2VydGlm
aWNhdGUuYnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbihDRE1JbnN0YW5jZTo6RmFpbGVk
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW5zdGFuY2UtPnNldFNlcnZlckNl
cnRpZmljYXRlKGNlcnRpZmljYXRlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUo
Y29tcGxldGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgbV9pbnN0YW5jZS0+
c2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OmNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBh
dXRvIHByaXZTZXNzaW9uID0gbV9pbnN0YW5jZS0+Y3JlYXRlU2Vzc2lvbigpOworICAgIGlmICgh
cHJpdlNlc3Npb24gfHwgIW1fY2RtIHx8ICFtX2NkbS0+ZmFjdG9yeSgpKSB7CisgICAgICAgIGNv
bXBsZXRpb24oeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAg
IGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjcmVhdGUobWFr
ZVdlYWtQdHIobV9jZG0uZ2V0KCkpLCBwcml2U2Vzc2lvbi5yZWxlYXNlTm9uTnVsbCgpLCBpZGVu
dGlmaWVyKTsKKyAgICBtX2NkbS0+ZmFjdG9yeSgpLT5hZGRTZXNzaW9uKGlkZW50aWZpZXIsIFdU
Rk1vdmUoc2Vzc2lvbikpOworICAgIGNvbXBsZXRpb24oaWRlbnRpZmllcik7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzExMmQ1Zjg0Yjg4NDczMTlkYzQwNGZl
YTE1MDZjOGIxZWYzMGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtMCwwICsxLDg3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5o
PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENETUluc3RhbmNlOworc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETUluc3RhbmNlUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYpOworICAgIH5SZW1vdGVDRE1JbnN0YW5jZVByb3h5KCk7
CisKKyAgICBjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KKyAgICBXZWJDb3Jl
OjpDRE1JbnN0YW5jZSYgaW5zdGFuY2UoKSB7IHJldHVybiBtX2luc3RhbmNlOyB9CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpD
RE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4m
Jik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIHVzaW5nIFN1Y2Nlc3NW
YWx1ZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWU7CisgICAgdXNpbmcgQWxs
b3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVyczsKKyAgICB1c2luZyBBbGxvd1BlcnNpc3RlbnRTdGF0ZSA9IFdl
YkNvcmU6OkNETUluc3RhbmNlOjpBbGxvd1BlcnNpc3RlbnRTdGF0ZTsKKworICAgIC8vIE1lc3Nh
Z2VzCisgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywg
QWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3VjY2Vzc1ZhbHVl
KT4mJik7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmKTsK
KyAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBj
cmVhdGVTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciYpPiYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+
IG1fY2RtOworICAgIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBV
bmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247
CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOworfTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTUwZTg1MzQxYzJlYjM1YmI2ZWMwODA5NWQ1YTAwNGVjY2ExMzlmOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZVNlc3Npb24o
KSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKSBTeW5j
aHJvbm91cworICAgIEluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBlbnVtOmJvb2wgV2ViQ29y
ZTo6Q0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzQWxsb3dlZCwgZW51bTpib29sIFdlYkNvcmU6OkNETUluc3RhbmNlOjpBbGxvd1Bl
cnNpc3RlbnRTdGF0ZSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKSAtPiAoZW51bTpib29sIFdlYkNv
cmU6OkNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgc3VjY2VzcykgQXN5bmMKKyAgICBTZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgY2VydGlmaWNhdGUp
IC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNz
KSBBc3luYworICAgIFNldFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nIGRpcmVjdG9yeSkKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWM4NmU2
YjQ2MmY5M2ZjYTVlZDdhOGNlY2EyNjRiNTU1NmRhNGVhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94
eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lvbiks
IGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9u
UHJveHktPm1fc2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJu
IHNlc3Npb25Qcm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBS
ZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY2RtKFdURk1vdmUoY2Rt
KSkKKyAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3Ry
aW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFpbml0RGF0YS5i
dWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2Us
IGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUg
Q0RNUHJpdmF0ZTo6c3VwcG9ydHNJbml0RGF0YSgpIGNoZWNrIGhlcmU6CisgICAgaWYgKCFtX2Nk
bS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUsICppbml0RGF0YS5idWZmZXIoKSkpIHsK
KyAgICAgICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5
cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2Nv
bXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewor
ICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRp
dmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVk
KTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBk
YXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y29tcGxldGlvbikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNv
bXBsZXRpb24odHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRl
OjpzYW5pdGl6ZVJlc3BvbnNlKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFJlc3Bv
bnNlID0gbV9jZG0tPnNhbml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKTsKKyAgICBp
ZiAoIXNhbml0aXplZFJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UsIHsgfSwg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0
aXplZFJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21w
bGV0aW9uKV0gKGJvb2wgc2Vzc2lvbkNsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBp
cmF0aW9uVGltZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3Nh
Z2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CisgICAgICAgIGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyks
IFdURk1vdmUoZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0g
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBT
dHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29t
cGxldGlvbikKK3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplU2Vz
c2lvbklkKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFNlc3Npb25JZCA9IG1fY2Rt
LT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgIGlmICghc2FuaXRpemVkU2Vzc2lv
bklkKSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJl
OjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9zZXNzaW9uLT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4s
IFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3RhbmNl
U2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+
JiYgZXhwaXJhdGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4m
JiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENE
TUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgewor
ICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRp
b25UaW1lKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2VlZGVkLCBmYWlsdXJlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBD
bG9zZVNlc3Npb25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5jbG9z
ZVNlc3Npb24oc2Vzc2lvbklkLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgp
IG11dGFibGUgeyBjb21wbGV0aW9uKCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24p
Cit7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYm
IGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoZXhw
aXJlZFNlc3Npb25zRGF0YSkKKyAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5j
ZSA9IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lv
bnNEYXRhKSk7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1v
dmUoZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKQoreworICAgIG1fc2Vzc2lvbi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1
c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmICghbV9jZG0pCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3Rvcnko
KSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0
YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jZG0pCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3Rvcnko
KSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdl
KHR5cGUsIFdURk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9pZGVu
dGlmaWVyKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTgxNTM1NjZmNjQyZmM2OGEzNDU2NGU3NDY3NDUwZmI0NDlkYTk0MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwg
UmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJv
eHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOworCisgICAgLy8gVHlwZXMKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7CisgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I7CisgICAg
dXNpbmcgTWVzc2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAg
ICB1c2luZyBTZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OlNlc3Npb25Mb2FkRmFpbHVyZTsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCwgYm9vbCk+OworICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVz
VmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wp
PjsKKyAgICB1c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9u
YWw8TWVzc2FnZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHVzaW5n
IFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0
YXR1c1ZlY3RvciYmLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYs
IGJvb2wpPjsKKyAgICB1c2luZyBTdG9yZVJlY29yZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPjsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJik7CisgICAgdm9pZCB1cGRh
dGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpOworICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBv
cmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVz
YWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKKworICAgIC8vIENETUluc3RhbmNlU2Vzc2lv
bkNsaWVudAorICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZp
bmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXNzaW9u
SWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Q
cm94eT4gbV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gbV9zZXNz
aW9uOworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjkzMTk2YzA5NWUwMzRiNjQyMWY4ZWU2MzhhZTA5ZWZj
ZTIwZTk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBO
b3RSZWZDb3VudGVkIHsKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1
YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmlu
ZyBzZXNzaW9uSWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlw
ZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNz
aW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRp
b24sIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2Fn
ZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcg
b3JpZ2luKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9u
LCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2Us
IGJvb2wgc3VjY2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9u
KFN0cmluZyBzZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3Ry
aW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0
eXBlKSAtPiAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hh
bmdlZEtleXMsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2Fn
ZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmlu
ZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhYzkyZmQwOTdhZjFjZjli
OGZmOGJiNDBkYjFiZWE1ZTNhODBhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHku
aCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNUHJpdmF0ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6
OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtl
VW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERh
dGFUeXBlcygpLAorICAgICAgICBwcml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAg
ICAgcHJpdi0+c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3Vw
cG9ydHNTZXNzaW9ucygpCisgICAgfSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Q
cml2YXRlJ3MgcHJpdmF0ZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNETVByb3h5PihuZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RG
TW92ZShwcml2KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94
eTo6UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9y
eSwgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3Zl
KGZhY3RvcnkpKQorICAgICwgbV9wcml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZp
Z3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6
On5SZW1vdGVDRE1Qcm94eSgpID0gZGVmYXVsdDsKKworYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBk
YXRhKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKworT3B0aW9uYWw8U3RyaW5n
PiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklk
KTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV2ViQ29y
ZTo6Q0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgV2ViQ29yZTo6Q0RNUHJp
dmF0ZTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAg
bV9wcml2YXRlLT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlv
biksIGFjY2VzcywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5
OjpjcmVhdGVJbnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRp
b24pCit7CisgICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUluc3Rh
bmNlKCk7CisgICAgaWYgKCFwcml2YXRlSW5zdGFuY2UgfHwgIW1fZmFjdG9yeSkgeworICAgICAg
ICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRv
IGluc3RhbmNlID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRo
aXMpLCBwcml2YXRlSW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlm
aWVyID0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZp
Z3VyYXRpb24oKTsKKyAgICBtX2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1v
dmUoaW5zdGFuY2UpKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmln
dXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgp
Cit7CisgICAgbV9wcml2YXRlLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYzlkNTU4ZGZmYTE1MmMwZGQ1YTBjMGIyYjVhODE3MzJhMWRiNWIxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVBy
b3h5LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDog
dWludDhfdDsKK2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Oworc3RydWN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zOworfQorCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Oworc3RydWN0
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1
cmF0aW9uOworCitjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4geworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IGNyZWF0ZShXZWFrUHRy
PFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVBy
aXZhdGU+JiYpOworICAgIH5SZW1vdGVDRE1Qcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RN
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi5nZXQoKTsgfQorCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5p
dGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1Qcm94eShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkNETVByaXZhdGU+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKKwor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lk
IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYmLCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OkNETVByaXZhdGU6OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lk
IGNyZWF0ZUluc3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZv
aWQgbG9hZEFuZEluaXRpYWxpemUoKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5PiBtX2ZhY3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+
IG1fcHJpdmF0ZTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gbV9jb25m
aWd1cmF0aW9uOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zOTU1NTg0ZWRmMTcxYTE2NWRjNTNmMGRhZTVmMWEzOTQ4Yzc1NWYyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1Q
cm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKHN0cnVj
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZpZ3VyYXRp
b24sIGVudW06Ym9vbCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNj
ZXNzKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gYWNj
dW11bGF0ZWRDb25maWd1cmF0aW9uKSBBc3luYworICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAg
ICBMb2FkQW5kSW5pdGlhbGl6ZSgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4
IGZlODg0NGI0NDM4N2ZmYjU4YzFkNWM4Zjg1YjdiMmIwZjJkY2I4Y2EuLmE3ZTNjMzE3ZGUzZjY5
YmQwMjFhY2Y1ZjA0YjI5NDc2ZTRkNGY0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZU1lc3NhZ2VzLmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC01MjksOSArNTM0LDkgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQdHI8QXJy
YXlCdWZmZXI+JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJ
UEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRh
dGEoKSksIGluaXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC03
MTMsNiArNzE4LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQog
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
ZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21h
bmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldElu
c3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VBdHRhY2hl
ZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYm
IGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIu
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNl
KGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0
YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFn
ZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3Rh
bmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJ
bnN0YW5jZShpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRpZgorCisKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
K3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5l
ZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRl
cktleU5lZWRlZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxheWVyLT5iZWdpblNp
bXVsYXRlZEhEQ1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggZjc4ZWMwNmVjMDQzOWZjYTk1
MGE0YmMzNTY0MmUwNGQ5YzdmYTJmZi4uZDk0YmYyMTliMjdmNmU5YTliZDkxOGE4ZDRjZjVhMTIz
MjM0OGMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdU
RiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTM4LDYgKzE0MywxNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXImJik7CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNl
dFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYKKwogICAgIHZvaWQg
YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BFcnJv
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM1MzliYzFkOWM4
NDE2ODkyYTg3NTk2MWVkMWU0YTk4YzEzYjI1NzYuLjVjZGNjODJjNDAxYjk3ZmQ1ZDdhOGVjOGRl
ZGUwMDQ3NzQ3NDgwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC03
OSw5ICs3OSwxNiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNv
dW50ZWQgewogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICMgU2V0Q0RN
U2Vzc2lvbgogICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0YWNoZWQKLSAgICAj
IENkbUluc3RhbmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UK
KyNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBDZG1JbnN0YW5jZUF0
dGFjaGVkKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisg
ICAgQ2RtSW5zdGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciBpbnN0YW5jZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRpZgorCisjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisg
ICAgU2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKICNlbmRpZgog
CiAgICAgQmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKaW5kZXggNDdiNTg3ODI3ZjMxODgxZTYzMDRlOTRmZDc5YWU5NjM3MDEy
NTBmMC4uMjVmMDg5MGU3MTVlMmU3ZmFiNmU3Njg4ZmEyODYwN2M4YWY5MDljYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMzIsNiArMjMyLDkgQEAgZGVm
IHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJywKKyAg
ICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSVENE
ZWNvZGVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCA1YWRiMzdkOGI1YmRlZjAwYTU2NmY0YTAyZGI2NGJiOTVkYWIw
MDI0Li44YmY4ZDNkNTVlYTU1NDY1NDdiYzEzN2U0MjY4NDBhNGExMWY4MTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMyMTcsNCAr
MzIxNyw1OSBAQCBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlYwogICAgIHJldHVybiBidWZmZXI7CiB9
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2UmIG1lc3NhZ2UpCit7
CisgICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CisgICAgZW5jb2RlciA8
PCBtZXNzYWdlRGF0YTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpNZXNzYWdlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1l
c3NhZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2VUeXBlIHR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0
eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBtYWtlT3B0aW9u
YWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPih7IHR5cGUsIGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpIH0pOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImIGtl
eVN0YXR1c2VzKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGtleVN0
YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBrZXlTdGF0dXMgOiBrZXlTdGF0dXNlcykg
eworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXkgPSBrZXlTdGF0dXMuZmlyc3QuY29w
eVJlZigpOworICAgICAgICBlbmNvZGVyIDw8IGtleSA8PCBrZXlTdGF0dXMuc2Vjb25kOworICAg
IH0KK30KKworT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3I+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICB1aW50NjRfdCBkYXRh
U2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFTaXplKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yIGtleVN0YXR1c2VzOworICAgIGtleVN0YXR1c2VzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZGF0YVNpemUpOworCisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXpl
OyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5OworICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGtleSkgfHwgIWtleSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlT
dGF0dXMgc3RhdHVzOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXR1cykpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGtleVN0YXR1c2VzLnVuY2hl
Y2tlZEFwcGVuZCh7IGtleS5yZWxlYXNlTm9uTnVsbCgpLCBzdGF0dXMgfSk7CisgICAgfQorICAg
IHJldHVybiBrZXlTdGF0dXNlczsKK30KKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKaW5kZXggODk4NjM1ODNmM2JjMTY2OTA5NzQ2ZGY2MTgyNjQ3ZDY5MjU5
YWVjMy4uZDA3ZjJiZjViMjFiNjIwYjkxOTgxMDE5OTQwZTI3NDRlZDI1MDBjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTU2LDYgKzU2LDEx
IEBACiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVudENvZGVyc0FkZGl0
aW9ucy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUg
PFdlYkNvcmUvQ0RNSW5zdGFuY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vz
c2lvbi5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewog
Y2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTgzNiw2ICs4NDEsMTggQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0
YXRpYyBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYpOworICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4g
ZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtOTg0LDQgKzEwMDEsMjggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXVEZMb2dMZXZlbD4gewogICAgID47CiB9OwogCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZh
aWx1cmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1
cmU6Ok5vbmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZh
aWx1cmU6Ok5vU2Vzc2lvbkRhdGEsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpT
ZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZSwKKyAgICBXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6UXVvdGFFeGNlZWRlZCwKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIK
KyAgICA+OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RN
SW5zdGFuY2U6OkhEQ1BTdGF0dXM+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cywKKyAgICBXZWJDb3JlOjpDRE1J
bnN0YW5jZTo6SERDUFN0YXR1czo6VW5rbm93biwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
SERDUFN0YXR1czo6VmFsaWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6
Ok91dHB1dFJlc3RyaWN0ZWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6
Ok91dHB1dERvd25zY2FsZWQKKyAgICA+OworfTsKKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggMzBkNTViNDVkODMzZGVjMjNmN2E2MDBmMjgzZmM5MzU5OGFk
OWIwNy4uMDQ4ZjZhOGYyNzg0MTA1NjhmZTMwNzBhMTlkZGJkYzIzYzNmZTRiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0yNiw2ICsyNiwxMCBAQCBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuY3BwCkBAIC00MCw2ICs0NCw3IEBAIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5jcHAKIAorCiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRp
b25NYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAK
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTUzOSw2
ICs1NDQsMTAgQEAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAor
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBjOTdiMTU4
MzY0YTc1NmZhMDBiZDljMGMwNzZhYWVkN2JlNWI2Y2EuLjM5M2QxMDFjNzI3MzY2YzlhYTUxYzQw
NWY2YjIyMjJlNWU1NzJiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTcwNiw2ICsxNzA2LDcgQEAKIAkJQ0QxOUQyRUEyMDQ2NDA2
RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxOUQyRTgyMDQ2NDA2RjAwMTcwNzRB
IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMjg2NUVFMjI1NTU2MjAwMDYwNkFDNyAvKiBQ
cm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nl
c3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMjg2NUVEMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRl
T2JzZXJ2ZXIubW0gKi87IH07CisJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0EzNSAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNENDkx
QjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMDYxRTcwRDA1RjAw
MDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi87IH07CiAJCUNENDkxQjBEMUU3
MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ5MUIw
QjFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwRTFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q0OTFCMEMxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTE3MjgsNiArMTcyOSwyMCBAQAogCQlDREEyOUEy
QjFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI3
MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5o
ICovOyB9OwogCQlDREE5M0RCMDIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNl
Y2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVl
blRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi87IH07CisJCUNEQUMyMEI0MjNGQjU4
RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovOyB9OworCQlDREFDMjBDMzIzRkMyRjc1MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCNjIzRkMyRjczMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMEM0MjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlLmggKi87IH07CisJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1D
b25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5o
ICovOyB9OworCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQTIzRkMyRjc0
MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi87IH07CisJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBD
QTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCRDIzRkMyRjc0MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IH07CisJCUNEQUMyMENEMjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNRmFjdG9yeS5oICovOyB9OworCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi87IH07CisJCUNEQUMyMENGMjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRl
bnRpZmllci5oICovOyB9OworCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RN
RmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGODIzRkM3
MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBGNTIz
RkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CisJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFD
MjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRUYy
M0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjgzMUIy
MDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICovOyB9OwogCQlDRENB
ODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzcxMzJB
QkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJ
Q0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUg
LyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKQEAgLTQ5ODcsNiArNTAwMiwxMCBAQAogCQlDRDE5RDJF
OTIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHA7IHBhdGggPSBp
b3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rh
c2tTdGF0ZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFRDIyNTU1NjIwMDA2MDZB
QzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDUxRTcwRDA1
RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
NDkxQjBBMUU3MzJEMTIwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMjgsNiArNTA0Nyw0MyBAQAogCQlDREEyOUEyNzFDQkVC
NjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpY1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlz
dGljUGFyYW1ldGVycy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREE5
M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1l
dGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQ
YXJhbWV0ZXJzLmNwcDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hl
dXJpc3RpY1BhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFD
MjA3ODIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVD
RE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3Rv
cnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
ODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDgzMjNG
QjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDg2
MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1v
dGVDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQUQyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjEyM0ZCNThFMjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMzIzRkI1OEYyMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjYyM0ZD
MkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI4MjNG
QzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RN
RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJBMjNGQzJG
NzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJCMjNG
QzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkUyM0ZD
MkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMwMjNGQzJGNzUw
MDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzIyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNE
TUluc3RhbmNlUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1v
dGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMzIzRkMzODNBMDAyMURFRTMgLyog
UmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNUHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGNTIzRkMz
ODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4v
V0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
QzI4MzFDMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHBhdGggPSBpb3MvZnVs
bHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBDRk5ldHdvcmsuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1
dGU+IjsgfTsKQEAgLTUzMTIsNiArNTM2OCwyMCBAQAogCQkJCTlCNUJFQzI5MjQwMTAxNTgwMDcw
QzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwICovLAogCQkJCTlCNUJFQzI4
MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLywKIAkJ
CQk5QjVCRUMyRTI0MDEwMThDMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEJGMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVD
RE0uY3BwICovLAorCQkJCUNEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAq
LywKKwkJCQlDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlv
bi5oICovLAorCQkJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
LmNwcCAqLywKKwkJCQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eS5oICovLAorCQkJCUNEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlm
aWVyLmggKi8sCisJCQkJQ0RBQzIwQkIyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlLmNwcCAqLywKKwkJCQlDREFDMjBCNzIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2UuaCAqLywKKwkJCQlDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJFMjNGQzJGNzQw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICovLAorCQkJCUNEQUMyMEJE
MjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLywKKwkJCQlD
RDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3Nh
Z2VzLmluICovLAorCQkJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8sCiAJCQkJMDdCOTNGRjUyM0FGMENCODAwMzZGOEVB
IC8qIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTA3OTIzMTMwMjM5
QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwICovLAogCQkJCTA3
OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLywK
QEAgLTUzNDIsNiArNTQxMiwxOCBAQAogCQkJCTlCMTIyOUNGMjNGRjI4MTQwMDhDQTc1MSAvKiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzFCQzU3
RTIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkw
NzFCQzU3RjIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmggKi8sCisJ
CQkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAg
Ki8sCisJCQkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94
eS5oICovLAorCQkJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi8sCisJCQkJQ0RBQzIwQjEyM0ZCNThFMjAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RB
QzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNw
cCAqLywKKwkJCQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaCAqLywKKwkJCQlDREFDMjBBRDIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwODMyM0ZC
MjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjA4MjIzRkIy
MTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLywKKwkJCQlDREFDMjA4NjIzRkIyMTU4
MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcyNUVGQUQy
MzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLywK
IAkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaCAqLywKIAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05NzI5LDYgKzk4MTEsMjEgQEAK
IAkJCQkxQTA0M0I1QzEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXMuaCAqLywKIAkJCQkxQThFRkE2RTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVn
aW5Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRjMy
M0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8sCisJ
CQkJQ0RBQzIwRUUyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEY1MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBFQjIzRkMz
ODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJ
Q0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLywKKwkJCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDRDQ2NjE4MjI0MDEw
NTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLywKKwkJ
CQlDRDQ2NjE4MDI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVz
c2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFD
MjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlcy5oICovLAorCQkJCUNEQUMyMEYxMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVGMjNGQzM4
MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJ
Q0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCAqLywK
KwkJCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZGMjRBMkMx
ODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
cy5oICovLAogCQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTA2MzUsNiArMTA3MzIsMTYgQEAK
IAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUNEMjNGRjI1RjIwMDhDQTc1MSAv
KiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI1
QkVDMkEyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENEMjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRjIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBQzIwQzQyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDMzIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzkyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMTZB
RUExNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTIzMzQsNiArMTI0NDEsMTEgQEAKIAkJCQkyRDU0QzMxQjIxMkY0REE2MDA0OUMx
NzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjg2NUVGMjI1
NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQk5QjEyMjlDRTIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUz
IC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDQ2NjE4MzI0MDEwQTY3
MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRBMkQx
ODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5RTAwMjVBODhE
IC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4
IGRmYjliOWE5MzhiOTg1ZDI4MGFjZGVkYTA0OGJjNWE2NmY3N2U2MWIuLmY5Yjk3MDE4MTcyZGE1
MmIxYzcwNTQ5Mzk1OTNjMjExZGZlZDAxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMyw2ICszMyw4IEBA
CiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94
eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWVzc2FnZXMuaCIKQEAgLTQ0LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2VzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtNzUsNiArODEsMTMgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0KIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUNETUZhY3Rvcnkm
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpjZG1GYWN0b3J5KCkKK3sKKyAgICByZXR1cm4gKldlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKTsKK30KKyNl
bmRpZgorCiBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpAQCAtMTAwLDYgKzExMywxMiBA
QCBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlYwogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5saWJXZWJSVENDb2RlY3MoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFj
dG9yeT4oKS0+ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
CmluZGV4IDZhY2RjYmYzOTU0NTFiNmI0Yzk1OGVjYzkyYjUyMDE2YjY3NzcyODkuLjJiNTcyYzFi
YWNiZmE2YjZiMjZmMzU2MGMyNjJhOWE0MWIwYzc1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM5LDYgKzM5LDgg
QEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFJl
bW90ZUNETUZhY3Rvcnk7CisKIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxHUFVQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTU4LDYg
KzYwLDEwIEBAIHB1YmxpYzoKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBz
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlQ0RNRmFjdG9yeSYgY2RtRmFjdG9yeSgpOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDhlZjdk
ZWVlYTcwZTIwYWU4ZmFhN2NlY2JhNmJkMzc2OTY2NmI1MDIuLjZjNDc4Mzk4N2FmNTY3ZDMzZTQ4
MjE1ZjExYWY4ZjVjMzg1ZjAwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTQ5LDYgKzQ5LDEwIEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVt
b3RlQ0RNSW5zdGFuY2UuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAgLTkx
MCwxOSArOTE0LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYg
aW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RN
SW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNkbUluc3RhbmNlQXR0YWNoZWQoZG93bmNhc3Q8UmVt
b3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAotdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFu
Y2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQo
Q0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYg
KGlzPFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZURldGFjaGVk
KGRvd25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9p
ZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0
V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5z
dGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6QXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShkb3duY2FzdDxSZW1vdGVD
RE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtOTMwLDYg
KzkzNywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNo
YW5nZWQoKQogICAgIG1fcGxheWVyLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwogfQogCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQo
Y29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSYmIGluaXREYXRh
KQoreworICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGluaXRE
YXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKTsKKyAgICBtX3BsYXllci0+aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSk7
Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29u
c3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtOTM3LDYgKzk1MCwxMyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVl
QWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91bGQpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlO
ZWVkZWQoc2hvdWxkKSwgbV9pZCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc1RleHRUcmFja1JlcHJl
c2VudGF0aW9uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDg1NGFh
YzU2NmFiYjIwMjI3Y2RhOTE1NjAxNWJmMjQ4N2E3NjNkZGYuLjM3ZjNlOTRlZjM4MzU2Y2JlMzhl
ZmVmZDhlNTMxYTllMWYwOTM4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMTM3
LDYgKzEzNyw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAg
dm9pZCB3YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOworICAgIHZvaWQgaW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiwgSVBDOjpEYXRhUmVmZXJlbmNlJiYpOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMzEzLDYgKzMxNCwx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IGZpbmFsOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9v
bCkgZmluYWw7CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29sIHJl
cXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNl
dFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0aW9u
KikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmlu
ZGV4IDNmZmNmMzZlZmUyNGIzZDA4NTBlZWEyODZlMmNlNzI4ZTRhMmZjMWEuLjZhZTBkYjMxZmFi
ZWU5YTQ0NGQ1MjgzZGRiYTA4ZmIzMGM2MDk4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC03NSw2ICs3NSw3IEBAIG1lc3NhZ2VzIC0+IE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZSBOb3RSZWZDb3VudGVkIHsKIAogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAgICAgV2FpdGluZ0ZvcktleUNoYW5nZWQoKQorICAgIEluaXRpYWxpemF0aW9u
RGF0YUVuY291bnRlcmVkKFN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBp
bml0RGF0YSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYzkxYjQwZjNiOWM3NWIzYzExMGI2MzZmNjhjYTU3MDVhMjViNTQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE0uY3BwCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DRE1SZXN0cmljdGlvbnMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IFJl
bW90ZUNETTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1v
dGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPihuZXcgUmVtb3Rl
Q0RNKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KSk7Cit9CisKK1JlbW90ZUNETTo6UmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4m
JiBmYWN0b3J5LCBSZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRp
b24mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisg
ICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE06OmdldFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb24oQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24s
IExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNr
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSwgYWNjZXNzKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmll
cik7Cit9CisKKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0Nv
bmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRz
U2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KSBjb25zdAoreworICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRl
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgorICAgIHJl
dHVybiB0cnVlOworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ0RNUmVxdWlyZW1lbnQ6Ok5v
dEFsbG93ZWQ7Cit9CisKK0NETVJlcXVpcmVtZW50IFJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJl
c3RyaWN0aW9ucyYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworfQorCitib29sIFJlbW90ZUNETTo6ZGlz
dGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZlB0cjxDRE1JbnN0YW5jZT4gUmVtb3Rl
Q0RNOjpjcmVhdGVJbnN0YW5jZSgpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkOworICAg
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5jZSgpLCBNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6OkNyZWF0ZUluc3RhbmNlOjpSZXBseShpZCwgY29uZmlndXJhdGlvbiksIG1faWRlbnRp
Zmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwg
V1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNE
TTo6bG9hZEFuZEluaXRpYWxpemUoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBt
X2lkZW50aWZpZXIpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK3sKKyAgICAv
LyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSgpLgorICAgIHJldHVybiByZXNwb25zZS5jb3B5
KCk7Cit9CisKK09wdGlvbmFsPFN0cmluZz4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIHdpbGwg
YmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bG9h
ZFNlc3Npb24oKS4KKyAgICByZXR1cm4gc2Vzc2lvbklkOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjZkNmYzNjk3OWIwNDUyY2Y5NmE1MmQxOGY2YWQwYjdmMzM0OGU4ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAg
LTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRl
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFJlbW90ZUNETSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1Qcml2YXRlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4gY3JlYXRlKFdlYWtQ
dHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETSgpID0gZGVmYXVsdDsKKwor
cHJpdmF0ZToKKyAgICBSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1v
dGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICB2b2lk
IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIExvY2FsU3RvcmFnZUFjY2VzcywgU3VwcG9y
dGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOworCisgICAgYm9vbCBzdXBwb3J0c0Nv
bmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9u
cyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBj
b25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVu
dCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJl
cXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKKyAgICB2b2lk
IGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYpIGNvbnN0IGZpbmFsOworCisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZElu
aXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9y
dGVkSW5pdERhdGFUeXBlczsgfQorICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1
c3RuZXNzZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVk
Um9idXN0bmVzc2VzOyB9CisgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1Nlc3Npb25zOyB9CisKKyAgICBXZWFrUHRyPFJlbW90
ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MmM0NjRmZGZk
Y2Q4YzM1NzU2YjBlMzhkYWQwZjg5MzkwNTg4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaApAQCAt
MCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiB7CisgICAgVmVj
dG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgVmVjdG9yPEF0b21T
dHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICBib29sIHN1cHBvcnRzU2VydmVyQ2Vy
dGlmaWNhdGVzOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uczsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAg
ZW5jb2RlciA8PCBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3Vw
cG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydHNTZXNz
aW9uczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMg
T3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CisgICAgeworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZElu
aXREYXRhVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsK
KyAgICAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1
cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRSb2J1c3Ru
ZXNzZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkUm9idXN0bmVzc2VzKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1Nl
cnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1NlcnZlckNlcnRp
ZmljYXRlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcykKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3Vw
cG9ydHNTZXNzaW9uczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nlc3Npb25zOworICAg
ICAgICBpZiAoIXN1cHBvcnRzU2Vzc2lvbnMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVk
SW5pdERhdGFUeXBlcyksCisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBwb3J0ZWRSb2J1c3RuZXNz
ZXMpLAorICAgICAgICAgICAgKnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzLAorICAgICAgICAg
ICAgKnN1cHBvcnRzU2Vzc2lvbnMsCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMmQzZDVj
NjEwYWY1NGFkMWQzZWY0ZmE2MWM0NTk2NjY1Mjk3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCkBAIC0w
LDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUNETUZhY3Rv
cnk6OlJlbW90ZUNETUZhY3RvcnkoV2ViUHJvY2VzcyYgcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vz
cyhwcm9jZXNzKQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5Ojp+UmVtb3RlQ0RNRmFjdG9yeSgp
ID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZWdpc3RlckZhY3RvcnkoVmVj
dG9yPENETUZhY3RvcnkqPiYgZmFjdG9yaWVzKQoreworICAgIGZhY3Rvcmllcy5hcHBlbmQodGhp
cyk7Cit9CisKK2NvbnN0IGNoYXIqIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKCkK
K3sKKyAgICByZXR1cm4gIlJlbW90ZUNETUZhY3RvcnkiOworfQorCitHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgUmVtb3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworICAgIHJl
dHVybiBtX3Byb2Nlc3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKworYm9vbCBS
ZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKK3sKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAgIGdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJv
eHk6OlN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOworICAg
IHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBSZW1v
dGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAg
UmVtb3RlQ0RNSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb247CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNKGtleVN5c3RlbSks
IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETTo6UmVwbHkoaWQsIGNv
bmZpZ3VyYXRpb24pLCB7IH0pOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBSZW1vdGVDRE06OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92
ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rv
cnk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCwgUmVm
PFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9z
ZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNl
c3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uKFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fc2Vzc2lv
bnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODllZDA2MDAxYzY2M2JhZjE4
NWRiOTMxNzQ5N2U5MmNmYmZjMDZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKQEAgLTAsMCArMSw4NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNRmFjdG9y
eS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBJ
UEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFJlbW90ZUNETTsK
K2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjsKK2NsYXNzIFdlYlByb2Nlc3M7CisKK2Ns
YXNzIFJlbW90ZUNETUZhY3RvcnkgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpDRE1GYWN0
b3J5CisgICAgLCBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlQ0RNRmFjdG9yeShXZWJQcm9jZXNzJik7
CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeSgpOworCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHN1cHBsZW1lbnROYW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvY2VzczsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmFjdG9yeShWZWN0b3I8V2ViQ29y
ZTo6Q0RNRmFjdG9yeSo+Jik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkNETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIHN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgSGFzaE1hcDxSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uPj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVDRE0+PiBtX2NkbXM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNz
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVlM2EzODE5
YzE3MDdiNTU4YjNmZDlhYWE4ODE2MzE1ODM5MmZhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCkBAIC0w
LDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9PYmpl
Y3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNETUlk
ZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUlkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTFhMGUwYjUyZDJkYjViMzY2
ZThhYjY2OTY4YzU2MTQ2MmVkZDljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTAsMCArMSwxMDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2UuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUluc3Rh
bmNlPiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4m
JiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVDRE1JbnN0YW5jZShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwg
V1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZTo6UmVtb3Rl
Q0RNSW5zdGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24m
JiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAg
LCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24sIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyBkaXN0aW5j
dGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBwZXJzaXN0ZW50U3RhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAg
ICAgIGNhbGxiYWNrKEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Zh
Y3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNpc3Rl
bnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhGYWlsZWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNl
UHJveHk6OlNldFNlcnZlckNlcnRpZmljYXRlKGNlcnRpZmljYXRlLmdldCgpKSwgV1RGTW92ZShj
YWxsYmFjayksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNl
dFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgaWYgKCFt
X2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpLCBtX2lkZW50aWZpZXIpOworfQor
CitSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5jZTo6
Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZDsKKyAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uKCksIE1lc3Nh
Z2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBseShpZCksIG1f
aWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
YXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUobWFrZVdlYWtQ
dHIobV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCkpOworICAgIG1fZmFjdG9yeS0+YWRkU2Vz
c2lvbihpZCwgc2Vzc2lvbi5jb3B5UmVmKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NWY0OWI5NzM5ZDI0NzlkNTU1ZGY4
ZmIwMjdlZGZlY2E5YzM0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2Uu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkNETUluc3RhbmNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5S
ZW1vdGVDRE1JbnN0YW5jZSgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNETUlu
c3RhbmNlPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOworCisg
ICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNSW5zdGFu
Y2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOworCisgICAgSW1wbGVtZW50
YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxl
bWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CisgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVt
OyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bigpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7Cisg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworfTsKKworfQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0NETV9JTlNUQU5DRShXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
LCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGUpCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUz
MmQ3MmU3Y2U0Yjg1M2YyZDNiOTM0NTVlMTkyODFjNDE5ZmE0MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbiB7CisgICAgU3RyaW5nIGtleVN5c3RlbTsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwga2V5U3lzdGVtOworICAgIH0KKworICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0
aW9uYWw8U3RyaW5nPiBrZXlTeXN0ZW07CisgICAgICAgIGRlY29kZXIgPj4ga2V5U3lzdGVtOwor
ICAgICAgICBpZiAoIWtleVN5c3RlbSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCprZXlTeXN0ZW0pLAor
ICAgICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmZkZTY5MWMzZTg5
NWI4ODU5ZTYyMDVhNzFlMTE1ZmE5YjRmZTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYv
T2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlw
ZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVjY2JlMjM5NmY5YjJmODZjOWM2YjI2ZjMzZTFiYTIz
NWIwMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVm
PFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVh
dGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXImJiBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsKK30K
KworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAg
ICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBj
YWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFp
bGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERh
dGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVyKCkpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBG
YWlsZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNr
KG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1f
aWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIFdURk1vdmUocmVzcG9u
c2UpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHNlc3Npb25XYXNDbG9z
ZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91
YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJv
b2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soc2Vzc2lvbldhc0Nsb3Nl
ZCwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBXVEZN
b3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1f
aWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAo
IW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpMb2FkU2Vzc2lvbih0eXBlLCBzZXNzaW9uSWQsIG9yaWdpbiks
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9w
dGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFp
bHVyZSBsb2FkRmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hh
bmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwg
c3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkLCBsb2FkRmFpbHVyZSk7CisgICAgfSwgbV9p
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmNsb3NlU2Vz
c2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjaygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpDbG9zZVNlc3Npb24oc2Vzc2lvbklkKSwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjaygpOworICAg
IH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9m
YWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUp
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5n
ZWRLZXlzLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYgbWVzc2Fn
ZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBPcHRpb25hbDxSZWY8U2hhcmVk
QnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlmIChtZXNzYWdl
ICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKKyAgICAgICAgICAgIHJlYWxNZXNzYWdlID0g
bWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVk
ID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpTdG9yZVJlY29yZE9m
S2V5VXNhZ2Uoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0
YXR1c2VzKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUtl
eVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5cGUsIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fY2xp
ZW50ICYmIG1lc3NhZ2UuYnVmZmVyKCkpCisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZSh0
eXBlLCBtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCkpOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9uSWRD
aGFuZ2VkKHNlc3Npb25JZCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZmZlYzA5YzQ5YWUyNDIxNTBjYjI0YWNhMDk1MWZlZThmNDhmNTUw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1v
dGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBmaW5hbCA6IHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bigpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFj
dG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYpOworCisgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2
b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKTsKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJik7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOworCisK
KyAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNs
aWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KKyAg
ICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KKyAgICB2
b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBsb2FkU2Vzc2lvbihM
aWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgZmluYWw7CisKKyAgICBX
ZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRyPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOGMyMzkyZTdlZjg2MjA0NjIxZDI4NDE0MzhiNWVkZjRkMzgxNTM2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMiBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFVwZGF0ZUtleVN0YXR1c2VzKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKQorICAg
IFNlbmRNZXNzYWdlKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSB0eXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2FnZSkKKyAgICBTZXNzaW9uSWRDaGFu
Z2VkKFN0cmluZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODZhY2QxMjY1YWYwYzg0NjM4OGUy
M2Y5Y2NhMTZkOTAyMzM4ZmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgKQEAg
LTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlh
U3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRp
YVN0cmF0ZWd5LmNwcAppbmRleCAyYWFlNWU1NDQ1MTA4NDc5YmQzY2QzMzlhZmE2YmY2ZDJkZGFi
Y2Y2Li41ZDdhOGI4ZDExMjRiMmE1MjhhZDczYmRjOTZkOWE5NzgwZGMyMDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVn
eS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxs
YmFjay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgpAQCAtNTEsNyArNTMsMTMg
QEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24+IFdlYk1lZGlhU3Ry
YXRlZ3k6OmNyZWF0ZUF1ZGlvRGVzdGluYXQKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
dm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8V2ViQ29y
ZTo6Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkNETUZh
Y3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisgICAgaWYgKG1fdXNlR1BVUHJvY2VzcykgeworICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNkbUZhY3Rvcnko
KS5yZWdpc3RlckZhY3RvcnkoZmFjdG9yaWVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorICAgIFdlYkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMo
ZmFjdG9yaWVzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IGUyNDg1MzJiYWE3MDllZjBlOWU0YWZkMjYwYWI3MmUyYjk2
OTkxMDIuLjhmNGY4ODBiYWJkN2Q2NWEwY2Q1OGQwNDJmOGNkZWI5NmI1NWJjZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjIsNiArMzIy
LDkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaCIKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJl
bW90ZUNETUZhY3RvcnkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDNlNWExNmQxNzAxNTM3
MzQxNGFhYWE2ZWZiMWRiODY1ZWVmYjcxNGQuLjhjZmRhMWYzMTBlNWFlMGU5M2ZhOGMxMDk0Yjc1
NjE3ZTZjOWI5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTE3NCw2ICsxNzQsMTAgQEAKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3MuaCIKICNlbmRpZgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
LmgiCisjZW5kaWYKKwogI2RlZmluZSBSRUxFQVNFX0xPR19TRVNTSU9OX0lEIChtX3Nlc3Npb25J
RCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgpIDogMCkKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtzZXNzaW9uSUQ9JSIgUFJJdTY0ICJdIFdlYlBy
b2Nlc3M6OiIgZm10LCB0aGlzLCBSRUxFQVNFX0xPR19TRVNTSU9OX0lELCAjI19fVkFfQVJHU19f
KQogCkBAIC0yNDAsNiArMjQ0LDEwIEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgIGFk
ZFN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPigpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgYWRkU3Vw
cGxlbWVudDxSZW1vdGVDRE1GYWN0b3J5PigpOworI2VuZGlmCisKICAgICBHaWdhY2FnZTo6Zm9y
YmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392050</attachid>
            <date>2020-02-28 22:56:21 -0800</date>
            <delta_ts>2020-02-29 09:58:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208090-20200228225620.patch</filename>
            <type>text/plain</type>
            <size>167248</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVmNjg1ZTVkODQ4ZGE1
Y2E3NTI3NDAyM2NhOTkyNThmNGU5Y2EyZS4uZjQwYzUwOGY5YWM5OTcxMjkzODI4MzFiMTZhNjBk
YzU4N2RiNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBBZGQgZXhwb3J0IG1h
Y3JvcyB0byBDRE1GYWN0b3J5OjpyZWdpc3RlcmVkRmFjdG9yaWVzKCkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5Lmg6CisKIDIwMjAtMDItMjEgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIEltcGxlbWVudCBN
b2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDk4NTk3OTRmN2Vj
ZTZlZmM0NTU4NmY2YTZlZDIxZWQ4MTJhNzZjZS4uZDRlNjdlMzg1ZTljNmM1NTI3NmQ5MTA2Mjdh
Mjk4NGNhZTI5ODUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzAgQEAKKzIwMjAtMDItMjMgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVu
dCBNb2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODA5MAorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90ZUNETUluc3RhbmNlLCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAgb2YgdGhlaXIgYXNzb2NpYXRl
ZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBleGlzdGluZyBDRE1GYWN0b3J5
IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5IGJ5IGV4cGxpY2l0bHkgY2xlYXJpbmcgb3V0IGFs
bCB0aGUgZXhpc3RpbmcgCisgICAgICAgIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlzIGVuYWJsZWQs
IGFuZCByZXNldHRpbmcgdGhvc2UgZmFjdG9yaWVzIHRvIGRlZmF1bHQgd2hlbiB0aGUgR1BVIHBy
b2Nlc3MgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y2RtRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6ZmFjdG9yeUZvcktleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVD
RE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFj
dG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NE
TUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6OmFkZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjpyZW1vdmVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94
eTo6YWRkSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6
OnJlbW92ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpnZXRJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVt
b3ZlU2Vzc2lvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
UHJveHkuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0
b3J5UHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3Jl
YXRlU2Vzc2lvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5
Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6aW5zdGFuY2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNs
b3NlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lv
bklkQ2hhbmdlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Q
cm94eTo6UmVtb3RlQ0RNUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6
c3VwcG9ydHNJbml0RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5p
dGl6ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXpl
U2Vzc2lvbklkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmdldFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRl
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRp
YWxpemUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmZhY3RvcnkgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW46IEFkZGVk
LgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250
aW51ZUFmdGVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNo
ZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3Rh
bmNlRGV0YWNoZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpSZW1vdGVDRE0pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9u
VHlwZVdpdGhDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
OjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE06OnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3Jp
Z2luQW5kQ2xlYXJhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVh
dGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lvbklkIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDogQWRkZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5Ojp1cGRhdGVQcmVmZXJlbmNlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUZhY3Rvcnk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlOjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24u
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vu
c2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92
ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdl
cy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0
ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAy
MDIwLTAyLTIzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtH
UFVQXSBJbXBsZW1lbnQgTW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKaW5k
ZXggNTI1Yzg0ZWNiZTc5MWY0MGI1NDdmYjdmYWZkZTlkMDNiYTgxMGJhZS4uZmIzNTBkNDg1NWEx
YWIzM2IxYjZkMWM0ZGNlNzNhN2U3MjZhNjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaApAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RN
KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0o
Y29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIHJl
Z2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPENE
TUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3RvcmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShDRE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgdW5yZWdpc3RlckZhY3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggODZmMDFiMzlh
MDQ3MjhjMmMwYmZmNjdlNWJkMzkzZjA5MWI3N2Y5ZC4uOWY5NDZmODQ5N2FmMjNiNGFmYTUxYjc5
MTg0MTg1MTg4NjBhYzViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdApAQCAtMTgsNiArMTgsMTAgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZh
Y3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiskKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTExMiw2ICsxMTYs
NyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVz
c2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1l
c3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdAppbmRleCA2NDY0ZDgzODlmYjUzZjUyNzUwNzA1MzljOTgxMGZiMmQ4Y2NiMzE5Li5hOTZj
MmNmZGRkNDZiMzU5MjM4ZTk2MjM0M2E5OTIyMTA0ZWVhNTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTEzNyw2ICsxMzcsMjEgQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJl
Y2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggNDM2ZTRiNDIyNGNiMDQ1YzllYWIzYTZjNzA1NDMwYmQ1MjUzMzMzNC4uNDVl
ZTNkYjdlZDdlMTMzNzJjOGE3NWFkNTU1YTE2NTg3ZjY3ZDA4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMTUxLDYgKzE1MSwxMSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAg
ICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVDRE1Qcm94eSBcCisgICAgUmVtb3RlQ0RNRmFjdG9y
eVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24gXAorICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IFwKICAgICBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2YTJj
ODcwZjdhYWExYjBkYjAwMGVmODg4MjdjOWEwZjYxZGNmMjViLi42Y2YxYzMwYjNlMzMwMTI3NzQ2
NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02MCwxMCArNjAsMTggQEAK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgiCisjZW5kaWYKKworCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTksNiAr
MjA3LDE2IEBAIExpYldlYlJUQ0NvZGVjc1Byb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCitSZW1vdGVDRE1GYWN0b3J5UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNkbUZhY3RvcnlQcm94eSgpCit7CisgICAgaWYgKCFtX2NkbUZhY3RvcnlQcm94eSkKKyAg
ICAgICAgbV9jZG1GYWN0b3J5UHJveHkgPSBtYWtlVW5pcXVlPFJlbW90ZUNETUZhY3RvcnlQcm94
eT4oKnRoaXMpOworCisgICAgcmV0dXJuICptX2NkbUZhY3RvcnlQcm94eTsKK30KKyNlbmRpZgor
CiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQo
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiB7
CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcC5l
bnN1cmUocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIFsmXSgpIHsKQEAgLTI2OSw2ICsyODcs
MjggQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlQ0RNTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5
KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2Vp
dmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2
ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKQEAgLTI5
NCw2ICszMzQsMjggQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICB9CiAjZW5kaWYKICNl
bmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZl
U3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29k
ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmND
RE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFu
Y2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NE
TUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIpOwogfQogCkBAIC0zMDIsNyArMzY0LDcgQEAgY29uc3QgU3RyaW5nJiBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QKICAg
ICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRpYUNhY2hlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsK
IH0KIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpIHx8IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogY29uc3QgU3Ry
aW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KG1fc2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDc0NzE1YzgwYzU0NWJlYWZlYzNmNmI3
ZTA5ODRlY2E1MGNiYTI2NjkuLmEzZWNhNWM4ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBk
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3Mg
TGliV2ViUlRDQ29kZWNzUHJveHk7CiBjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKK2Ns
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjsKQEAgLTg1LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYgc2Vzc2lvbk1hbmFnZXIoKTsKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBj
ZG1GYWN0b3J5UHJveHkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsKIApAQCAtMTM4LDYgKzE0
MywxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eU1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHlNYXAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNYXA7CisKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0
b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnlQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjViNGFmZDRiNDM2Nzc3ZDFjNGQx
M2Y4NzBiNDRkZDJiMzY5ODExMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZh
Y3RvcnlQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5l
Y3Rpb24pCit7Cit9CisKK1JlbW90ZUNETUZhY3RvcnlQcm94eTo6flJlbW90ZUNETUZhY3RvcnlQ
cm94eSgpID0gZGVmYXVsdDsKKworc3RhdGljIENETUZhY3RvcnkqIGZhY3RvcnlGb3JLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RN
RmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgIGF1dG8gZm91bmRJbmRleCA9IGZh
Y3Rvcmllcy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiBmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5
LT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pOyB9KTsKKyAgICBpZiAoZm91bmRJbmRleCA9
PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhY3Rvcmll
c1tmb3VuZEluZGV4XTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNE
TShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVD
RE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikK
K3sKKyAgICBhdXRvIGZhY3RvcnkgPSBmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSk7Cisg
ICAgaWYgKCFmYWN0b3J5KSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRl
Q0RNKGtleVN5c3RlbSk7CisgICAgaWYgKCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRp
b24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcm94eSA9
IFJlbW90ZUNETVByb3h5OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUocHJpdmF0
ZUNETSkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90ZUNETUlkZW50aWZpZXI6OmdlbmVy
YXRlKCk7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gcHJveHkt
PmNvbmZpZ3VyYXRpb24oKTsKKyAgICBhZGRQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5
KSk7CisgICAgY29tcGxldGlvbihXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lz
dGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihmYWN0b3J5Rm9yS2V5U3lzdGVtKGtl
eVN5c3RlbSkpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNE
TU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIpCit7CisgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkp
KSkKKyAgICAgICAgcHJveHktPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVj
dElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0
aW5hdGlvbklEKCkpKSkKKyAgICAgICAgaW5zdGFuY2UtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVj
ZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nl
c3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lv
bi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGll
cy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0
YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRS
ZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgp
KSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFBy
b3h5KFJlbW90ZUNETUlkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94
eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZCkpOworICAg
IG1fcHJveGllcy5zZXQoaWQsIFdURk1vdmUocHJveHkpKTsKK30KKwordm9pZCBSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OnJlbW92ZVByb3h5KFJlbW90ZUNETUlkZW50aWZpZXIgaWQpCit7CisgICAg
QVNTRVJUKG1fcHJveGllcy5jb250YWlucyhpZCkpOworICAgIG1fcHJveGllcy5yZW1vdmUoaWQp
OworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkSW5zdGFuY2UoUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eT4mJiBpbnN0YW5jZSkKK3sKKyAgICBBU1NFUlQoIW1faW5zdGFuY2VzLmNvbnRhaW5zKGlk
KSk7CisgICAgbV9pbnN0YW5jZXMuc2V0KGlkLCBXVEZNb3ZlKGluc3RhbmNlKSk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZShSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1faW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9pbnN0YW5jZXMucmVtb3ZlKGlkKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eSogUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkKQoreworICAgIHJldHVybiBtX2luc3RhbmNlcy5nZXQoaWQpOwor
fQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk+JiYgc2Vzc2lvbikKK3sKKyAgICBBU1NFUlQoIW1fc2Vzc2lvbnMuY29u
dGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwgV1RGTW92ZShzZXNzaW9uKSk7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fc2Vzc2lvbnMuY29u
dGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzliMWNjYzk1YmJkM2ZlM2I5ZjMzNTJkODUwMDI3N2E0
YmZkMzkzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OworY2xhc3Mg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CitjbGFzcyBSZW1vdGVDRE1Qcm94eTsKK3N0
cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJv
eHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0b3J5UHJveHkoKTsKKworICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdl
YlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQorICAgIHZvaWQgZGlk
UmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmll
ciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiYmKTsKKyAgICB2b2lkIHJlbW92ZVBy
b3h5KFJlbW90ZUNETUlkZW50aWZpZXIpOworCisgICAgdm9pZCBhZGRJbnN0YW5jZShSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5PiYmKTsKKyAgICB2b2lkIHJlbW92ZUluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
Zmllcik7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSogZ2V0SW5zdGFuY2UoY29uc3QgUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJik7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5PiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbCB7
IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAg
Ly8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNv
bmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwor
ICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TVByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4+IG1faW5zdGFuY2Vz
OworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNDdjNWU2ZTYxYzQyMDc4MzFkYTBiZDExOGE2YWFlYjQwZDMzMTM2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVt
b3RlQ0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZUNETShTdHJpbmcg
a2V5U3lzdGVtKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2Vi
S2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3VzCisg
ICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSkgLT4gKGJvb2wgcmVzdWx0KSBT
eW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTI0
OGZkZmM4MmQ5NGFlNmUwZWQxNzViMzUxYzFiMjZiNTVhMzEzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3Bw
CkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5
PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4m
JiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2KQoreworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiY+KHsKKyAgICAg
ICAgcHJpdi0+a2V5U3lzdGVtKCksCisgICAgfSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXVEZN
b3ZlKGNkbSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKwor
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJl
bW90ZUNETVByb3h5PiYmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFVuaXF1ZVJlZjxS
ZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1f
Y2RtKFdURk1vdmUoY2RtKSkKKyAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKKyAgICAs
IG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpID0gZGVmYXVsdDsKKwor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywg
QWxsb3dQZXJzaXN0ZW50U3RhdGUgYWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIG1faW5zdGFuY2Ut
PmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBhbGxvd0Rpc3RpbmN0
aXZlSWRlbnRpZmllcnMsIGFsbG93UGVyc2lzdGVudFN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRpb24p
KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBjZXJ0aWZpY2F0ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFj
ZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKENETUluc3RhbmNlOjpG
YWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0YW5jZS0+c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgV1RG
TW92ZShjb21wbGV0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBtX2luc3Rh
bmNlLT5zZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJiBjb21wbGV0aW9uKQorewor
ICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7CisgICAg
aWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9jZG0gfHwgIW1fY2RtLT5mYWN0b3J5KCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gaWRl
bnRpZmllciA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7
CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0
ZShtYWtlV2Vha1B0cihtX2NkbS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVhc2VOb25OdWxsKCks
IGlkZW50aWZpZXIpOworICAgIG1fY2RtLT5mYWN0b3J5KCktPmFkZFNlc3Npb24oaWRlbnRpZmll
ciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyKTsKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MTEyZDVmODRiODg0NzMxOWRj
NDA0ZmVhMTUwNmM4YjFlZjMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3Rh
bmNlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNSW5zdGFuY2U7CitzdHJ1Y3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IDogcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciAgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYs
IFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJik7CisgICAgflJlbW90ZUNETUluc3RhbmNlUHJv
eHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorICAgIFdl
YkNvcmU6OkNETUluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2U7IH0KKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJl
bW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNv
cmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdXNpbmcgU3Vj
Y2Vzc1ZhbHVlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZTsKKyAgICB1c2lu
ZyBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxs
b3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzOworICAgIHVzaW5nIEFsbG93UGVyc2lzdGVudFN0YXRl
ID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOworCisgICAgLy8g
TWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNz
VmFsdWUpPiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1Y2Nlc3NWYWx1ZSk+
JiYpOworICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIGNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Q
cm94eT4gbV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNlOwor
ICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJh
dGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lvbnM7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NTBlODUzNDFjMmViMzViYjZlYzA4MDk1ZDVhMDA0ZWNjYTEzOWY5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2Vz
IC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlU2Vz
c2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQp
IFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGVudW06Ym9vbCBX
ZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFs
bG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpIC0+IChlbnVtOmJvb2wg
V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBBc3luYworICAgIFNl
dFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0aWZp
Y2F0ZSkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIHN1
Y2Nlc3MpIEFzeW5jCisgICAgU2V0U3RvcmFnZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5KQor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMx
Yzg2ZTZiNDYyZjkzZmNhNWVkN2E4Y2VjYTI2NGI1NTU2ZGE0ZWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+IFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiBwcm94eSwg
UmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBzZXNzaW9uUHJv
eHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+KG5ldyBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShXVEZNb3ZlKHByb3h5KSwgV1RGTW92ZShzZXNz
aW9uKSwgaWRlbnRpZmllcikpOworICAgIGF1dG8gY2xpZW50ID0gbWFrZVdlYWtQdHI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PihzZXNzaW9uUHJveHkuZ2V0KCkpOworICAgIHNl
c3Npb25Qcm94eS0+bV9zZXNzaW9uLT5zZXRDbGllbnQoV1RGTW92ZShjbGllbnQpKTsKKyAgICBy
ZXR1cm4gc2Vzc2lvblByb3h5OworfQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiBj
ZG0sIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9jZG0oV1RGTW92
ZShjZG0pKQorICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKK3sKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
On5SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIEF0
b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWluaXRE
YXRhLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCBlbXB0eVN0cmluZygpLCBm
YWxzZSwgZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50
IHRoZSBDRE1Qcml2YXRlOjpzdXBwb3J0c0luaXREYXRhKCkgY2hlY2sgaGVyZToKKyAgICBpZiAo
IW1fY2RtLT5zdXBwb3J0c0luaXREYXRhKGluaXREYXRhVHlwZSwgKmluaXREYXRhLmJ1ZmZlcigp
KSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
LCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8U2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6
YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShtZXNzYWdlKSwgc2Vzc2lvbklkLCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Ojp1cGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJiBjb21wbGV0aW9uKQoreworICAgIGlmICghcmVzcG9uc2UuYnVmZmVyKCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih0cnVlLCB7IH0sIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxz
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVBy
aXZhdGU6OnNhbml0aXplUmVzcG9uc2UoKSBjaGVjayBoZXJlOgorICAgIGF1dG8gc2FuaXRpemVk
UmVzcG9uc2UgPSBtX2NkbS0+c2FuaXRpemVSZXNwb25zZSgqcmVzcG9uc2UuYnVmZmVyKCkpOwor
ICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2UpIHsKKyAgICAgICAgY29tcGxldGlvbihmYWxzZSwg
eyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9zZXNzaW9uLT51cGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwg
c2FuaXRpemVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3Zl
KGNvbXBsZXRpb24pXSAoYm9vbCBzZXNzaW9uQ2xvc2VkLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBrZXlTdGF0dXNlcywgT3B0aW9uYWw8ZG91YmxlPiYm
IGV4cGlyYXRpb25UaW1lLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYg
bWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgY29tcGxldGlvbihzZXNzaW9uQ2xvc2VkLCBXVEZNb3ZlKGtleVN0YXR1
c2VzKSwgV1RGTW92ZShleHBpcmF0aW9uVGltZSksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5
cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2sm
JiBjb21wbGV0aW9uKQoreworICAgIC8vIEltcGxlbWVudCB0aGUgQ0RNUHJpdmF0ZTo6c2FuaXRp
emVTZXNzaW9uSWQoKSBjaGVjayBoZXJlOgorICAgIGF1dG8gc2FuaXRpemVkU2Vzc2lvbklkID0g
bV9jZG0tPnNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCk7CisgICAgaWYgKCFzYW5pdGl6ZWRT
ZXNzaW9uSWQpIHsKKyAgICAgICAgY29tcGxldGlvbihXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBmYWxzZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZh
aWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX3Nlc3Npb24tPmxvYWRTZXNzaW9uKHR5cGUsICpzYW5pdGl6ZWRTZXNzaW9uSWQsIG9y
aWdpbiwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoT3B0aW9uYWw8Q0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRv
dWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJs
ZSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhw
aXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZWVkZWQsIGZhaWx1cmUpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBtX3Nlc3Npb24t
PmNsb3NlU2Vzc2lvbihzZXNzaW9uSWQsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KV0gKCkgbXV0YWJsZSB7IGNvbXBsZXRpb24oKTsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY29tcGxl
dGlvbikKK3sKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlw
ZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CisgICAgICAgIGlm
IChleHBpcmVkU2Vzc2lvbnNEYXRhKQorICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVm
ZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFdURk1vdmUoKmV4cGlyZWRT
ZXNzaW9uc0RhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKGtleVN0YXR1c2VzKSwg
V1RGTW92ZShleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpCit7CisgICAgbV9zZXNzaW9uLT5zdG9yZVJlY29yZE9mS2V5VXNhZ2Uoc2Vzc2lv
bklkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5
U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMpCit7CisgICAgaWYgKCFtX2Nk
bSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGZhY3RvcnkgPSBtX2NkbS0+ZmFj
dG9yeSgpKQorICAgICAgICBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRl
S2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX2Nk
bSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGZhY3RvcnkgPSBtX2NkbS0+ZmFj
dG9yeSgpKQorICAgICAgICBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2VuZE1l
c3NhZ2UodHlwZSwgV1RGTW92ZShtZXNzYWdlKSksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKCFtX2NkbSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGF1dG8qIGZhY3RvcnkgPSBtX2NkbS0+ZmFjdG9yeSgpKQorICAgICAgICBmYWN0b3J5
LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpLCBt
X2lkZW50aWZpZXIpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hODE1MzU2NmY2NDJmYzY4YTM0NTY0ZTc0Njc0NTBmYjQ0OWRhOTQzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFj
ZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IGZpbmFsIDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25DbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETVByb3h5
PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmLCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eSgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5
UHJveHk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKKyAgICAvLyBUeXBlcworICAgIHVzaW5nIExpY2Vuc2VUeXBlID0gV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZTsKKyAgICB1c2luZyBLZXlTdGF0
dXNWZWN0b3IgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvcjsK
KyAgICB1c2luZyBNZXNzYWdlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
OworICAgIHVzaW5nIFNlc3Npb25Mb2FkRmFpbHVyZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sLCBib29sKT47CisgICAgdXNpbmcgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBPcHRpb25hbDxLZXlT
dGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2FnZT4mJiwg
Ym9vbCk+OworICAgIHVzaW5nIExvYWRTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgT3B0aW9uYWw8ZG91YmxlPiYmLCBP
cHRpb25hbDxNZXNzYWdlPiYmLCBib29sLCBTZXNzaW9uTG9hZEZhaWx1cmUpPjsKKyAgICB1c2lu
ZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CisgICAg
dXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
S2V5U3RhdHVzVmVjdG9yJiYsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4mJiwgYm9vbCk+OworICAgIHVzaW5nIFN0b3JlUmVjb3JkQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+OworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKTsKKyAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJik7
CisgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgU3RyaW5nIHNlc3Npb25JZCwgU3Ry
aW5nIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNsb3NlU2Vzc2lv
bihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJik7CisgICAg
dm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJik7CisgICAgdm9pZCBzdG9yZVJlY29yZE9m
S2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOworCisgICAgLy8gQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50CisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3Im
JikgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNl
c3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBXZWFrUHRyPFJlbW90
ZUNETVByb3h5PiBtX2NkbTsKKyAgICBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBt
X3Nlc3Npb247CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViOTMxOTZjMDk1ZTAzNGI2NDIxZjhlZTYzOGFl
MDllZmNlMjBlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFJlcXVlc3RMaWNlbnNlKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpbml0RGF0YSkgLT4gKElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBTdHJpbmcgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5k
aXZpZHVhbGl6YXRpb24sIGJvb2wgc3VjY2VlZGVkKSBBc3luYworICAgIFVwZGF0ZUxpY2Vuc2Uo
U3RyaW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlw
ZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgcmVzcG9uc2UpIC0+IChib29s
IHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiBjaGFuZ2VkRXhw
aXJhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBt
ZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBMb2FkU2Vzc2lvbihXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0
cmluZyBvcmlnaW4pIC0+IChPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGly
YXRpb24sIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVz
c2FnZSwgYm9vbCBzdWNjZWVkZWQsIGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBsb2FkRmFpbHVyZSkgQXN5bmMKKyAgICBDbG9zZVNl
c3Npb24oU3RyaW5nIHNlc3Npb25JZCkgLT4gKCkgQXN5bmMKKyAgICBSZW1vdmVTZXNzaW9uRGF0
YShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VU
eXBlIHR5cGUpIC0+IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBt
ZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBTdG9yZVJlY29yZE9mS2V5VXNhZ2Uo
U3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWFjOTJmZDA5N2Fm
MWNmOWI4ZmY4YmI0MGRiMWJlYTVlM2E4MGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApAQCAtMCwwICsxLDEwNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Q
cm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1Qcml2YXRlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiBSZW1vdGVDRE1Q
cm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmIHByaXYpCit7CisgICAgaWYgKCFw
cml2KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUNvbmZpZ3VyYXRp
b24sIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJj4oeworICAgICAgICBwcml2LT5zdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzKCksCisgICAgICAgIHByaXYtPnN1cHBvcnRlZFJvYnVzdG5lc3NlcygpLAor
ICAgICAgICBwcml2LT5zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpLAorICAgICAgICBwcml2
LT5zdXBwb3J0c1Nlc3Npb25zKCkKKyAgICB9KTsKKyAgICAvLyBVc2UgbmV3KCkgdG8gYWNjZXNz
IENETVByaXZhdGUncyBwcml2YXRlIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQ0RNUHJveHk+KG5ldyBSZW1vdGVDRE1Qcm94eShXVEZNb3ZlKGZhY3Rvcnkp
LCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNE
TVByb3h5OjpSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBm
YWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVt
b3RlQ0RNQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdU
Rk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3ByaXZhdGUoV1RGTW92ZShwcml2KSkKKyAgICAsIG1f
Y29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1vdGVDRE1Q
cm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZhdWx0OworCitib29sIFJlbW90ZUNETVByb3h5
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5
cGUsIGRhdGEpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQoreworICAgIHJldHVy
biBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOworfQorCitPcHRpb25hbDxT
dHJpbmc+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNz
aW9uSWQpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0
aW9uKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBX
ZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBXZWJDb3JlOjpD
RE1Qcml2YXRlOjpTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICBtX3ByaXZhdGUtPmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1
cmF0aW9uKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
UHJveHk6OmNyZWF0ZUluc3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYgY29t
cGxldGlvbikKK3sKKyAgICBhdXRvIHByaXZhdGVJbnN0YW5jZSA9IG1fcHJpdmF0ZS0+Y3JlYXRl
SW5zdGFuY2UoKTsKKyAgICBpZiAoIXByaXZhdGVJbnN0YW5jZSB8fCAhbV9mYWN0b3J5KSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGF1dG8gaW5zdGFuY2UgPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUobWFrZVdlYWtQ
dHIodGhpcyksIHByaXZhdGVJbnN0YW5jZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAg
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBpbnN0YW5jZS0+
Y29uZmlndXJhdGlvbigpOworICAgIG1fZmFjdG9yeS0+YWRkSW5zdGFuY2UoaWRlbnRpZmllciwg
V1RGTW92ZShpbnN0YW5jZSkpOworICAgIGNvbXBsZXRpb24oaWRlbnRpZmllciwgV1RGTW92ZShj
b25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFs
aXplKCkKK3sKKyAgICBtX3ByaXZhdGUtPmxvYWRBbmRJbml0aWFsaXplKCk7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJjOWQ1NThkZmZhMTUyYzBkZDVhMGMwYjJiNWE4MTczMmExZGI1YjEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2VudW0gY2xhc3MgQ0RNUmVxdWlyZW1l
bnQgOiB1aW50OF90OworZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CitzdHJ1
Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBDRE1SZXN0cmljdGlvbnM7Cit9
CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlUHJveHk7Citz
dHJ1Y3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOworc3RydWN0IFJlbW90ZUNETUNv
bmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUNETVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUNETVByb3h5PiB7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gY3JlYXRlKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
Q0RNUHJpdmF0ZT4mJik7CisgICAgflJlbW90ZUNETVByb3h5KCk7CisKKyAgICBjb25zdCBSZW1v
dGVDRE1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLmdldCgpOyB9CisKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkqIGZhY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KKworICAgIGJvb2wgc3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7
CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAgICBPcHRpb25hbDxTdHJpbmc+
IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJlbW90ZUNETVBy
b3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6Q0RNUHJpdmF0ZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+JiYp
OworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAg
IHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiYsIFdlYkNvcmU6OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcywgV2Vi
Q29yZTo6Q0RNUHJpdmF0ZTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOworICAg
IHZvaWQgY3JlYXRlSW5zdGFuY2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKT4mJik7Cisg
ICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJp
dmF0ZT4gbV9wcml2YXRlOworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiBt
X2NvbmZpZ3VyYXRpb247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5NTU1ODRlZGYxNzFhMTY1ZGM1M2YwZGFlNWYxYTM5NDhjNzU1ZjIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
bWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90
ZUNETVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIEdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
c3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlQ29uZmln
dXJhdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vz
cyBhY2Nlc3MpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
PiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pIEFzeW5jCisgICAgQ3JlYXRlSW5zdGFuY2UoKSAt
PiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5jaHJvbm91
cworICAgIExvYWRBbmRJbml0aWFsaXplKCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAK
aW5kZXggZmU4ODQ0YjQ0Mzg3ZmZiNThjMWQ1YzhmODViN2IyYjBmMmRjYjhjYS4uYTdlM2MzMTdk
ZTNmNjliZDAyMWFjZjVmMDRiMjk0NzZlNGQ0ZjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlTWVzc2FnZXMuaCIKQEAgLTQ3LDYgKzQ4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVBsYXllclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZh
Y3RvcnlQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKQEAgLTUyOSw5ICs1MzQsOSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRp
YVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYsIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGluaXREYXRhKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5
cGUsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbml0RGF0
YS0+ZGF0YSgpKSwgaW5pdERhdGEtPmJ5dGVMZW5ndGgoKSkpLCBtX2lkKTsKIH0KIAogdm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcldhaXRpbmdGb3JLZXlDaGFuZ2VkKCkK
QEAgLTcxMyw2ICs3MTgsMzQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjprZXlBZGRl
ZCgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlQXR0YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9
IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCku
Z2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVyLT5jZG1JbnN0YW5jZUF0
dGFjaGVkKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQorCit2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmNkbUluc3RhbmNlRGV0YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9IG1fbWFu
YWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCkuZ2V0SW5z
dGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVyLT5jZG1JbnN0YW5jZURldGFjaGVk
KGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9IG1f
bWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCkuZ2V0
SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVyLT5hdHRlbXB0VG9EZWNyeXB0
V2l0aEluc3RhbmNlKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQorI2VuZGlmCisKKwor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVy
S2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1fcGxheWVyLT5zZXRTaG91bGRDb250aW51
ZUFmdGVyS2V5TmVlZGVkKHNob3VsZCk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCiB7CiAgICAgbV9wbGF5ZXItPmJl
Z2luU2ltdWxhdGVkSERDUEVycm9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCBmNzhlYzA2ZWMwNDM5
ZmNhOTUwYTRiYzM1NjQyZTA0ZDljN2ZhMmZmLi5kOTRiZjIxOWIyN2Y2ZTlhOWJkOTE4YThkNGNm
NWExMjMyMzQ4YzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTQ2LDYgKzQ2LDExIEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9CkBAIC0xMzgsNiArMTQzLDE2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGtleUFkZGVkKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgdm9pZCBjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGNkbUluc3RhbmNlRGV0YWNoZWQoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJiYpOworICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7CisjZW5kaWYKKworI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZv
aWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyNlbmRpZgorCiAgICAg
dm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwogICAgIHZvaWQgZW5kU2ltdWxhdGVkSERD
UEVycm9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzUzOWJj
MWQ5Yzg0MTY4OTJhODc1OTYxZWQxZTRhOThjMTNiMjU3Ni4uNWNkY2M4MmM0MDFiOTdmZDVkN2E4
ZWM4ZGVkZTAwNDc3NDc0ODBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4K
QEAgLTc5LDkgKzc5LDE2IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90
UmVmQ291bnRlZCB7CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgIyBT
ZXRDRE1TZXNzaW9uCiAgICAgS2V5QWRkZWQoKQotICAgICMgQ2RtSW5zdGFuY2VBdHRhY2hlZAot
ICAgICMgQ2RtSW5zdGFuY2VEZXRhY2hlZAotICAgICMgQXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0
YW5jZQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIENkbUluc3Rh
bmNlQXR0YWNoZWQoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJ
ZCkKKyAgICBDZG1JbnN0YW5jZURldGFjaGVkKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyIGluc3RhbmNlSWQpCisgICAgQXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5jZUlkKQorI2VuZGlmCisKKyNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyAgICBTZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQogI2Vu
ZGlmCiAKICAgICBCZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA0N2I1ODc4MjdmMzE4ODFlNjMwNGU5NGZkNzlhZTk2
MzcwMTI1MGYwLi4yNWYwODkwZTcxNWUyZTdmYWI2ZTc2ODhmYTI4NjA3YzhhZjkwOWNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIzMiw2ICsyMzIsOSBA
QCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAn
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUlk
ZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIn
LAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
OlJUQ0RlY29kZXJJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDVhZGIzN2Q4YjViZGVmMDBhNTY2ZjRhMDJkYjY0YmI5
NWRhYjAwMjQuLjhiZjhkM2Q1NWVhNTU0NjU0N2JjMTM3ZTQyNjg0MGE0YTExZjgxN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzIx
Nyw0ICszMjE3LDU5IEBAIE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjCiAgICAgcmV0dXJuIGJ1ZmZl
cjsKIH0KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2Fn
ZSkKK3sKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CisKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBlbmNv
ZGVyIDw8IG1lc3NhZ2VEYXRhOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZVR5cGUgdHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAh
YnVmZmVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIG1ha2VP
cHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+KHsgdHlwZSwgYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkgfSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYga2V5U3RhdHVzZXMpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
a2V5U3RhdHVzZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGtleVN0YXR1cyA6IGtleVN0YXR1
c2VzKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleSA9IGtleVN0YXR1cy5maXJz
dC5jb3B5UmVmKCk7CisgICAgICAgIGVuY29kZXIgPDwga2V5IDw8IGtleVN0YXR1cy5zZWNvbmQ7
CisgICAgfQorfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3Rvcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3Rvcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHVpbnQ2NF90
IGRhdGFTaXplOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXM7CisgICAga2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShkYXRhU2l6ZSk7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0
YVNpemU7ICsraSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXk7CisgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoa2V5KSB8fCAha2V5KQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6
OktleVN0YXR1cyBzdGF0dXM7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdHVzKSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAga2V5U3RhdHVzZXMu
dW5jaGVja2VkQXBwZW5kKHsga2V5LnJlbGVhc2VOb25OdWxsKCksIHN0YXR1cyB9KTsKKyAgICB9
CisgICAgcmV0dXJuIGtleVN0YXR1c2VzOworfQorI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA4OTg2MzU4M2YzYmMxNjY5MDk3NDZkZjYxODI2NDdk
NjkyNTlhZWMzLi5kMDdmMmJmNWIyMWI2MjBiOTE5ODEwMTk5NDBlMjc0NGVkMjUwMGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTYsNiAr
NTYsMTEgQEAKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
QWRkaXRpb25zLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFu
Y2VTZXNzaW9uLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdU
RiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtODM2LDYgKzg0MSwxOCBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAg
ICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUo
RGVjb2RlciYpOwogfTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3I+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJik7CisgICAg
c3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMK
IAogbmFtZXNwYWNlIFdURiB7CkBAIC05ODQsNCArMTAwMSwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdURkxvZ0xldmVsPiB7CiAgICAgPjsKIH07CiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2Fk
RmFpbHVyZTo6Tm9uZSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246OlNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlLAorICAgIFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVk
LAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpP
dGhlcgorICAgID47Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXMgPAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzLAorICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpVbmtub3duLAorICAgIFdlYkNvcmU6OkNETUluc3Rh
bmNlOjpIRENQU3RhdHVzOjpWYWxpZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0
YXR1czo6T3V0cHV0UmVzdHJpY3RlZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0
YXR1czo6T3V0cHV0RG93bnNjYWxlZAorICAgID47Cit9OworCisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzMGQ1NWI0NWQ4MzNkZWMyM2Y3YTYwMGYyODNmYzkz
NTk4YWQ5YjA3Li4wNDhmNmE4ZjI3ODQxMDU2OGZlMzA3MGExOWRkYmRjMjNjM2ZlNGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKQEAgLTI2LDYgKzI2LDEwIEBAIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5jcHAKQEAgLTQwLDYgKzQ0LDcgQEAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAogCisKIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRy
aWJ1dGlvbk1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2Vy
LmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAt
NTM5LDYgKzU0NCwxMCBAQCBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUu
Y3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCitXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2Uu
Y3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11bmlm
eQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGM5
N2IxNTgzNjRhNzU2ZmEwMGJkOWMwYzA3NmFhZWQ3YmU1YjZjYS4uMzkzZDEwMWM3MjczNjZjOWFh
NTFjNDA1ZjZiMjIyMmU1ZTU3MmI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzA2LDYgKzE3MDYsNyBAQAogCQlDRDE5RDJFQTIw
NDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDE5RDJFODIwNDY0MDZGMDAx
NzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QyODY1RUUyMjU1NTYyMDAwNjA2QUM3
IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyODY1RUMyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NU
YXNrU3RhdGVPYnNlcnZlci5oICovOyB9OwogCQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyog
UHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNr
U3RhdGVPYnNlcnZlci5tbSAqLzsgfTsKKwkJQ0Q0NjYxODMyNDAxMEE2NzAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
Q0Q0OTFCMDgxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ5MUIwNjFFNzBE
MDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCAqLzsgfTsKIAkJQ0Q0OTFC
MEQxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NDkxQjBCMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCUNENDkxQjBFMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDQ5MUIwQzFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJNZXNzYWdlcy5oICovOyB9OwpAQCAtMTcyOCw2ICsxNzI5LDIwIEBACiAJCUNE
QTI5QTJCMUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
MjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmggKi87IH07CiAJCUNEQTkzREIwMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91
Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE5M0RBRTIyRjhCQ0YzMDA0OTBBNjkgLyogRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTkzREFGMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxs
c2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCAqLzsgfTsKKwkJQ0RBQzIwQjQy
M0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEIyMjNGQjU4RjIwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi87IH07CisJCUNEQUMyMEMzMjNGQzJGNzUw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEI2MjNGQzJGNzMwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwQzQyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCNzIzRkMyRjczMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2UuaCAqLzsgfTsKKwkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0
aW9uLmggKi87IH07CisJCUNEQUMyMEM3MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEJBMjNG
QzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLzsgfTsKKwkJQ0RBQzIwQzkyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEJDMjNGQzJGNzQwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi87IH07CisJCUNE
QUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEJEMjNGQzJG
NzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLzsgfTsKKwkJQ0RBQzIw
Q0QyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEMwMjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE1GYWN0b3J5LmggKi87IH07CisJCUNEQUMyMENFMjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKKwkJQ0RBQzIwQ0YyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVD
RE1JZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNEQUMyMEY4
MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMy
MEY1MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKKwkJQ0RBQzIwRjkyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEVDMjNGQzM4MzgwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJ
CUNEQUMyMEZBMjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFD
MjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwogCQlDREMyODMxRDIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tW
aWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMy
ODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi87IH07CiAJ
CUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVD
NzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9
OwogCQlDRTExQUQ1MjFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTFBRDUxMUNCQzQ4MkYwMDY4
MUVFNSAvKiBDb2RlU2lnbmluZy5oICovOyB9OwpAQCAtNDk4Nyw2ICs1MDAyLDEwIEBACiAJCUNE
MTlEMkU5MjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcDsgcGF0
aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1Rhc2tTdGF0ZU9i
c2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjg2NUVEMjI1NTU2MjAw
MDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE4MDI0MDEwNTY0MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNENDY2MTgyMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDQ5MUIwNTFF
NzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDQ5MUIwNjFFNzBEMDVGMDAwMDkwNjYgLyog
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q0OTFCMEExRTczMkQxMjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTAyOCw2ICs1MDQ3LDQzIEBACiAJCUNEQTI5QTI3
MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQlDREE5M0RBRTIyRjhCQ0YzMDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNo
ZXVyaXN0aWNQYXJhbWV0ZXJzLmg7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91
Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQTkzREFGMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQ
YXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpY1BhcmFtZXRlcnMuY3BwOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMDc4MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMDc5MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwN0MyM0ZCMUVGOTAwMjFERUUzIC8qIFJl
bW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
RmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjA4MjIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlQ0RNUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
ODMyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUNETVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwODYyM0ZCMjE1ODAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjBBRDIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFFMjNGQjU4MkIwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBBRjIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMTIzRkI1OEUyMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIzMjNGQjU4RjIwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNE
TUluc3RhbmNlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBC
NjIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCNzIzRkMyRjczMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQ0RNSW5zdGFuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
QjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCOTIzRkMyRjczMDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVDRE1GYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkEy
M0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
QkIyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBC
RTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJGMjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlQ0RNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzAyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBD
MjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEVCMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEVDMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVEMjNGQzM4MzgwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUUyM0ZDMzgzOTAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8q
IFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjAyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90
ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEYxMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMjIzRkMzODNBMDAyMURFRTMgLyogUmVt
b3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYzMjNGQzM4M0EwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGNDIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RN
UHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVD
RE1Qcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY1
MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3Rh
bmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjBGNjIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHBhdGggPSBpb3MvZnVsbHNj
cmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RDMjgzMUMyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5tbTsgcGF0aCA9IGlv
cy9mdWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0RDMzgyRjcxNzIxMTUwNjAwOEEyRkMzIC8qIENGTmV0d29yay5mcmFtZXdv
cmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFw
cGVyLmZyYW1ld29yazsgbmFtZSA9IENGTmV0d29yay5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxh
YnNvbHV0ZT4iOyB9OwpAQCAtNTMxMiw2ICs1MzY4LDIwIEBACiAJCQkJOUI1QkVDMjkyNDAxMDE1
ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAgKi8sCiAJCQkJOUI1
QkVDMjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oICov
LAogCQkJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQkYyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETS5jcHAgKi8sCisJCQkJQ0RBQzIwQkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNE
TS5oICovLAorCQkJCUNEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1
cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnkuY3BwICovLAorCQkJCUNEQUMyMEMwMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1G
YWN0b3J5LmggKi8sCisJCQkJQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlk
ZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBCQjIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2UuY3BwICovLAorCQkJCUNEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZS5oICovLAorCQkJCUNEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQlDREFDMjBCNjIzRkMyRjczMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkUyM0ZD
MkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RB
QzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovLAor
CQkJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
bWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLywKIAkJCQkwN0I5M0ZGNTIzQUYwQ0I4MDAz
NkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJMDc5MjMx
MzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgKi8sCiAJ
CQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5o
ICovLApAQCAtNTM0Miw2ICs1NDEyLDE4IEBACiAJCQkJOUIxMjI5Q0YyM0ZGMjgxNDAwOENBNzUx
IC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJCTA3
MUJDNTdFMjNDQTVEQjEwMDY4MEQ3QyAvKiBSZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwICovLAog
CQkJCTA3MUJDNTdGMjNDQTVEQjEwMDY4MEQ3QyAvKiBSZW1vdGVBdWRpb1RyYWNrUHJveHkuaCAq
LywKKwkJCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmNwcCAqLywKKwkJCQlDREFDMjA3ODIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmggKi8sCisJCQkJQ0RBQzIwN0MyM0ZCMUVGOTAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnlQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCMzIzRkI1OEYyMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwQjIyM0ZCNThGMjAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAqLywKKwkJCQlDREFDMjBCMTIzRkI1
OEUyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJ
CQlDREFDMjBBRjIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuY3BwICovLAorCQkJCUNEQUMyMEFFMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5oICovLAorCQkJCUNEQUMyMEFEMjNGQjU4MkIwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjA4
MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuY3BwICovLAorCQkJCUNEQUMyMDgy
MjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5oICovLAorCQkJCUNEQUMyMDg2MjNG
QjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzI1
RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3Bw
ICovLAogCQkJCTA3MjVFRkFDMjM5QUUzODUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oICovLAogCQkJCTA3MjVFRkFCMjM5QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTk3MjksNiArOTgxMSwy
MSBAQAogCQkJCTFBMDQzQjVDMTI0RDVFOUQwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlN
ZXNzYWdlcy5oICovLAogCQkJCTFBOEVGQTZFMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUE4RUZBNkYxMjUyQjg0MTAwRjcwNjdGIC8q
IFBsdWdpblByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMjIzRkMzODNBMDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFD
MjBGMzIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAq
LywKKwkJCQlDREFDMjBFRTIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5
TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQUMyMEVC
MjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaCAqLywK
KwkJCQlDREFDMjBGNjIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1l
c3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNENDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNENDY2MTgy
MjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oICov
LAorCQkJCUNENDY2MTgwMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJ
CUNEQUMyMEVEMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjEyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRUYy
M0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
KwkJCQlDREFDMjBGNDIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5o
ICovLAorCQkJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3Nh
Z2VzUmVwbGllcy5oICovLAogCQkJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRkYy
NEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VzLmggKi8sCiAJCQkJMDc5MjMxNDMyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMDYzNSw2ICsxMDczMiwx
NiBAQAogCQkJCTlCMTIyOUQyMjNGRjJCQ0MwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5Q0QyM0ZGMjVGMjAwOENB
NzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5QjVCRUMyQTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDNTIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0QyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMy
MENGMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDREFDMjBDNDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCBp
biBIZWFkZXJzICovLAorCQkJCUNEQUMyMENFMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEMzMjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUNEQUMyMEI0MjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDQTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDOTIzRkMyRjc1
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyog
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUIxNkFFQTE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMjMzNCw2ICsxMjQ0MSwxMSBAQAogCQkJCTJENTRDMzFCMjEyRjREQTYw
MDQ5QzE3NCAvKiBQcm9jZXNzTGF1bmNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QyODY1
RUYyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTlCMTIyOUNFMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGNzIzRkM3MjZDMDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQUMyMEY4MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNENDY2MTgzMjQw
MTBBNjcwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjkyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNEQUMyMEZBMjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAg
LyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkYy
NEEyRDE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREMxOEZCNDIxOEE2RTlFMDAy
NUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggZGZiOWI5YTkzOGI5ODVkMjgwYWNkZWRhMDQ4YmM1YTY2Zjc3ZTYxYi4uZjliOTcwMTgx
NzJkYTUyYjFjNzA1NDkzOTU5M2MyMTFkZmVkMDExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTMzLDYgKzMz
LDggQEAKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3MuaCIKICNpbmNsdWRlICJMaWJXZWJSVEND
b2RlY3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAtNDQsNiArNDYsMTAgQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uTWVzc2FnZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC03NSw2ICs4MSwxMyBAQCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyJiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6c2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorUmVtb3RlQ0RNRmFj
dG9yeSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmNkbUZhY3RvcnkoKQoreworICAgIHJldHVybiAq
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVDRE1GYWN0b3J5PigpOwor
fQorI2VuZGlmCisKIGJvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0xMDAsNiArMTEz
LDEyIEBAIGJvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVD
RE1GYWN0b3J5PigpLT5kaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICNlbmRpZgogICAgIHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggNmFjZGNiZjM5NTQ1MWI2YjRjOTU4ZWNjOTJiNTIwMTZiNjc3NzI4OS4uMmI1
NzJjMWJhY2JmYTZiNmIyNmYzNTYwYzI2MmE5YTQxYjBjNzVhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMzksNiAr
MzksOCBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xh
c3MgUmVtb3RlQ0RNRmFjdG9yeTsKKwogY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJs
aWMgUmVmQ291bnRlZDxHUFVQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xp
ZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEdQVVByb2Nlc3NDb25uZWN0aW9uPiBjcmVh
dGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAt
NTgsNiArNjAsMTAgQEAgcHVibGljOgogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXImIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBSZW1vdGVDRE1GYWN0b3J5JiBjZG1GYWN0b3J5KCk7
CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXgg
OGVmN2RlZWVhNzBlMjBhZThmYWE3Y2VjYmE2YmQzNzY5NjY2YjUwMi4uNmM0NzgzOTg3YWY1Njdk
MzNlNDgyMTVmMTFhZjhmNWMzODVmMDBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cApAQCAtNDksNiArNDksMTAgQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRl
ICJSZW1vdGVDRE1JbnN0YW5jZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGV4dGVybiBXVEZMb2dDaGFubmVsIExvZ01lZGlhOwpA
QCAtOTEwLDE5ICs5MTQsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFk
ZGVkKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJikKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3Rh
bmNlJiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1v
dGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFuY2VBdHRhY2hlZChkb3duY2Fz
dDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1J
bnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRh
Y2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBpZiAoaXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNkbUluc3RhbmNlRGV0
YWNoZWQoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkp
LCBtX2lkKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0Rl
Y3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmIGluc3RhbmNl
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNl
PihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpBdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKGRvd25jYXN0PFJl
bW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC05
MzAsNiArOTM3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9y
S2V5Q2hhbmdlZCgpCiAgICAgbV9wbGF5ZXItPndhaXRpbmdGb3JLZXlDaGFuZ2VkKCk7CiB9CiAK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50
ZXJlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlJiYgaW5p
dERhdGEpCit7CisgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
aW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpOworICAgIG1fcGxheWVyLT5pbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGFCdWZm
ZXIpKTsKK30KKwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXko
KSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC05MzcsNiArOTUwLDEzIEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkQ29u
dGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBjb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0U2hvdWxkQ29udGludWVBZnRl
cktleU5lZWRlZChzaG91bGQpLCBtX2lkKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24oKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXgg
ODU0YWFjNTY2YWJiMjAyMjdjZGE5MTU2MDE1YmYyNDg3YTc2M2RkZi4uMzdmM2U5NGVmMzgzNTZj
YmUzOGVmZWZkOGU1MzFhOWUxZjA5MzhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBA
IC0xMzcsNiArMTM3LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
ICAgICB2b2lkIHdhaXRpbmdGb3JLZXlDaGFuZ2VkKCk7CisgICAgdm9pZCBpbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBJUEM6OkRhdGFSZWZlcmVuY2UmJik7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC0zMTMsNiAr
MzE0LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgZmluYWw7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChib29sKSBmaW5hbDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGJv
b2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6VGV4dFRyYWNrUmVwcmVzZW50
YXRpb24qKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMu
aW4KaW5kZXggM2ZmY2YzNmVmZTI0YjNkMDg1MGVlYTI4NmUyY2U3MjhlNGEyZmMxYS4uNmFlMGRi
MzFmYWJlZTlhNDQ0ZDUyODNkZGJhMDhmYjMwYzYwOTg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTc1LDYgKzc1LDcgQEAgbWVzc2FnZXMgLT4g
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewogCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKICAgICBXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCisgICAgSW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJl
bmNlIGluaXREYXRhKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjOTFiNDBmM2I5Yzc1YjNjMTEwYjYzNmY2OGNhNTcwNWEyNWI1NDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETS5jcHAKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NETVJlc3RyaWN0aW9ucy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TT4gUmVtb3RlQ0RNOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3Rvcnks
IFJlbW90ZUNETUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmIGNvbmZp
Z3VyYXRpb24pCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+KG5ldyBS
ZW1vdGVDRE0oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJh
dGlvbikpKTsKK30KKworUmVtb3RlQ0RNOjpSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNQ29uZmln
dXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5
KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKKyAgICAsIG1fY29uZmlndXJhdGlv
bihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCit2b2lkIFJlbW90ZUNETTo6Z2V0U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbihDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJh
dGlvbiwgTG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkNh
bGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2Fs
bGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6R2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBhY2Nlc3MpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVu
dGlmaWVyKTsKK30KKworCitib29sIFJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBv
cnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbW90ZUNETTo6c3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwg
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbW90ZUNETTo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBp
bnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKCkuCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK0NETVJlcXVpcmVtZW50IFJlbW90ZUNETTo6ZGlzdGluY3Rp
dmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24sIGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBDRE1SZXF1aXJlbWVu
dDo6Tm90QWxsb3dlZDsKK30KKworQ0RNUmVxdWlyZW1lbnQgUmVtb3RlQ0RNOjpwZXJzaXN0ZW50
U3RhdGVSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7Cit9CisKK2Jvb2wgUmVtb3RlQ0RN
OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVmUHRyPENETUluc3RhbmNlPiBS
ZW1vdGVDRE06OmNyZWF0ZUluc3RhbmNlKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWQ7
CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAg
bV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkNyZWF0ZUluc3RhbmNlKCksIE1lc3NhZ2VzOjpSZW1v
dGVDRE1Qcm94eTo6Q3JlYXRlSW5zdGFuY2U6OlJlcGx5KGlkLCBjb25maWd1cmF0aW9uKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3RvcnkuZ2V0
KCkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVt
b3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0aWFsaXpl
KCksIG1faWRlbnRpZmllcik7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorewor
ICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCisgICAgcmV0dXJuIHJlc3BvbnNl
LmNvcHkoKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lv
bklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBjb25zdAoreworICAgIC8vIFRoaXMgY2hlY2sg
d2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Ojpsb2FkU2Vzc2lvbigpLgorICAgIHJldHVybiBzZXNzaW9uSWQ7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNmQ2ZjM2OTc5YjA0NTJjZjk2YTUyZDE4ZjZhZDBiN2YzMzQ4ZThmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
aApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJS
ZW1vdGVDRE1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETVBy
aXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUmVtb3RlQ0RNIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNETVByaXZhdGUg
eworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPiBjcmVhdGUo
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90
ZUNETUNvbmZpZ3VyYXRpb24mJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNKCkgPSBkZWZhdWx0
OworCitwcml2YXRlOgorICAgIFJlbW90ZUNETShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYs
IFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKTsKKworICAg
IHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTG9jYWxTdG9yYWdlQWNjZXNzLCBT
dXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJikgZmluYWw7CisKKyAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJp
Y3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBX
ZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRz
U2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlw
ZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVp
cmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25z
JikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25z
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOworICAg
IHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9y
dGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5z
dXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRl
ZFJvYnVzdG5lc3NlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBw
b3J0ZWRSb2J1c3RuZXNzZXM7IH0KKyAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRzU2VydmVyQ2Vy
dGlmaWNhdGVzOyB9CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRzU2Vzc2lvbnM7IH0KKworICAgIFdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNETUlkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOworICAgIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYyYzQ2
NGZkZmRjZDhjMzU3NTZiMGUzOGRhZDBmODkzOTA1ODg2NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5o
CkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGVudFR5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uIHsKKyAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICBWZWN0b3I8
QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgIGJvb2wgc3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXM7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zOworCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAg
ICAgICBlbmNvZGVyIDw8IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgZW5jb2RlciA8
PCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0
c1Nlc3Npb25zOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0
YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxBdG9tU3RyaW5nPj4gc3VwcG9y
dGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRJbml0RGF0YVR5
cGVzOworICAgICAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRhVHlwZXMpCisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxBdG9tU3RyaW5n
Pj4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZFJv
YnVzdG5lc3NlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0ZWRSb2J1c3RuZXNzZXMpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBv
cnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRzU2VydmVy
Q2VydGlmaWNhdGVzOworICAgICAgICBpZiAoIXN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29s
PiBzdXBwb3J0c1Nlc3Npb25zOworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRzU2Vzc2lvbnM7
CisgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9ucykKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBw
b3J0ZWRJbml0RGF0YVR5cGVzKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnN1cHBvcnRlZFJvYnVz
dG5lc3NlcyksCisgICAgICAgICAgICAqc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMsCisgICAg
ICAgICAgICAqc3VwcG9ydHNTZXNzaW9ucywKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGYy
ZDNkNWM2MTBhZjU0YWQxZDNlZjRmYTYxYzQ1OTY2NjUyOTdjMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE0uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlQ0RN
RmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeShXZWJQcm9jZXNzJiBwcm9jZXNzKQorICAgIDogbV9w
cm9jZXNzKHByb2Nlc3MpCit7Cit9CisKK1JlbW90ZUNETUZhY3Rvcnk6On5SZW1vdGVDRE1GYWN0
b3J5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OnJlZ2lzdGVyRmFjdG9y
eShWZWN0b3I8Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpCit7CisgICAgZmFjdG9yaWVzLmFwcGVu
ZCh0aGlzKTsKK30KKworY29uc3QgY2hhciogUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcGxlbWVudE5h
bWUoKQoreworICAgIHJldHVybiAiUmVtb3RlQ0RNRmFjdG9yeSI7Cit9CisKK0dQVVByb2Nlc3ND
b25uZWN0aW9uJiBSZW1vdGVDRE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbigpCit7Cisg
ICAgcmV0dXJuIG1fcHJvY2Vzcy5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworfQorCiti
b29sIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKQoreworICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7CisgICAgZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSwgTWVzc2FnZXM6OlJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW06OlJlcGx5KHN1cHBvcnRlZCksIHsgfSk7
CisgICAgcmV0dXJuIHN1cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+
IFJlbW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sK
KyAgICBSZW1vdGVDRE1JZGVudGlmaWVyIGlkOworICAgIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbjsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE0oa2V5U3lz
dGVtKSwgTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNOjpSZXBseShp
ZCwgY29uZmlndXJhdGlvbiksIHsgfSk7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIFJlbW90ZUNETTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBX
VEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
RmFjdG9yeTo6YWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlk
LCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJU
KCFtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1v
dmUoc2Vzc2lvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24o
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9z
ZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkp
KSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4OWVkMDYwMDFjNjYz
YmFmMTg1ZGI5MzE3NDk3ZTkyY2ZiZmMwNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApAQCAtMCwwICsxLDg1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1G
YWN0b3J5Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOworY2xhc3MgUmVtb3Rl
Q0RNOworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOworY2xhc3MgV2ViUHJvY2VzczsK
KworY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeSBmaW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6OkNE
TUZhY3RvcnkKKyAgICAsIHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudAorICAgICwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVDRE1GYWN0b3J5KFdlYlByb2Nl
c3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0b3J5KCk7CisKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKyAgICBXZWJQcm9jZXNzJiBwcm9jZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9jZXNzOyB9CisKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgcmVnaXN0ZXJGYWN0b3J5KFZlY3RvcjxX
ZWJDb3JlOjpDRE1GYWN0b3J5Kj4mKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVNlc3Npb25NZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCisgICAgdm9pZCBhZGRTZXNz
aW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIFJlZjxSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJv
b2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFw
PFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIFJlZjxSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24+PiBtX3Nlc3Npb25zOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4+IG1fY2RtczsKKyAgICBXZWJQcm9jZXNzJiBtX3By
b2Nlc3M7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWUz
YTM4MTljMTcwN2I1NThiM2ZkOWFhYTg4MTYzMTU4MzkyZmFkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3Rm
L09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3Rl
Q0RNSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3RlQ0RNSWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MWEwZTBiNTJkMmRi
NWIzNjZlOGFiNjY5NjhjNTYxNDYyZWRkOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtMCwwICsx
LDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1v
dGVDRE1JbnN0YW5jZS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWY8UmVtb3RlQ0RN
SW5zdGFuY2U+IFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlkLCBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZUNETUluc3RhbmNlKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUo
aWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlOjpS
ZW1vdGVDRE1JbnN0YW5jZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkK
KyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpp
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRp
c3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsK
KyAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgZGlzdGluY3RpdmVJZGVudGlmaWVycywgcGVy
c2lzdGVudFN0YXRlKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQor
eworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKEZhaWxlZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6U2V0U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuZ2V0KCkpLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBp
ZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjpTZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSksIG1faWRlbnRpZmllcik7
Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IFJlbW90ZUNETUluc3Rh
bmNlOjpjcmVhdGVTZXNzaW9uKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlk
OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkNyZWF0ZVNlc3Npb24oKSwg
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkNyZWF0ZVNlc3Npb246OlJlcGx5KGlk
KSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBhdXRvIHNlc3Npb24gPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmNyZWF0ZShtYWtl
V2Vha1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBXVEZNb3ZlKGlkKSk7CisgICAgbV9mYWN0b3J5LT5h
ZGRTZXNzaW9uKGlkLCBzZXNzaW9uLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIHNlc3Npb247Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1ZjQ5Yjk3MzlkMjQ3OWQ1
NTVkZjhmYjAyN2VkZmVjYTljMzQwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0
YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2Ug
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNSW5zdGFuY2UgeworcHVibGljOgorICAgIHZpcnR1
YWwgflJlbW90ZUNETUluc3RhbmNlKCkgPSBkZWZhdWx0OworICAgIHN0YXRpYyBSZWY8UmVtb3Rl
Q0RNSW5zdGFuY2U+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciYmLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik7
CisKKyAgICBjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVDRE1J
bnN0YW5jZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllciYmLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICBJbXBs
ZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
SW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxs
b3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5rZXlT
eXN0ZW07IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKCkgZmluYWw7CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9y
eTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9CisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0RNX0lOU1RBTkNFKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2UsIFdlYkNvcmU6OkNETUluc3RhbmNlOjpJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZSkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NTMyZDcyZTdjZTRiODUzZjJkM2I5MzQ1NWUxOTI4MWM0MTlmYTQzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uIHsKKyAgICBTdHJpbmcga2V5U3lzdGVtOworCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBrZXlTeXN0ZW07CisgICAgfQorCisgICAgdGVt
cGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICBPcHRpb25hbDxTdHJpbmc+IGtleVN5c3RlbTsKKyAgICAgICAgZGVjb2RlciA+PiBrZXlTeXN0
ZW07CisgICAgICAgIGlmICgha2V5U3lzdGVtKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUoKmtleVN5c3Rl
bSksCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmZmRlNjkx
YzNlODk1Yjg4NTllNjIwNWE3MWUxMTVmYTliNGZlMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUg
PHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNWNjYmUyMzk2ZjliMmY4NmM5YzZiMjZmMzNl
MWJhMjM1YjAxNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwxNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllciYmIGlkKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSkp
OworfQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllciYmIGlkKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkp
CisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAg
ICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNl
LCBGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZXF1ZXN0TGljZW5zZSh0eXBlLCBp
bml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGEpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldIChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBib29sIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbWVzc2FnZS5idWZmZXIoKSkgeworICAgICAg
ICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFs
c2UsIEZhaWxlZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2Fs
bGJhY2sobWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBzZXNzaW9uSWQsIG5lZWRz
SW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAg
fSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpVcGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwgV1RGTW92ZShy
ZXNwb25zZSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgc2Vzc2lvbldh
c0Nsb3NlZCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25h
bDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2Fn
ZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhzZXNzaW9uV2Fz
Q2xvc2VkLCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiks
IFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAg
fSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246Omxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAg
IGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OkxvYWRTZXNzaW9uKHR5cGUsIHNlc3Npb25JZCwgb3Jp
Z2luKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChPcHRpb25hbDxLZXlTdGF0dXNW
ZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgT3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCwgU2Vzc2lvbkxv
YWRGYWlsdXJlIGxvYWRGYWlsdXJlKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92
ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBXVEZNb3ZlKG1lc3Nh
Z2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQsIGxvYWRGYWlsdXJlKTsKKyAgICB9
LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYm
IGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OkNsb3NlU2Vzc2lvbihzZXNzaW9uSWQpLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKCk7
CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9LCBXVEY6Om51bGxvcHQsIEZhaWxl
ZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwg
dHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5U3RhdHVzVmVjdG9yJiYg
Y2hhbmdlZEtleXMsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mJiBt
ZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgaWYgKG1l
c3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQorICAgICAgICAgICAgcmVhbE1lc3Nh
Z2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAg
Y2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNj
ZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlN0b3JlUmVj
b3JkT2ZLZXlVc2FnZShzZXNzaW9uSWQpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYg
a2V5U3RhdHVzZXMpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dXBk
YXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6c2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUgdHlw
ZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSkKK3sKKyAgICBpZiAo
bV9jbGllbnQgJiYgbWVzc2FnZS5idWZmZXIoKSkKKyAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNz
YWdlKHR5cGUsIG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNlc3Np
b25JZENoYW5nZWQoc2Vzc2lvbklkKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmZmVjMDljNDlhZTI0MjE1MGNiMjRhY2EwOTUxZmVlOGY0
OGY1NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKwor
bmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIGZpbmFs
IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXImJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVD
RE1GYWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJik7CisKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcwor
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpOworICAgIHZvaWQg
c2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJik7
CisKKworICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsg
fQorICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQor
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBjbG9zZVNlc3Np
b24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBmaW5hbDsKKwor
ICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YzIzOTJlN2VmODYyMDQ2MjFkMjg0MTQzOGI1ZWRmNGQz
ODE1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBA
CisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24gTm90UmVmQ291bnRlZCB7CisgICAgVXBkYXRlS2V5U3RhdHVzZXMo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMp
CisgICAgU2VuZE1lc3NhZ2UoZW51bTp1aW50OF90IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5
cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlKQorICAgIFNlc3Npb25J
ZENoYW5nZWQoU3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklk
ZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NmFjZDEyNjVhZjBjODQ2
Mzg4ZTIzZjljY2ExNmQ5MDIzMzhmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIu
aApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2Vi
TWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dl
Yk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IDJhYWU1ZTU0NDUxMDg0NzliZDNjZDMzOWFmYTZiZjZk
MmRkYWJjZjYuLjVkN2E4YjhkMTEyNGIyYTUyOGFkNzNiZGM5NmQ5YTk3ODBkYzIwNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVn
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0
cmF0ZWd5LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9J
T0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CkBAIC01MSw3ICs1
MywxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gV2ViTWVk
aWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiB2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyQ0RNRmFjdG9yaWVzKFZlY3RvcjxX
ZWJDb3JlOjpDRE1GYWN0b3J5Kj4mIGZhY3RvcmllcykKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY2RtRmFj
dG9yeSgpLnJlZ2lzdGVyRmFjdG9yeShmYWN0b3JpZXMpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCisgICAgV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3Rv
cmllcyhmYWN0b3JpZXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4NDliOWE3YmNi
MzA0ODI0OTBkYjgyOTI0NTU0MDFiYzFlZGExNjA4Li5mNjg5M2FmMGI0YjQzMjcxODRmZGU1NjRl
MjYwMDcwZmFjNzNlNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKIAorI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTI0ODUz
MmJhYTcwOWVmMGU5ZTRhZmQyNjBhYjcyZTJiOTY5OTEwMi4uOGY0Zjg4MGJhYmQ3ZDY1YTBjZDU4
ZDA0MmY4Y2RlYjk2YjU1YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTMyMiw2ICszMjIsOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlmCiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggM2U1YTE2ZDE3MDE1MzczNDE0YWFhYTZlZmIxZGI4NjVlZWZiNzE0ZC4u
OGNmZGExZjMxMGU1YWUwZTkzZmE4YzEwOTRiNzU2MTdlNmM5YjlmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTc0LDYgKzE3NCwxMCBAQAogI2luY2x1ZGUg
IkxpYldlYlJUQ0NvZGVjcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVB
U0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkg
OiAwKQogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0g
W3Nlc3Npb25JRD0lIiBQUkl1NjQgIl0gV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0Vf
TE9HX1NFU1NJT05fSUQsICMjX19WQV9BUkdTX18pCiAKQEAgLTI0MCw2ICsyNDQsMTAgQEAgV2Vi
UHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI+KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKyAgICBhZGRTdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCk7
CisjZW5kaWYKKwogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2Fn
ZSgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392066</attachid>
            <date>2020-02-29 09:58:11 -0800</date>
            <delta_ts>2020-03-02 07:23:06 -0800</delta_ts>
            <desc>Part 3: RemoteCDM</desc>
            <filename>bug-208090-20200229095810.patch</filename>
            <type>text/plain</type>
            <size>166775</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYwYjBjZDQwMTQ5ODM2
YzllMjU3OTYxODlhNTcwOWQxNzQxNmNhOC4uYzU0MDM4ZDUwYjA5MWFkMmY5MmVlMDc1OGRmYzIw
YmY0ZmM2NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBBZGQgZXhwb3J0IG1h
Y3JvcyB0byBDRE1GYWN0b3J5OjpyZWdpc3RlcmVkRmFjdG9yaWVzKCkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5Lmg6CisKIDIwMjAtMDItMjkgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtGbG9hdHNdIEZsb2F0
aW5nU3RhdGU6OnRvcCBzaG91bGQgcmV0dXJuIHRvcG1vc3QgbG9naWNhbCB2ZXJ0aWNhbCBwb3Np
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAzNzRjNGMyNzdhNmI5NDg4ZTJhNTA0ZTYzNjMxMzZiYjUzOTE2NTE3
Li40OGJkYmY0OWIyNTZlYmY1M2YwOWI1M2E2ZmIyYmZmYWQ1YjVkMjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3MCBAQAorMjAyMC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUg
UHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA4MDkwCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJlbW90ZUNETUZhY3RvcnksIFJlbWF0
ZUNETSwgUmVtb3RlQ0RNSW5zdGFuY2UsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiwgYW5kIGFs
bAorICAgICAgICBvZiB0aGVpciBhc3NvY2lhdGVkIFByb3h5IG9iamVjdHMuCisKKyAgICAgICAg
QWxsb3cgdGhlIGV4aXN0aW5nIENETUZhY3RvcnkgbWFjaGluZXJ5IHRvIHdvcmsgbm9ybWFsbHkg
YnkgZXhwbGljaXRseSBjbGVhcmluZyBvdXQgYWxsIHRoZSBleGlzdGluZyAKKyAgICAgICAgd2hl
biB0aGUgR1BVIHByb2Nlc3MgaXMgZW5hYmxlZCwgYW5kIHJlc2V0dGluZyB0aG9zZSBmYWN0b3Jp
ZXMgdG8gZGVmYXVsdCB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBkaXNhYmxlZC4KKworICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjZG1GYWN0b3J5UHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZl
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0
b3J5UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjpSZW1vdGVDRE1GYWN0b3J5UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpmYWN0b3J5Rm9y
S2V5U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpjcmVh
dGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRz
S2V5U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlQ0RNTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94
eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RN
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVj
ZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlSW5zdGFuY2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmdldEluc3RhbmNlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVTZXNzaW9uKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlJlbW90ZUNETUluc3Rh
bmNlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojppbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OnNldFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNvbmZpZ3VyYXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjppbnN0YW5jZSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluOiBB
ZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6flJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnN0b3JlUmVjb3Jk
T2ZLZXlVc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg6IEFkZGVkLgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVz
c2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJv
eHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1Qcm94eTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNUHJveHk6OmNvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1Qcm94eTo6ZmFjdG9yeSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1Qcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlQXR0
YWNoZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0
YW5jZURldGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE06OlJlbW90ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Z2V0U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9y
dHNDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBw
b3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJl
bWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRl
UmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmRpc3RpbmN0
aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TTo6c2FuaXRpemVTZXNzaW9uSWQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1Db25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1Db25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
RmFjdG9yeTo6UmVtb3RlQ0RNRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZh
Y3Rvcnk6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFj
dG9yeTo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5
OjpncHVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9y
eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6YWRkU2Vz
c2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1l
c3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3Rvcnku
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRp
Zmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OlJlbW90ZUNETUlu
c3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2U6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OmNsb3NlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVz
ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlbmRNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZXNzaW9u
SWRDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisKIDIwMjAtMDItMjggIFBlbmcgTGl1ICA8cGVuZy5s
aXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEltcGxlbWVu
dCB0aGUgdmlkZW8gZnVsbHNjcmVlbiBhbmQgUGljdHVyZS1pbi1QaWN0dXJlIHN1cHBvcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3Rvcnku
aAppbmRleCA1MjVjODRlY2JlNzkxZjQwYjU0N2ZiN2ZhZmRlOWQwM2JhODEwYmFlLi5mYjM1MGQ0
ODU1YTFhYjMzYjFiNmQxYzRkY2U3M2E3ZTcyNmE2NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCkBAIC00Miw3ICs0Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBjcmVh
dGVDRE0oY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICBzdGF0aWMgVmVjdG9yPENETUZhY3Rvcnkq
PiYgcmVnaXN0ZXJlZEZhY3RvcmllcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0
b3I8Q0RNRmFjdG9yeSo+JiByZWdpc3RlcmVkRmFjdG9yaWVzKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJGYWN0b3J5KENETUZhY3RvcnkmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyRmFjdG9yeShDRE1GYWN0b3J5Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA4NmYw
MWIzOWEwNDcyOGMyYzBiZmY2N2U1YmQzOTNmMDkxYjc3ZjlkLi45Zjk0NmY4NDk3YWYyM2I0YWZh
NTFiNzkxODQxODUxODg2MGFjNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xOCw2ICsxOCwxMCBAQCAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTEyLDYg
KzExNiw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CmluZGV4IDY0NjRkODM4OWZiNTNmNTI3NTA3MDUzOWM5ODEwZmIyZDhjY2IzMTku
LmE5NmMyY2ZkZGQ0NmIzNTkyMzhlOTYyMzQzYTk5MjIxMDRlZWE1OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTM3LDYgKzEzNywy
MSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3Rh
bmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlN
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCA0MzZlNGI0MjI0Y2IwNDVjOWVhYjNhNmM3MDU0MzBiZDUyNTMzMzM0
Li40NWVlM2RiN2VkN2UxMzM3MmM4YTc1YWQ1NTVhMTY1ODdmNjdkMDhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0xNTEsNiArMTUxLDExIEBAIE1FU1NBR0VfUkVDRUlWRVJTID0g
XAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCiAgICAg
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgXAogICAgIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkgXAorICAgIFJlbW90ZUNETVByb3h5IFwKKyAgICBSZW1vdGVDRE1G
YWN0b3J5UHJveHkgXAorICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkgXAorICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbiBcCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgXAog
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IDZhMmM4NzBmN2FhYTFiMGRiMDAwZWY4ODgyN2M5YTBmNjFkY2YyNWIuLjZjZjFjMzBiM2UzMzAx
Mjc3NDY2ZDkyZWUyOTMzMjQ2MDdlNTljYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTYwLDEwICs2MCwx
OCBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVy
cm9ycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgor
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE5
OSw2ICsyMDcsMTYgQEAgTGliV2ViUlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmxpYldlYlJUQ0NvZGVjc1Byb3h5KCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKK1JlbW90ZUNETUZhY3RvcnlQcm94eSYgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y2RtRmFjdG9yeVByb3h5KCkKK3sKKyAgICBpZiAoIW1fY2RtRmFjdG9yeVByb3h5
KQorICAgICAgICBtX2NkbUZhY3RvcnlQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlQ0RNRmFjdG9y
eVByb3h5PigqdGhpcyk7CisKKyAgICByZXR1cm4gKm1fY2RtRmFjdG9yeVByb3h5OworfQorI2Vu
ZGlmCisKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFj
a2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cikKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
TWFwLmVuc3VyZShyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgWyZdKCkgewpAQCAtMjY5LDYg
KzI4NywyOCBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCku
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1NZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUlu
c3RhbmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5
UHJveHkoKS5kaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlk
UmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIG1lc3NhZ2VS
ZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIApA
QCAtMjk0LDYgKzMzNCwyOCBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3Bh
dGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgIH0KICNlbmRp
ZgogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5
RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZl
U3luY0NETU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1J
bnN0YW5jZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVT
eW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVu
Y29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKQEAgLTMwMiw3ICszNjQsNyBAQCBjb25zdCBTdHJp
bmcmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25z
dAogICAgIHJldHVybiBtX2dwdVByb2Nlc3MtPm1lZGlhQ2FjaGVEaXJlY3RvcnkobV9zZXNzaW9u
SUQpOwogfQogCi0jaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiBjb25z
dCBTdHJpbmcmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdAogewogICAgIHJldHVybiBtX2dwdVByb2Nlc3MtPm1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkobV9zZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNzQ3MTVjODBjNTQ1YmVhZmVj
M2Y2YjdlMDk4NGVjYTUwY2JhMjY2OS4uYTNlY2E1YzhmYWQ2OTE4MzgwZmQ5MzNiZjYzMGRkNGNm
ZjczMGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIEdQVVByb2Nlc3M7CiBj
bGFzcyBMaWJXZWJSVENDb2RlY3NQcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOwogY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
OworY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIGNsYXNzIFJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwpAQCAtODUsNiArODYsMTAgQEAgcHVibGljOgogCiAg
ICAgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBzZXNzaW9uTWFuYWdlcigp
OwogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJv
eHkmIGNkbUZhY3RvcnlQcm94eSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwogCkBAIC0xMzgs
NiArMTQzLDEwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5TWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4+OwogICAgIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eU1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcDsKKwor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWI0YWZkNGI0MzY3Nzdk
MWM0ZDEzZjg3MGI0NGRkMmIzNjk4MTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKQEAgLTAsMCArMSwx
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1Db25maWd1cmF0aW9uLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90
ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
Y29ubmVjdGlvbikKK3sKK30KKworUmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojp+UmVtb3RlQ0RNRmFj
dG9yeVByb3h5KCkgPSBkZWZhdWx0OworCitzdGF0aWMgQ0RNRmFjdG9yeSogZmFjdG9yeUZvcktl
eVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBhdXRvJiBmYWN0b3JpZXMg
PSBDRE1GYWN0b3J5OjpyZWdpc3RlcmVkRmFjdG9yaWVzKCk7CisgICAgYXV0byBmb3VuZEluZGV4
ID0gZmFjdG9yaWVzLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIGZhY3RvcnkpIHsgcmV0dXJuIGZh
Y3RvcnktPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSk7IH0pOworICAgIGlmIChmb3VuZElu
ZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZmFj
dG9yaWVzW2ZvdW5kSW5kZXhdOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Y3Jl
YXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
bW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0
aW9uKQoreworICAgIGF1dG8gZmFjdG9yeSA9IGZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVt
KTsKKyAgICBpZiAoIWZhY3RvcnkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHByaXZhdGVDRE0gPSBmYWN0b3J5LT5j
cmVhdGVDRE0oa2V5U3lzdGVtKTsKKyAgICBpZiAoIXByaXZhdGVDRE0pIHsKKyAgICAgICAgY29t
cGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHBy
b3h5ID0gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92ZShw
cml2YXRlQ0RNKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlQ0RNSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKTsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBw
cm94eS0+Y29uZmlndXJhdGlvbigpOworICAgIGFkZFByb3h5KGlkZW50aWZpZXIsIFdURk1vdmUo
cHJveHkpKTsKKyAgICBjb21wbGV0aW9uKFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6c3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKGZhY3RvcnlGb3JLZXlTeXN0
ZW0oa2V5U3lzdGVtKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNl
aXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNSW5z
dGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IG1faW5zdGFuY2VzLmdldChtYWtl
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlPihkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpbnN0YW5jZS0+ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojpk
aWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBz
ZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9w
cm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT4o
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBt
X2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgaW5zdGFuY2Ut
PmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlv
bklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6
YWRkUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TVByb3h5PiYmIHByb3h5KQoreworICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9wcm94aWVzLnNldChpZCwgV1RGTW92ZShwcm94eSkpOworfQorCit2b2lkIFJlbW90
ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllciBpZCkKK3sK
KyAgICBBU1NFUlQobV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92
ZShpZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZShSZW1v
dGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0
YW5jZVByb3h5PiYmIGluc3RhbmNlKQoreworICAgIEFTU0VSVCghbV9pbnN0YW5jZXMuY29udGFp
bnMoaWQpKTsKKyAgICBtX2luc3RhbmNlcy5zZXQoaWQsIFdURk1vdmUoaW5zdGFuY2UpKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNlKFJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9pbnN0YW5jZXMuY29udGFpbnMo
aWQpKTsKKyAgICBtX2luc3RhbmNlcy5yZW1vdmUoaWQpOworfQorCitSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5KiBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciYgaWQpCit7CisgICAgcmV0dXJuIG1faW5zdGFuY2VzLmdldChp
ZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRTZXNzaW9uKFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9zZXNzaW9u
cy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNlc3Npb24p
KTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24oUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9zZXNzaW9u
cy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1GYWN0b3J5UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWIxY2NjOTViYmQzZmUzYjlmMzM1MmQ4NTAw
Mjc3YTRiZmQzOTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlUHJveHk7Citj
bGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTsKK2NsYXNzIFJlbW90ZUNETVByb3h5
Oworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUNETUZhY3Rv
cnlQcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnlQcm94eSgpOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VG
cm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VTZXNzaW9uTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0
YW5jZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworCisgICAgdm9pZCBhZGRQcm94eShSZW1vdGVDRE1JZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYpOworICAgIHZvaWQgcmVt
b3ZlUHJveHkoUmVtb3RlQ0RNSWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZEluc3RhbmNlKFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3Rh
bmNlUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyKTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBnZXRJbnN0YW5jZShjb25z
dCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisK
KyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbiYmKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisK
KyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNUHJveHk+PiBtX3Byb3hpZXM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5Pj4gbV9pbnN0
YW5jZXM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25z
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA0N2M1ZTZlNjFjNDIwNzgzMWRhMGJkMTE4YTZhYWViNDBkMzMxMzYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAt
PiBSZW1vdGVDRE1GYWN0b3J5UHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlQ0RNKFN0
cmluZyBrZXlTeXN0ZW0pIC0+IChXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXIgaWQsIHN0cnVj
dCBXZWJLaXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25v
dXMKKyAgICBTdXBwb3J0c0tleVN5c3RlbShTdHJpbmcga2V5U3lzdGVtKSAtPiAoYm9vbCByZXN1
bHQpIFN5bmNocm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJlMjQ4ZmRmYzgyZDk0YWU2ZTBlZDE3NWIzNTFjMWIyNmI1NWEzMTMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1J
bnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNl
UHJveHk+IFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETVBy
b3h5PiYmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYpCit7CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJj4oewor
ICAgICAgICBwcml2LT5rZXlTeXN0ZW0oKSwKKyAgICB9KTsKKyAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+KG5ldyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
KFdURk1vdmUoY2RtKSwgV1RGTW92ZShwcml2KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOwor
fQorCitSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQ
dHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdiwgVW5pcXVl
UmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAg
IDogbV9jZG0oV1RGTW92ZShjZG0pKQorICAgICwgbV9pbnN0YW5jZShXVEZNb3ZlKHByaXYpKQor
ICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK1Jl
bW90ZUNETUluc3RhbmNlUHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVByb3h5KCkgPSBkZWZhdWx0
OworCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCit7CisgICAgbV9pbnN0
YW5jZS0+aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVycywgYWxsb3dQZXJzaXN0ZW50U3RhdGUsIFdURk1vdmUoY29tcGxl
dGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnNldFNlcnZlckNlcnRp
ZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGNlcnRpZmljYXRlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN1Y2Nlc3NWYWx1ZSk+JiYgY29tcGxldGlvbikKK3sKKyAgICBp
ZiAoIWNlcnRpZmljYXRlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24oQ0RNSW5zdGFu
Y2U6OkZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2luc3RhbmNlLT5z
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
LCBXVEZNb3ZlKGNvbXBsZXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
OjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQoreworICAgIG1f
aW5zdGFuY2UtPnNldFN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KTsKK30KKwordm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGVTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYpPiYmIGNvbXBsZXRpb24p
Cit7CisgICAgYXV0byBwcml2U2Vzc2lvbiA9IG1faW5zdGFuY2UtPmNyZWF0ZVNlc3Npb24oKTsK
KyAgICBpZiAoIXByaXZTZXNzaW9uIHx8ICFtX2NkbSB8fCAhbV9jZG0tPmZhY3RvcnkoKSkgewor
ICAgICAgICBjb21wbGV0aW9uKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0
byBpZGVudGlmaWVyID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsKKyAgICBhdXRvIHNlc3Npb24gPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
Y3JlYXRlKG1ha2VXZWFrUHRyKG1fY2RtLmdldCgpKSwgcHJpdlNlc3Npb24ucmVsZWFzZU5vbk51
bGwoKSwgaWRlbnRpZmllcik7CisgICAgbV9jZG0tPmZhY3RvcnkoKS0+YWRkU2Vzc2lvbihpZGVu
dGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24pKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTcxMTJkNWY4NGI4ODQ3
MzE5ZGM0MDRmZWExNTA2YzhiMWVmMzBlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTAsMCArMSw4
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RN
SW5zdGFuY2UuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDRE1JbnN0YW5jZTsKK3N0cnVjdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1
Y3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOworY2xhc3MgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlUHJveHkgOiBwcml2YXRl
IElQQzo6TWVzc2FnZVJlY2VpdmVyICB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94
eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmKTsKKyAgICB+UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOyB9Cisg
ICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2UmIGluc3RhbmNlKCkgeyByZXR1cm4gbV9pbnN0YW5jZTsg
fQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7Cisg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24+JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICB1c2lu
ZyBTdWNjZXNzVmFsdWUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlOworICAg
IHVzaW5nIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyA9IFdlYkNvcmU6OkNETUluc3RhbmNl
OjpBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnM7CisgICAgdXNpbmcgQWxsb3dQZXJzaXN0ZW50
U3RhdGUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxsb3dQZXJzaXN0ZW50U3RhdGU7CisKKyAg
ICAvLyBNZXNzYWdlcworICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1
Y2Nlc3NWYWx1ZSk+JiYpOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3VjY2Vzc1Zh
bHVlKT4mJik7CisgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgY3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJik7CisKKyAgICBXZWFrUHRyPFJlbW90
ZUNETVByb3h5PiBtX2NkbTsKKyAgICBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IG1faW5zdGFu
Y2U7CisgICAgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4gbV9jb25m
aWd1cmF0aW9uOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
ciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNz
aW9uczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmlu
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU1MGU4NTM0MWMyZWIzNWJiNmVjMDgwOTVkNWEwMDRlY2NhMTM5ZjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVz
c2FnZXMgLT4gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVh
dGVTZXNzaW9uKCkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
ciBpZCkgU3luY2hyb25vdXMKKyAgICBJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oc3RydWN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgZW51bTpi
b29sIFdlYkNvcmU6OkNETUluc3RhbmNlOjpBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgZGlz
dGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5j
ZTo6QWxsb3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCkgLT4gKGVudW06
Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIEFzeW5jCisg
ICAgU2V0U2VydmVyQ2VydGlmaWNhdGUoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGNl
cnRpZmljYXRlKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OkNETUluc3RhbmNlOjpTdWNjZXNzVmFs
dWUgc3VjY2VzcykgQXN5bmMKKyAgICBTZXRTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyBkaXJlY3Rv
cnkpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzFjODZlNmI0NjJmOTNmY2E1ZWQ3YThjZWNhMjY0YjU1NTZkYTRlYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4gUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmIHBy
b3h5LCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHNlc3Np
b25Qcm94eSA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4o
bmV3IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdURk1vdmUocHJveHkpLCBXVEZNb3Zl
KHNlc3Npb24pLCBpZGVudGlmaWVyKSk7CisgICAgYXV0byBjbGllbnQgPSBtYWtlV2Vha1B0cjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+KHNlc3Npb25Qcm94eS5nZXQoKSk7Cisg
ICAgc2Vzc2lvblByb3h5LT5tX3Nlc3Npb24tPnNldENsaWVudChXVEZNb3ZlKGNsaWVudCkpOwor
ICAgIHJldHVybiBzZXNzaW9uUHJveHk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5
PiYmIGNkbSwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2NkbShX
VEZNb3ZlKGNkbSkpCisgICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6flJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KCkKK3sKK30KKwordm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlw
ZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIGlmICgh
aW5pdERhdGEuYnVmZmVyKCkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5n
KCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJbXBs
ZW1lbnQgdGhlIENETVByaXZhdGU6OnN1cHBvcnRzSW5pdERhdGEoKSBjaGVjayBoZXJlOgorICAg
IGlmICghbV9jZG0tPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCAqaW5pdERhdGEuYnVm
ZmVyKCkpKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCBlbXB0eVN0cmluZygpLCBmYWxzZSwg
ZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9uLT5yZXF1ZXN0
TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25O
dWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlk
dWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBzZXNzaW9uSWQs
IG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246
OlN1Y2NlZWRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OnVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFyZXNwb25zZS5idWZmZXIoKSkgewor
ICAgICAgICBjb21wbGV0aW9uKHRydWUsIHsgfSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQs
IGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUg
Q0RNUHJpdmF0ZTo6c2FuaXRpemVSZXNwb25zZSgpIGNoZWNrIGhlcmU6CisgICAgYXV0byBzYW5p
dGl6ZWRSZXNwb25zZSA9IG1fY2RtLT5zYW5pdGl6ZVJlc3BvbnNlKCpyZXNwb25zZS5idWZmZXIo
KSk7CisgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSkgeworICAgICAgICBjb21wbGV0aW9uKGZh
bHNlLCB7IH0sIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0
eXBlLCBzYW5pdGl6ZWRSZXNwb25zZS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdU
Rk1vdmUoY29tcGxldGlvbildIChib29sIHNlc3Npb25DbG9zZWQsIE9wdGlvbmFsPENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3Vi
bGU+JiYgZXhwaXJhdGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uKHNlc3Npb25DbG9zZWQsIFdURk1vdmUoa2V5
U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwgV1RGTW92ZShtZXNzYWdlKSwgc3Vj
Y2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Npb24oTGljZW5zZVR5
cGUgdHlwZSwgU3RyaW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxs
YmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRlOjpz
YW5pdGl6ZVNlc3Npb25JZCgpIGNoZWNrIGhlcmU6CisgICAgYXV0byBzYW5pdGl6ZWRTZXNzaW9u
SWQgPSBtX2NkbS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKKyAgICBpZiAoIXNhbml0
aXplZFNlc3Npb25JZCkgeworICAgICAgICBjb21wbGV0aW9uKFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlLCBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fc2Vzc2lvbi0+bG9hZFNlc3Npb24odHlwZSwgKnNhbml0aXplZFNlc3Npb25J
ZCwgb3JpZ2luLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChPcHRpb25hbDxD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBrZXlTdGF0dXNlcywgT3B0aW9u
YWw8ZG91YmxlPiYmIGV4cGlyYXRpb25UaW1lLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246
Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkLCBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBmYWlsdXJlKSBt
dXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKGtleVN0YXR1c2VzKSwgV1RGTW92
ZShleHBpcmF0aW9uVGltZSksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA9PSBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2NlZWRlZCwgZmFpbHVyZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIG1fc2Vz
c2lvbi0+Y2xvc2VTZXNzaW9uKHNlc3Npb25JZCwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBs
ZXRpb24pXSAoKSBtdXRhYmxlIHsgY29tcGxldGlvbigpOyB9KTsKK30KKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBj
b21wbGV0aW9uKQoreworICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklk
LCB0eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxSZWY8U2hhcmVk
QnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBPcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKKyAgICAg
ICAgaWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEpCisgICAgICAgICAgICBleHBpcmVkU2Vzc2lvbkRh
dGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoV1RGTW92ZSgqZXhw
aXJlZFNlc3Npb25zRGF0YSkpOworICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVz
ZXMpLCBXVEZNb3ZlKGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSksIHN1Y2NlZWRlZCA9PSBD
RE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCkKK3sKKyAgICBtX3Nlc3Npb24tPnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShz
ZXNzaW9uSWQpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRh
dGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcykKK3sKKyAgICBpZiAo
IW1fY2RtKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogZmFjdG9yeSA9IG1fY2Rt
LT5mYWN0b3J5KCkpCisgICAgICAgIGZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpV
cGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSksIG1faWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1l
c3NhZ2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3sKKyAgICBpZiAo
IW1fY2RtKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogZmFjdG9yeSA9IG1fY2Rt
LT5mYWN0b3J5KCkpCisgICAgICAgIGZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
ZW5kTWVzc2FnZSh0eXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKSwgbV9pZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZChjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAoIW1fY2RtKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoYXV0byogZmFjdG9yeSA9IG1fY2RtLT5mYWN0b3J5KCkpCisgICAgICAgIGZh
Y3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uSWRDaGFuZ2VkKHNlc3Npb25J
ZCksIG1faWRlbnRpZmllcik7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE4MTUzNTY2ZjY0MmZjNjhhMzQ1NjRlNzQ2NzQ1MGZiNDQ5ZGE5
NDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94
eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgZmlu
YWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RN
UHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5KCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZh
Y3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShXZWFrUHRyPFJl
bW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmLCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIFR5cGVzCisgICAgdXNpbmcgTGljZW5zZVR5cGUg
PSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlOworICAgIHVzaW5nIEtl
eVN0YXR1c1ZlY3RvciA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yOworICAgIHVzaW5nIE1lc3NhZ2UgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1l
c3NhZ2U7CisgICAgdXNpbmcgU2Vzc2lvbkxvYWRGYWlsdXJlID0gV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU7CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
JiwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wsIGJvb2wpPjsKKyAgICB1c2luZyBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIE9wdGlvbmFs
PEtleVN0YXR1c1ZlY3Rvcj4mJiwgT3B0aW9uYWw8ZG91YmxlPiYmLCBPcHRpb25hbDxNZXNzYWdl
PiYmLCBib29sKT47CisgICAgdXNpbmcgTG9hZFNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+
JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wsIFNlc3Npb25Mb2FkRmFpbHVyZSk+OworICAg
IHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsK
KyAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlPiYmLCBib29sKT47CisgICAgdXNpbmcgU3RvcmVSZWNvcmRDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT47CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgcmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpOworICAg
IHZvaWQgdXBkYXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmKTsKKyAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBTdHJpbmcgc2Vzc2lvbklk
LCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgY2xvc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKTsK
KyAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKTsKKyAgICB2b2lkIHN0b3JlUmVj
b3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKKyAgICAvLyBDRE1JbnN0
YW5jZVNlc3Npb25DbGllbnQKKyAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1Zl
Y3RvciYmKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VU
eXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZv
aWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIFdlYWtQdHI8
UmVtb3RlQ0RNUHJveHk+IG1fY2RtOworICAgIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b24+IG1fc2Vzc2lvbjsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI5MzE5NmMwOTVlMDM0YjY0MjFmOGVl
NjM4YWUwOWVmY2UyMGU5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgUmVxdWVzdExpY2Vuc2UoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlw
ZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGluaXREYXRhKSAtPiAoSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIFN0cmluZyBzZXNzaW9uSWQsIGJvb2wgbmVl
ZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCisgICAgVXBkYXRlTGlj
ZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vu
c2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZXNwb25zZSkgLT4g
KGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5n
ZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3Nh
Z2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBBc3luYworICAgIExvYWRTZXNzaW9uKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgU3RyaW5nIHNlc3Npb25J
ZCwgU3RyaW5nIG9yaWdpbikgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiBjaGFuZ2Vk
RXhwaXJhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
PiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGxvYWRGYWlsdXJlKSBBc3luYworICAgIENs
b3NlU2Vzc2lvbihTdHJpbmcgc2Vzc2lvbklkKSAtPiAoKSBBc3luYworICAgIFJlbW92ZVNlc3Np
b25EYXRhKFN0cmluZyBzZXNzaW9uSWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGlj
ZW5zZVR5cGUgdHlwZSkgLT4gKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBBc3luYworICAgIFN0b3JlUmVjb3JkT2ZLZXlV
c2FnZShTdHJpbmcgc2Vzc2lvbklkKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxYWM5MmZk
MDk3YWYxY2Y5YjhmZjhiYjQwZGIxYmVhNWUzYTgwYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC0wLDAgKzEs
MTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVDRE1Db25maWd1cmF0aW9uLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0NETVByaXZhdGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IFJlbW90
ZUNETVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9y
eSwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYgcHJpdikKK3sKKyAgICBp
ZiAoIXByaXYpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVtb3RlQ0RNQ29uZmln
dXJhdGlvbiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmPih7CisgICAgICAgIHByaXYtPnN1cHBv
cnRlZEluaXREYXRhVHlwZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkUm9idXN0bmVzc2Vz
KCksCisgICAgICAgIHByaXYtPnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCksCisgICAgICAg
IHByaXYtPnN1cHBvcnRzU2Vzc2lvbnMoKQorICAgIH0pOworICAgIC8vIFVzZSBuZXcoKSB0byBh
Y2Nlc3MgQ0RNUHJpdmF0ZSdzIHByaXZhdGUgY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4obmV3IFJlbW90ZUNETVByb3h5KFdURk1vdmUoZmFj
dG9yeSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVt
b3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5
PiYmIGZhY3RvcnksIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiYmIHByaXYsIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3Rv
cnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1fcHJpdmF0ZShXVEZNb3ZlKHByaXYpKQorICAg
ICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK1JlbW90
ZUNETVByb3h5Ojp+UmVtb3RlQ0RNUHJveHkoKSA9IGRlZmF1bHQ7CisKK2Jvb2wgUmVtb3RlQ0RN
UHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERh
dGEodHlwZSwgZGF0YSk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5
OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7Cit9CisKK09wdGlv
bmFsPFN0cmluZz4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXplU2Vzc2lvbklk
KHNlc3Npb25JZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmdldFN1cHBvcnRlZENvbmZp
Z3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRp
b24sIFdlYkNvcmU6OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MsIFdlYkNv
cmU6OkNETVByaXZhdGU6OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIG1fcHJpdmF0ZS0+Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pLCBhY2Nlc3MsIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwordm9pZCBSZW1v
dGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKT4m
JiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gcHJpdmF0ZUluc3RhbmNlID0gbV9wcml2YXRlLT5j
cmVhdGVJbnN0YW5jZSgpOworICAgIGlmICghcHJpdmF0ZUluc3RhbmNlIHx8ICFtX2ZhY3Rvcnkp
IHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXV0byBpbnN0YW5jZSA9IFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZShtYWtl
V2Vha1B0cih0aGlzKSwgcHJpdmF0ZUluc3RhbmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1
dG8gaWRlbnRpZmllciA9IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsK
KyAgICBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGluc3Rh
bmNlLT5jb25maWd1cmF0aW9uKCk7CisgICAgbV9mYWN0b3J5LT5hZGRJbnN0YW5jZShpZGVudGlm
aWVyLCBXVEZNb3ZlKGluc3RhbmNlKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyLCBXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZElu
aXRpYWxpemUoKQoreworICAgIG1fcHJpdmF0ZS0+bG9hZEFuZEluaXRpYWxpemUoKTsKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM5ZDU1OGRmZmExNTJjMGRkNWEwYzBiMmI1YTgxNzMyYTFk
YjViMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETVByaXZhdGUuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyOworZW51bSBjbGFzcyBDRE1SZXF1
aXJlbWVudCA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIDogdWludDhfdDsK
K3N0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworc3RydWN0IENETVJlc3RyaWN0aW9u
czsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTsKK3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgUmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbjsKKworY2xhc3MgUmVtb3RlQ0RNUHJveHkgOiBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiBjcmVh
dGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpDRE1Qcml2YXRlPiYmKTsKKyAgICB+UmVtb3RlQ0RNUHJveHkoKTsKKworICAgIGNvbnN0
IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KKworICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSogZmFj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQorCisgICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOworICAgIE9wdGlvbmFsPFN0
cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOworCitwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5UHJveHk7CisgICAgUmVtb3Rl
Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlv
bj4mJik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2Vz
CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mJiwgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNz
LCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7
CisgICAgdm9pZCBjcmVhdGVJbnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYm
KTsKKyAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCk7CisKKyAgICBXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpD
RE1Qcml2YXRlPiBtX3ByaXZhdGU7CisgICAgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3VyYXRp
b24+IG1fY29uZmlndXJhdGlvbjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzk1NTU4NGVkZjE3MWExNjVkYzUzZjBkYWU1ZjFhMzk0OGM3NTVmMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4g
UmVtb3RlQ0RNUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgR2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbihzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjYW5kaWRhdGVD
b25maWd1cmF0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdl
QWNjZXNzIGFjY2VzcykgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24+IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikgQXN5bmMKKyAgICBDcmVhdGVJbnN0YW5j
ZSgpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZCwgc3RydWN0IFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNo
cm9ub3VzCisgICAgTG9hZEFuZEluaXRpYWxpemUoKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcAppbmRleCBmYzVlMGQ3ZTFiY2MyYWExOGZlZjRjZDNhNTNjZWVjOTRiY2YzMmU5Li41NmY5
MjVjZDJjNWFkYmFmNzcxNTMyMjc0ZWY3NDZhYTIxZTUxYmU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgiCkBAIC00Niw2ICs0NywxMCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1v
dGVDRE1GYWN0b3J5UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MDAsOSArNTA1LDkgQEAgdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikKICNlbmRpZgog
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcm
LCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1l
ZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5p
dERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
aW5pdERhdGEtPmRhdGEoKSksIGluaXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAK
IHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hh
bmdlZCgpCkBAIC02ODQsNiArNjg5LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
a2V5QWRkZWQoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9p
ZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNl
UHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQ
cm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5z
dGFuY2VBdHRhY2hlZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkg
PSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgp
LmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VE
ZXRhY2hlZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJv
eHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94
eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRv
RGVjcnlwdFdpdGhJbnN0YW5jZShpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRp
ZgorCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGlu
dWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxk
Q29udGludWVBZnRlcktleU5lZWRlZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxh
eWVyLT5iZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggMmMwMWQw
ZTVmMDFhZjMyZjMyM2JlYmM2MWQ4YzhmMGJkODRhNjA4MS4uZjBiMzQzZjVjODRmM2FlN2RjZTk1
MGU4ZDFkMzVkMDVlN2E4NWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTQwLDYgKzE0NSwx
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXImJik7CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYK
KwogICAgIHZvaWQgYmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVs
YXRlZEhEQ1BFcnJvcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGJjMmQyMjY2NmFkZWRjOGI3MzBjMmZiZGNmMWM0ZjhmMDdmNzE4ZTkuLjQyNWRhMjMyZjgzNmU4
N2U4MjU2YzM4MzU1NjRlYWVhMTYzNGVjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC04Miw5ICs4MiwxNiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclBy
b3h5IE5vdFJlZkNvdW50ZWQgewogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQog
ICAgICMgU2V0Q0RNU2Vzc2lvbgogICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0
YWNoZWQKLSAgICAjIENkbUluc3RhbmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRX
aXRoSW5zdGFuY2UKKyNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBD
ZG1JbnN0YW5jZUF0dGFjaGVkKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlu
c3RhbmNlSWQpCisgICAgQ2RtSW5zdGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciBpbnN0YW5jZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFu
Y2UoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgU2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3Vs
ZCkKICNlbmRpZgogCiAgICAgQmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNDdiNTg3ODI3ZjMxODgxZTYzMDRlOTRm
ZDc5YWU5NjM3MDEyNTBmMC4uMjVmMDg5MGU3MTVlMmU3ZmFiNmU3Njg4ZmEyODYwN2M4YWY5MDlj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMzIsNiAr
MjMyLDkgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAg
ICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1v
dGVDRE1JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXInLAogICAgICAgICAn
V2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA1YWRiMzdkOGI1YmRlZjAwYTU2NmY0YTAy
ZGI2NGJiOTVkYWIwMDI0Li44YmY4ZDNkNTVlYTU1NDY1NDdiYzEzN2U0MjY4NDBhNGExMWY4MTdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
QEAgLTMyMTcsNCArMzIxNyw1OSBAQCBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlYwogICAgIHJldHVy
biBidWZmZXI7CiB9CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2Um
IG1lc3NhZ2UpCit7CisgICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0OworCisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7Cisg
ICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2VUeXBlIHR5cGU7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZl
cikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVy
biBtYWtlT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPih7IHR5
cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIH0pOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3ImIGtleVN0YXR1c2VzKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGtleVN0YXR1c2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBrZXlTdGF0dXMgOiBr
ZXlTdGF0dXNlcykgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXkgPSBrZXlTdGF0
dXMuZmlyc3QuY29weVJlZigpOworICAgICAgICBlbmNvZGVyIDw8IGtleSA8PCBrZXlTdGF0dXMu
c2Vjb25kOworICAgIH0KK30KKworT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3I+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpLZXlTdGF0dXNWZWN0b3I+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICB1
aW50NjRfdCBkYXRhU2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFTaXplKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzOworICAgIGtleVN0YXR1c2VzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZGF0YVNpemUpOworCisgICAgZm9yICh1aW50NjRfdCBpID0gMDsg
aSA8IGRhdGFTaXplOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5Owor
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGtleSkgfHwgIWtleSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
Q2xpZW50OjpLZXlTdGF0dXMgc3RhdHVzOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXR1cykpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGtleVN0
YXR1c2VzLnVuY2hlY2tlZEFwcGVuZCh7IGtleS5yZWxlYXNlTm9uTnVsbCgpLCBzdGF0dXMgfSk7
CisgICAgfQorICAgIHJldHVybiBrZXlTdGF0dXNlczsKK30KKyNlbmRpZiAvLyBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggODk4NjM1ODNmM2JjMTY2OTA5NzQ2ZGY2
MTgyNjQ3ZDY5MjU5YWVjMy4uZDA3ZjJiZjViMjFiNjIwYjkxOTgxMDE5OTQwZTI3NDRlZDI1MDBj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTU2LDYgKzU2LDExIEBACiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0FkZGl0aW9ucy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NE
TUluc3RhbmNlU2Vzc2lvbi5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVz
cGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTgzNiw2ICs4NDEsMTggQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4gewogICAgIHN0YXRpYyBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4g
ZGVjb2RlKERlY29kZXImKTsKIH07CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
Ok1lc3NhZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYp
OworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3Rvcj4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtOTg0LDQgKzEwMDEsMjggQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXVEZMb2dMZXZlbD4gewogICAgID47CiB9OwogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpT
ZXNzaW9uTG9hZEZhaWx1cmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNz
aW9uTG9hZEZhaWx1cmU6Ok5vbmUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpT
ZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGEsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZSwKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6UXVvdGFF
eGNlZWRlZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFp
bHVyZTo6T3RoZXIKKyAgICA+OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cywKKyAgICBX
ZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6VW5rbm93biwKKyAgICBXZWJDb3JlOjpD
RE1JbnN0YW5jZTo6SERDUFN0YXR1czo6VmFsaWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkhEQ1BTdGF0dXM6Ok91dHB1dFJlc3RyaWN0ZWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkhEQ1BTdGF0dXM6Ok91dHB1dERvd25zY2FsZWQKKyAgICA+OworfTsKKworI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMzBkNTViNDVkODMzZGVjMjNmN2E2MDBm
MjgzZmM5MzU5OGFkOWIwNy4uMDQ4ZjZhOGYyNzg0MTA1NjhmZTMwNzBhMTlkZGJkYzIzYzNmZTRi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC0yNiw2ICsyNiwxMCBAQCBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC00MCw2ICs0NCw3IEBAIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKIAorCiBOZXR3b3JrUHJvY2Vzcy9BZENs
aWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5
VHJhY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKQEAgLTUzOSw2ICs1NDQsMTAgQEAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRl
UmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNw
cAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBA
bm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGE1YjYyNGI2YTNkZTgzNWY5MzcyNDdjNjY2ZjI1ZTM4ODBjMjcyYzYuLjZkMWE5NjIzOWU4
ODZjNjljNmM2Njc5Y2RhYmQ3ODc3OGFlZTcyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcwNiw2ICsxNzA2LDcgQEAKIAkJQ0Qx
OUQyRUEyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxOUQyRTgyMDQ2
NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMjg2NUVFMjI1NTU2MjAw
MDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQ
cm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2
QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVEMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gKi87IH07CisJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0Ez
NSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0NjYxODEyNDAxMDU2NDAw
NDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCUNENDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFC
MDYxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi87IH07CiAJ
CUNENDkxQjBEMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDQ5MUIwQjFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwRTFFNzMyRTREMDAwMDkwNjYgLyog
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEMxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTE3MjgsNiArMTcyOSwyMCBA
QAogCQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTI5QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oICovOyB9OwogCQlDREE5M0RCMDIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNj
cmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxz
Y3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyog
RnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkg
LyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi87IH07CisJCUNE
QUMyMEI0MjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCMjIzRkI1OEYy
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovOyB9OworCQlDREFDMjBDMzIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCNjIzRkMyRjczMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMEM0
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlLmggKi87IH07CisJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFD
MjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi87IH07CisJCUNEQUMyMEM5MjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQzIzRkMy
Rjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovOyB9
OworCQlDREFDMjBDQTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBC
RDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IH07CisJ
CUNEQUMyMENEMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMDIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovOyB9OworCQlDREFDMjBDRTIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi87IH07CisJCUNEQUMyMENGMjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEYyMjNGQzM4M0EwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlD
REFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBFQzIzRkMzODM4MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OworCQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVl
blN0YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICov
OyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
aCAqLzsgfTsKIAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ1MTFDQkM0
ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKQEAgLTQ5ODgsNiArNTAwMywxMCBA
QAogCQlDRDE5RDJFOTIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlz
dGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5j
cHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcg
LyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUYXNr
U3RhdGVPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFRDIy
NTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODAyNDAxMDU2NDAw
NDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0
OTFCMDUxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5
MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNENDkxQjBBMUU3MzJEMTIwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMjksNiArNTA0OCw0MyBAQAogCQlD
REEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5U
b3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNj
cmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1
cmlzdGljUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hT
ZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjA3ODIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBBRTIzRkI1
ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjEyM0ZC
NThFMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMzIzRkI1OEYyMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjcyM0ZDMkY3MzAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMEI4MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlQ0RNRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQkUyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCRjIzRkMyRjc1
MDAyMURFRTMgLyogUmVtb3RlQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMy
MEMwMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRDIzRkMzODM4MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3Nh
Z2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVFMjNGQzM4MzkwMDIx
REVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBs
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVGMjNGQzM4MzkwMDIx
REVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAv
KiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUz
IC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMzIzRkMzODNB
MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJl
bW90ZUNETVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBwYXRoID0gaW9z
L2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQzI4MzFDMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1Zp
ZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHBh
dGggPSBpb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBDRk5ldHdvcmsu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3JrOyBwYXRoID0g
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTUzMTMsNiArNTM2OSwyMCBAQAogCQkJCTlCNUJFQzI5
MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwICovLAog
CQkJCTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuaCAqLywKIAkJCQk5QjVCRUMyRTI0MDEwMThDMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEJGMjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE0uY3BwICovLAorCQkJCUNEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAvKiBS
ZW1vdGVDRE0uaCAqLywKKwkJCQlDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RN
Q29uZmlndXJhdGlvbi5oICovLAorCQkJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5LmNwcCAqLywKKwkJCQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNRmFjdG9yeS5oICovLAorCQkJCUNEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JZGVudGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkIyM0ZDMkY3NDAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlLmNwcCAqLywKKwkJCQlDREFDMjBCNzIzRkMyRjczMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2UuaCAqLywKKwkJCQlDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjYyM0ZDMkY3
MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMy
MEJFMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICovLAor
CQkJCUNEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
aCAqLywKKwkJCQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8sCiAJCQkJMDdCOTNGRjUyM0FG
MENCODAwMzZGOEVBIC8qIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oICovLAogCQkJ
CTA3OTIzMTMwMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3Bw
ICovLAogCQkJCTA3OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIuaCAqLywKQEAgLTUzNDMsNiArNTQxMywxOCBAQAogCQkJCTlCMTIyOUNGMjNGRjI4MTQw
MDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywK
IAkJCQkwNzFCQzU3RTIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNw
cCAqLywKIAkJCQkwNzFCQzU3RjIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1By
b3h5LmggKi8sCisJCQkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnlQcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oICovLAorCQkJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQjMyM0ZCNThGMjAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEIyMjNG
QjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi8sCisJCQkJQ0RBQzIw
QjEyM0ZCNThFMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4g
Ki8sCisJCQkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcCAqLywKKwkJCQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLywKKwkJCQlDREFDMjBBRDIzRkI1ODJCMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJ
Q0RBQzIwODMyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKKwkJCQlD
REFDMjA4MjIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLywKKwkJCQlDREFD
MjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJMDcyNUVGQUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcCAqLywKIAkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05NzMxLDYg
Kzk4MTMsMjEgQEAKIAkJCQkxQTA0M0I1QzEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkxQThFRkE2RTEyNTJCODQxMDBGNzA2N0YgLyogUGx1
Z2luUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3
MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjIyM0ZDMzgzQTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJ
CQkJQ0RBQzIwRjMyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJQ0RBQzIwRUUyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEY1MjNGQzM4M0IwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlD
REFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2Vz
LmggKi8sCisJCQkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlD
RDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2Fn
ZXMuaCAqLywKKwkJCQlDRDQ2NjE4MDI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKKwkJCQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYxMjNGQzM4M0EwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNE
QUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVz
c2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyog
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJMEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHlNZXNzYWdlcy5oICovLAogCQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTA2MzcsNiAr
MTA3MzQsMTYgQEAKIAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUNEMjNGRjI1
RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUI1QkVDMkEyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8q
IFJlbW90ZUNETS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUz
IC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENE
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDREFDMjBDRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0RBQzIwQzQyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBD
MzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzky
M0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1
QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFCMTZBRUExNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQu
aCBpbiBIZWFkZXJzICovLApAQCAtMTIzMzYsNiArMTI0NDMsMTEgQEAKIAkJCQkyRDU0QzMxQjIx
MkY0REE2MDA0OUMxNzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQk5QjEyMjlDRTIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjcyM0ZD
NzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDQ2
NjE4MzI0MDEwQTY3MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAw
NTE3QTIwIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGMjRBMkQxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThB
NkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCmluZGV4IGRmYjliOWE5MzhiOTg1ZDI4MGFjZGVkYTA0OGJjNWE2NmY3N2U2MWIuLmY5
Yjk3MDE4MTcyZGE1MmIxYzcwNTQ5Mzk1OTNjMjExZGZlZDAxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0z
Myw2ICszMyw4IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjaW5jbHVkZSAiTGli
V2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1Qcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKQEAgLTQ0LDYgKzQ2LDEwIEBACiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2VzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzUsNiArODEsMTMgQEAgU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck0KIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK1JlbW90
ZUNETUZhY3RvcnkmIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpjZG1GYWN0b3J5KCkKK3sKKyAgICBy
ZXR1cm4gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9y
eT4oKTsKK30KKyNlbmRpZgorCiBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpAQCAtMTAw
LDYgKzExMywxMiBAQCBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlYwogICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2VuZGlmCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8
UmVtb3RlQ0RNRmFjdG9yeT4oKS0+ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAjZW5kaWYKICAgICByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5oCmluZGV4IDZhY2RjYmYzOTU0NTFiNmI0Yzk1OGVjYzkyYjUyMDE2YjY3Nzcy
ODkuLjJiNTcyYzFiYWNiZmE2YjZiMjZmMzU2MGMyNjJhOWE0MWIwYzc1YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAg
LTM5LDYgKzM5LDggQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2NsYXNzIFJlbW90ZUNETUZhY3Rvcnk7CisKIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9u
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxHUFVQcm9jZXNzQ29ubmVjdGlv
bj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
cikKQEAgLTU4LDYgKzYwLDEwIEBAIHB1YmxpYzoKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyJiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlQ0RNRmFjdG9yeSYgY2RtRmFj
dG9yeSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
CmluZGV4IGYzZGM4OWM2ZjYxMDlmM2I2MDViOWQ1ZjZlNDE3ZGY5Y2EyNzE5YmMuLjAxMGM3MWUy
YTEwOWQ5YTk3OWUwZDcyOGYwNWZlOWM0MTRkNzU3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHAKQEAgLTQ5LDYgKzQ5LDEwIEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dN
ZWRpYTsKQEAgLTkxOSwxOSArOTIzLDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjprZXlBZGRlZCgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5j
ZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChD
RE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAo
aXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNkbUluc3RhbmNlQXR0YWNoZWQo
ZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lk
KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNo
ZWQoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3Rh
bmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0
YW5jZURldGFjaGVkKGRvd25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRp
ZmllcigpKSwgbV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRl
bXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBp
bnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1J
bnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6QXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShkb3du
Y2FzdDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQo
KQpAQCAtOTM5LDYgKzk0NiwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2Fp
dGluZ0ZvcktleUNoYW5nZWQoKQogICAgIG1fcGxheWVyLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgp
OwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5j
ZSYmIGluaXREYXRhKQoreworICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKTsKKyAgICBtX3BsYXllci0+
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXRE
YXRhQnVmZmVyKSk7Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5n
Rm9yS2V5KCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtOTQ2LDYgKzk1OSwx
MyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91bGQpCit7CisgICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFNob3VsZENvbnRp
bnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxkKSwgbV9pZCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
CmluZGV4IDRkN2RjODBlOTdmZmQ4N2NiZThkMGFiYTQ2NjUzZDcyMTM1MTYxYjUuLmU0MmMyNTc0
MzBkODI5ZTYzYmU1YmI0Mjc0ZGMwM2E4ODhjMWMyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaApAQCAtMTM5LDYgKzEzOSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCiAgICAgdm9pZCB3YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOworICAgIHZvaWQgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiwgSVBDOjpEYXRhUmVmZXJlbmNl
JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAt
MzE2LDYgKzMxNywxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0
IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoYm9vbCkgZmluYWw7CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
ICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFdlYkNvcmU6OlRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluCmluZGV4IDNmZmNmMzZlZmUyNGIzZDA4NTBlZWEyODZlMmNlNzI4ZTRhMmZjMWEu
LjZhZTBkYjMxZmFiZWU5YTQ0NGQ1MjgzZGRiYTA4ZmIzMGM2MDk4OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC03NSw2ICs3NSw3IEBAIG1lc3Nh
Z2VzIC0+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBOb3RSZWZDb3VudGVkIHsKIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgV2FpdGluZ0ZvcktleUNoYW5nZWQoKQorICAgIElu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKFN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0
YVJlZmVyZW5jZSBpbml0RGF0YSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzkxYjQwZjNiOWM3NWIzYzExMGI2MzZmNjhjYTU3MDVh
MjViNTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DRE1SZXN0cmlj
dGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVDRE0+IFJlbW90ZUNETTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBm
YWN0b3J5LCBSZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24m
JiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RN
PihuZXcgUmVtb3RlQ0RNKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNETTo6UmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUo
ZmFjdG9yeSkpCisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZp
Z3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE06
OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24sIExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3Vy
YXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAg
ICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkdldFN1cHBvcnRlZENvbmZpZ3Vy
YXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSwgYWNjZXNzKSwgV1RGTW92ZShjYWxsYmFjayks
IG1faWRlbnRpZmllcik7Cit9CisKKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RN
OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVD
RE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9u
VHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVD
RE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKSBjb25zdAoreworICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBs
YXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5z
ZSgpLgorICAgIHJldHVybiB0cnVlOworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OmRp
c3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9u
cykgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ0RNUmVx
dWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7Cit9CisKK0NETVJlcXVpcmVtZW50IFJlbW90ZUNETTo6cGVy
c2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworfQorCitib29sIFJl
bW90ZUNETTo6ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFy
YWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZlB0cjxDRE1JbnN0
YW5jZT4gUmVtb3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSgpCit7CisgICAgaWYgKCFtX2ZhY3Rvcnkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyIGlkOworICAgIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5jZSgpLCBNZXNzYWdl
czo6UmVtb3RlQ0RNUHJveHk6OkNyZWF0ZUluc3RhbmNlOjpSZXBseShpZCwgY29uZmlndXJhdGlv
biksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0
b3J5LmdldCgpKSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2
b2lkIFJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQoreworICAgIGlmICghbV9mYWN0b3J5
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5p
dGlhbGl6ZSgpLCBtX2lkZW50aWZpZXIpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1v
dGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSgpLgorICAgIHJldHVybiBy
ZXNwb25zZS5jb3B5KCk7Cit9CisKK09wdGlvbmFsPFN0cmluZz4gUmVtb3RlQ0RNOjpzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKK3sKKyAgICAvLyBUaGlz
IGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6bG9hZFNlc3Npb24oKS4KKyAgICByZXR1cm4gc2Vzc2lvbklkOworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjZkNmYzNjk3OWIwNDUyY2Y5NmE1MmQxOGY2YWQwYjdmMzM0OGU4Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5j
bHVkZSAiUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9DRE1Qcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1Q
cml2YXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4g
Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYm
LCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETSgpID0g
ZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5PiYmLCBSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJik7
CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIExvY2FsU3RvcmFnZUFj
Y2VzcywgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOworCisgICAgYm9v
bCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0
aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vz
c2lvblR5cGUmLCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29u
c3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpD
RE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3Ry
aWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNp
c3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFi
bGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFs
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5h
bDsKKyAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lv
bklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworCisgICAgVmVjdG9yPEF0b21TdHJpbmc+
IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3Vy
YXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQorICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRp
b24uc3VwcG9ydGVkUm9idXN0bmVzc2VzOyB9CisgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRp
ZmljYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1Nl
cnZlckNlcnRpZmljYXRlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1Nlc3Npb25zOyB9CisKKyAgICBX
ZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIG1fY29uZmlndXJh
dGlvbjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM2MmM0NjRmZGZkY2Q4YzM1NzU2YjBlMzhkYWQwZjg5MzkwNTg4NjcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3Vy
YXRpb24uaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNs
dWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biB7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAg
VmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICBib29sIHN1cHBv
cnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uczsKKworICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkSW5pdERhdGFUeXBl
czsKKyAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGVu
Y29kZXIgPDwgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGVuY29kZXIgPDwg
c3VwcG9ydHNTZXNzaW9uczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4K
KyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+
IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkSW5p
dERhdGFUeXBlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRv
bVN0cmluZz4+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBw
b3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkUm9idXN0bmVzc2VzKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29s
PiBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gc3VwcG9ydHNTZXNzaW9uczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nl
c3Npb25zOworICAgICAgICBpZiAoIXN1cHBvcnRzU2Vzc2lvbnMpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92
ZSgqc3VwcG9ydGVkSW5pdERhdGFUeXBlcyksCisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBwb3J0
ZWRSb2J1c3RuZXNzZXMpLAorICAgICAgICAgICAgKnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVz
LAorICAgICAgICAgICAgKnN1cHBvcnRzU2Vzc2lvbnMsCisgICAgICAgIH19OworICAgIH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhmMmQzZDVjNjEwYWY1NGFkMWQzZWY0ZmE2MWM0NTk2NjY1Mjk3YzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3Rv
cnkuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1Jl
bW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkoV2ViUHJvY2VzcyYgcHJvY2VzcykKKyAg
ICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5Ojp+UmVtb3Rl
Q0RNRmFjdG9yeSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZWdpc3Rl
ckZhY3RvcnkoVmVjdG9yPENETUZhY3RvcnkqPiYgZmFjdG9yaWVzKQoreworICAgIGZhY3Rvcmll
cy5hcHBlbmQodGhpcyk7Cit9CisKK2NvbnN0IGNoYXIqIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBs
ZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIlJlbW90ZUNETUZhY3RvcnkiOworfQorCitHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgUmVtb3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KQoreworICAgIHJldHVybiBtX3Byb2Nlc3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
K30KKworYm9vbCBSZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkKK3sKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSksIE1lc3NhZ2VzOjpS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQp
LCB7IH0pOworICAgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1Q
cml2YXRlPiBSZW1vdGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCit7CisgICAgUmVtb3RlQ0RNSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1Db25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RN
KGtleVN5c3RlbSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETTo6
UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24pLCB7IH0pOworICAgIGlmICghaWQpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1vdGVDRE06OmNyZWF0ZShtYWtlV2Vha1B0cih0
aGlzKSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3Rvcnk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllciBpZCwgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uKQoreworICAg
IEFTU0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlk
LCBXVEZNb3ZlKHNlc3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZW1vdmVT
ZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgQVNT
RVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODllZDA2
MDAxYzY2M2JhZjE4NWRiOTMxNzQ5N2U5MmNmYmZjMDZiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKQEAgLTAs
MCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0RNRmFjdG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisK
K25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNz
IFJlbW90ZUNETTsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjsKK2NsYXNzIFdlYlBy
b2Nlc3M7CisKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnkgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJD
b3JlOjpDRE1GYWN0b3J5CisgICAgLCBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlQ0RNRmFjdG9yeShX
ZWJQcm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeSgpOworCisgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJvY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2VzczsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmFjdG9yeShW
ZWN0b3I8V2ViQ29yZTo6Q0RNRmFjdG9yeSo+Jik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHZvaWQg
YWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSBmaW5hbDsK
KyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAg
SGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uPj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUlkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+PiBtX2NkbXM7CisgICAgV2ViUHJvY2Vz
cyYgbV9wcm9jZXNzOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmVlM2EzODE5YzE3MDdiNTU4YjNmZDlhYWE4ODE2MzE1ODM5MmZhZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRp
Zmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVt
IFJlbW90ZUNETUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUlkZW50aWZpZXIg
PSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTFhMGUw
YjUyZDJkYjViMzY2ZThhYjY2OTY4YzU2MTQ2MmVkZDljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAg
LTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJl
bW90ZUNETUluc3RhbmNlPiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwg
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDRE1JbnN0YW5jZShXVEZNb3ZlKGZhY3RvcnkpLCBX
VEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1JbnN0
YW5jZTo6UmVtb3RlQ0RNSW5zdGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3Rv
cnksIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFj
dG9yeSkpCisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3Vy
YXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEFsbG93RGlzdGluY3RpdmVJZGVudGlm
aWVycyBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBwZXJzaXN0
ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0
b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmll
cnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOwor
fQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhGYWlsZWQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OlNldFNlcnZlckNlcnRpZmljYXRlKGNlcnRpZmljYXRlLmdldCgp
KSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7
CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpLCBtX2lkZW50
aWZpZXIpOworfQorCitSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVD
RE1JbnN0YW5jZTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllciBpZDsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNz
aW9uKCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uOjpS
ZXBseShpZCksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVh
dGUobWFrZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCkpOworICAgIG1fZmFj
dG9yeS0+YWRkU2Vzc2lvbihpZCwgc2Vzc2lvbi5jb3B5UmVmKCkpOworICAgIHJldHVybiBzZXNz
aW9uOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NWY0OWI5NzM5
ZDI0NzlkNTU1ZGY4ZmIwMjdlZGZlY2E5YzM0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNSW5zdGFuY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUlu
c3RhbmNlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNETUluc3RhbmNlIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0YW5jZSgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgUmVm
PFJlbW90ZUNETUluc3RhbmNlPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uJiYpOworCisgICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVt
b3RlQ0RNSW5zdGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOworCisg
ICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CisgICAgdm9pZCBpbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRp
b24ua2V5U3lzdGVtOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4g
Y3JlYXRlU2Vzc2lvbigpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBt
X2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
KyAgICBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworfTsK
KworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NETV9JTlNUQU5DRShXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlLCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SW1wbGVtZW50YXRpb25UeXBlOjpS
ZW1vdGUpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjUzMmQ3MmU3Y2U0Yjg1M2YyZDNiOTM0NTVlMTkyODFjNDE5ZmE0MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiB7CisgICAgU3RyaW5nIGtleVN5c3RlbTsKKworICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwga2V5U3lzdGVtOworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsK
KyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBrZXlTeXN0ZW07CisgICAgICAgIGRlY29kZXIgPj4g
a2V5U3lzdGVtOworICAgICAgICBpZiAoIWtleVN5c3RlbSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpr
ZXlTeXN0ZW0pLAorICAgICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
ZmZkZTY5MWMzZTg5NWI4ODU5ZTYyMDVhNzFlMTE1ZmE5YjRmZTBhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNp
bmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
ZW51bSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVjY2JlMjM5NmY5YjJmODZjOWM2
YjI2ZjMzZTFiYTIzNWIwMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC0wLDAgKzEs
MTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92
ZShpZCkpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZh
Y3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQoreworfQorCit2b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkg
eworICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygp
LCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9y
eS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExpY2Vuc2Uo
dHlwZSwgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9v
bCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVyKCkpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5n
KCksIGZhbHNlLCBGYWlsZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGNhbGxiYWNrKG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgc2Vzc2lvbklk
LCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQp
OworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhm
YWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIFdU
Rk1vdmUocmVzcG9uc2UpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHNl
c3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywg
T3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYm
IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soc2Vz
c2lvbldhc0Nsb3NlZCwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGly
YXRpb24pLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQp
OworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6
T3RoZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpMb2FkU2Vzc2lvbih0eXBlLCBzZXNzaW9u
SWQsIG9yaWdpbiksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoT3B0aW9uYWw8S2V5
U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4
cGlyYXRpb24sIE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQsIFNl
c3Npb25Mb2FkRmFpbHVyZSBsb2FkRmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92
ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkLCBsb2FkRmFpbHVyZSk7
CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpDbG9zZVNlc3Npb24oc2Vzc2lvbklkKSwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICBjYWxs
YmFjaygpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSwgV1RGOjpudWxsb3B0
LCBGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNz
aW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1Zl
Y3RvciYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBPcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKKyAgICAgICAgICAgIHJl
YWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7Cisg
ICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdl
KSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNvcmRPZktleVVz
YWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpT
dG9yZVJlY29yZE9mS2V5VXNhZ2Uoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1Zl
Y3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGll
bnQtPnVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKTsKK30KKwordm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VU
eXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCit7Cisg
ICAgaWYgKG1fY2xpZW50ICYmIG1lc3NhZ2UuYnVmZmVyKCkpCisgICAgICAgIG1fY2xpZW50LT5z
ZW5kTWVzc2FnZSh0eXBlLCBtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCkpOworfQor
Cit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT5zZXNzaW9uSWRDaGFuZ2VkKHNlc3Npb25JZCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmZlYzA5YzQ5YWUyNDIxNTBjYjI0YWNhMDk1
MWZlZThmNDhmNTUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtMCwwICsxLDc1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9u
Lmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
biBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbigpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
UmVtb3RlQ0RNRmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxS
ZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYp
OworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVz
c2FnZXMKKyAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKTsKKyAg
ICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmJik7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0
cmluZyYpOworCisKKyAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNs
aWVudCk7IH0KKyAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxw
dHI7IH0KKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBs
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgY2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgZmlu
YWw7CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRy
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGMyMzkyZTdlZjg2MjA0NjIxZDI4NDE0Mzhi
NWVkZjRkMzgxNTM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4g
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFVwZGF0ZUtleVN0
YXR1c2VzKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0
YXR1c2VzKQorICAgIFNlbmRNZXNzYWdlKGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1NZXNzYWdl
VHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgbWVzc2FnZSkKKyAgICBT
ZXNzaW9uSWRDaGFuZ2VkKFN0cmluZyBzZXNzaW9uSWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODZhY2QxMjY1
YWYwYzg0NjM4OGUyM2Y5Y2NhMTZkOTAyMzM4ZmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5j
bHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAppbmRleCAyYWFlNWU1NDQ1MTA4NDc5YmQzY2QzMzlh
ZmE2YmY2ZDJkZGFiY2Y2Li41ZDdhOGI4ZDExMjRiMmE1MjhhZDczYmRjOTZkOWE5NzgwZGMyMDRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlh
U3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2Vi
TWVkaWFTdHJhdGVneS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0F1ZGlvSU9DYWxsYmFjay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgpAQCAt
NTEsNyArNTMsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24+
IFdlYk1lZGlhU3RyYXRlZ3k6OmNyZWF0ZUF1ZGlvRGVzdGluYXQKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQogdm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZhY3RvcmllcyhW
ZWN0b3I8V2ViQ29yZTo6Q0RNRmFjdG9yeSo+JiBmYWN0b3JpZXMpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgaWYgKG1fdXNlR1BVUHJvY2VzcykgeworICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigp
LmNkbUZhY3RvcnkoKS5yZWdpc3RlckZhY3RvcnkoZmFjdG9yaWVzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorICAgIFdlYkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3JtUmVnaXN0
ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGM2ZmRmYjQ2OTNkMjkxZjIyNTQ3YjA2
MWU5NTIxZGJmOTU0YjdhZWIuLmY1Y2JkNWNkYzI2YWFlMDE0ZDUwYTM5NDExN2RjMGM1ZGJhNTZh
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0zMjIsNiArMzIyLDkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
I2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDNl
NWExNmQxNzAxNTM3MzQxNGFhYWE2ZWZiMWRiODY1ZWVmYjcxNGQuLjhjZmRhMWYzMTBlNWFlMGU5
M2ZhOGMxMDk0Yjc1NjE3ZTZjOWI5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTE3NCw2ICsxNzQsMTAgQEAKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3Mu
aCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1v
dGVDRE1GYWN0b3J5LmgiCisjZW5kaWYKKwogI2RlZmluZSBSRUxFQVNFX0xPR19TRVNTSU9OX0lE
IChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgpIDogMCkKICNkZWZpbmUgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtzZXNzaW9uSUQ9JSIgUFJJ
dTY0ICJdIFdlYlByb2Nlc3M6OiIgZm10LCB0aGlzLCBSRUxFQVNFX0xPR19TRVNTSU9OX0lELCAj
I19fVkFfQVJHU19fKQogCkBAIC0yNDAsNiArMjQ0LDEwIEBAIFdlYlByb2Nlc3M6OldlYlByb2Nl
c3MoKQogICAgIGFkZFN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPigpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVDRE1GYWN0b3J5PigpOworI2VuZGlmCisKICAgICBH
aWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIH0KIAo=
</data>
<flag name="review"
          id="407558"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392414</attachid>
            <date>2020-03-04 08:01:01 -0800</date>
            <delta_ts>2020-03-04 09:11:49 -0800</delta_ts>
            <desc>Patch for landing: Part 3: WebKit</desc>
            <filename>bug-208090-20200304080053.patch</filename>
            <type>text/plain</type>
            <size>166843</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUxODRmODVlMzhkNjEx
ZGUxMDQ1ZGMzNThmMzY3MWYwMGYwYmI4Yy4uNDExZDkxNDJiNDFlZGMyMDQ1YjAxZDcxOGM2M2Yx
NDEwYTZjNDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGV4cG9ydCBtYWNyb3MgdG8gQ0RNRmFjdG9yeTo6
cmVnaXN0ZXJlZEZhY3RvcmllcygpLgorCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRmFjdG9yeS5oOgorCiAyMDIwLTAzLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAoQ29va2llQ2FjaGUpIFVuYWJsZSB0byBsb2cg
aW50byBIdWx1LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTc2Y2I0ODY4ZjhlYTBkNWM0ZjY2Nzc0YjBmNDk1
ZjY1ZWFkYzc2Li40NTBlN2UzNTJmM2VhYjhmMzU2MGUxNjViNzNhYmU5M2MwODQ2OTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGlu
IHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90
ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAg
b2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBl
eGlzdGluZyBDRE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5ICB3aGVuIHRoZSBH
UFUgcHJvY2VzcyBpcyBkaXNhYmxlZCwKKyAgICAgICAgYnkgbWFraW5nIGluaXRpYWxpemF0aW9u
IG9mIHRoZSBDRE0gZmFjdG9yaWVzIGNvbnRpbmdlbnQgdXBvbiB0aGUgInVzZSBHUFUiIHNldHRp
bmcuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2Rt
RmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6ZmFjdG9yeUZvcktleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkSW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojpjb25maWd1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5zdGFu
Y2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6On5SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNUHJveHk6OmZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpSZW1vdGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0luaXRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lvbklkIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1GYWN0b3J5Ojp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZh
Y3Rvcnk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5Ojpy
ZW1vdmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVj
ZWl2ZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9m
S2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTAzICBKaXRl
biBNZWh0YSAgPGptZWh0YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5h
dGl2ZSBTZXJ2aWNlcyBTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKaW5kZXggNTI1Yzg0ZWNiZTc5MWY0MGI1NDdmYjdm
YWZkZTlkMDNiYTgxMGJhZS4uZmIzNTBkNDg1NWExYWIzM2IxYjZkMWM0ZGNlNzNhN2U3MjZhNjUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUZhY3RvcnkuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
c3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3Rv
cmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShD
RE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5yZWdpc3RlckZh
Y3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggODZmMDFiMzlhMDQ3MjhjMmMwYmZmNjdlNWJkMzkzZjA5MWI3
N2Y5ZC4uOWY5NDZmODQ5N2FmMjNiNGFmYTUxYjc5MTg0MTg1MTg4NjBhYzViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTgsNiArMTgs
MTAgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTExMiw2ICsxMTYsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA2NDY0ZDgzODlmYjUzZjUy
NzUwNzA1MzljOTgxMGZiMmQ4Y2NiMzE5Li5hOTZjMmNmZGRkNDZiMzU5MjM4ZTk2MjM0M2E5OTIy
MTA0ZWVhNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKQEAgLTEzNyw2ICsxMzcsMjEgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNDM2ZTRiNDIyNGNiMDQ1
YzllYWIzYTZjNzA1NDMwYmQ1MjUzMzMzNC4uNDVlZTNkYjdlZDdlMTMzNzJjOGE3NWFkNTU1YTE2
NTg3ZjY3ZDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTUxLDYgKzE1MSwx
MSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyIFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVD
RE1Qcm94eSBcCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAorICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAog
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXll
clByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2YTJjODcwZjdhYWExYjBkYjAwMGVmODg4MjdjOWEw
ZjYxZGNmMjViLi42Y2YxYzMwYjNlMzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC02MCwxMCArNjAsMTggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VzLmgiCisjZW5kaWYKKworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTksNiArMjA3LDE2IEBAIExpYldlYlJUQ0NvZGVjc1By
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVDRE1GYWN0b3J5
UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSgpCit7Cisg
ICAgaWYgKCFtX2NkbUZhY3RvcnlQcm94eSkKKyAgICAgICAgbV9jZG1GYWN0b3J5UHJveHkgPSBt
YWtlVW5pcXVlPFJlbW90ZUNETUZhY3RvcnlQcm94eT4oKnRoaXMpOworCisgICAgcmV0dXJuICpt
X2NkbUZhY3RvcnlQcm94eTsKK30KKyNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcC5lbnN1cmUocmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIFsmXSgpIHsKQEAgLTI2OSw2ICsyODcsMjggQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHko
KS5kaWRSZWNlaXZlQ0RNTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKQEAgLTI5NCw2ICszMzQsMjggQEAgYm9vbCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICB9CiAjZW5kaWYKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2Rt
RmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQ
cm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1G
YWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCkBAIC0z
MDIsNyArMzY0LDcgQEAgY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpt
ZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKIH0KIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQogY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9n
cHVQcm9jZXNzLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDc0NzE1YzgwYzU0NWJlYWZlYzNmNmI3ZTA5ODRlY2E1MGNiYTI2NjkuLmEzZWNhNWM4
ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDgsNiArNDgs
NyBAQCBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CiBjbGFz
cyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsK
IGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKQEAgLTg1
LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciYgc2Vzc2lvbk1hbmFnZXIoKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEKTsKIApAQCAtMTM4LDYgKzE0MywxMCBAQCBwcml2YXRlOgogICAgIAogICAg
IHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcCA9IEhhc2hNYXA8UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNYXAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHlNYXA7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmNiYWY2YTU4NGI0ZjI3YjFkMmFhMjE3MmVhNWJjMWEzNDRlNTc0MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0
b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVt
b3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHku
aCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CisjaW5j
bHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDogbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZUNETUZh
Y3RvcnlQcm94eTo6flJlbW90ZUNETUZhY3RvcnlQcm94eSgpID0gZGVmYXVsdDsKKworc3RhdGlj
IENETUZhY3RvcnkqIGZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
Cit7CisgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3Rvcmll
cygpOworICAgIGF1dG8gZm91bmRJbmRleCA9IGZhY3Rvcmllcy5maW5kTWF0Y2hpbmcoWyZdIChh
dXRvJiBmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5LT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0pOyB9KTsKKyAgICBpZiAoZm91bmRJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGZhY3Rvcmllc1tmb3VuZEluZGV4XTsKK30KKwordm9pZCBS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNv
bmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWZhY3RvcnkpIHsKKyAg
ICBhdXRvIGZhY3RvcnkgPSBmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSk7CisgICAgICAg
IGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RNKGtleVN5c3RlbSk7CisgICAgaWYgKCFw
cml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBwcm94eSA9IFJlbW90ZUNETVByb3h5OjpjcmVhdGUobWFr
ZVdlYWtQdHIodGhpcyksIFdURk1vdmUocHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRpZmll
ciA9IFJlbW90ZUNETUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uID0gcHJveHktPmNvbmZpZ3VyYXRpb24oKTsKKyAgICBhZGRQ
cm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgY29tcGxldGlvbihXVEZNb3Zl
KGlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAgY29t
cGxldGlvbihmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSkpOworfQorCit2b2lkIFJlbW90
ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHByb3h5
ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVy
VHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5zdGFu
Y2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgaW5z
dGFuY2UtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lk
IFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7
CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRp
ZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0
aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNl
aXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQorewor
ICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8
UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAg
ICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5j
b2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NE
TUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7Cisg
ICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlm
aWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojpk
aWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9ucy5n
ZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KGNvbnN0IFJlbW90ZUNETUlkZW50aWZp
ZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHkpCit7CisgICAg
QVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlkLCBX
VEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQ
cm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiBpZCkKK3sKKyAgICBBU1NFUlQobV9wcm94
aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZShSZW1vdGVDRGNvbnN0IE1JbnN0YW5j
ZUlkZW50aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4m
JiBpbnN0YW5jZSkKK3sKKyAgICBBU1NFUlQoIW1faW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7Cisg
ICAgbV9pbnN0YW5jZXMuc2V0KGlkLCBXVEZNb3ZlKGluc3RhbmNlKSk7Cit9CisKK3ZvaWQgUmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZShSZW1vdGVDRGNvbnN0IE1JbnN0YW5j
ZUlkZW50aWZpZXImIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhpZCkp
OworICAgIG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlUHJv
eHkqIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlkKTsK
K30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5z
dGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9zZXNz
aW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNlc3Np
b24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24oUmVt
b3RlQ0RNSW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQpCit7CisgICAgQVNTRVJU
KG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiOGEyOGY0YzNmNGRkMzc3
MjgyM2NhNzA1MWNkMzY2ZDFkY2Y0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDkxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5OworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CitjbGFzcyBSZW1v
dGVDRE1Qcm94eTsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBSZW1v
dGVDRE1GYWN0b3J5UHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0b3J5
UHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVy
KSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsg
fQorICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY0NE
TUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHkoY29u
c3QgUmVtb3RlQ0RNSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4m
Jik7CisgICAgdm9pZCByZW1vdmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJik7CisK
KyAgICB2b2lkIGFkZEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmKTsKKyAgICB2b2lkIHJl
bW92ZUluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYpOworICAgIFJl
bW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKGNvbnN0IFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXImLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihjb25zdCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbCB7
IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAg
Ly8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNv
bmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwor
ICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TVByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4+IG1faW5zdGFuY2Vz
OworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNDdjNWU2ZTYxYzQyMDc4MzFkYTBiZDExOGE2YWFlYjQwZDMzMTM2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVt
b3RlQ0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZUNETShTdHJpbmcg
a2V5U3lzdGVtKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2Vi
S2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3VzCisg
ICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSkgLT4gKGJvb2wgcmVzdWx0KSBT
eW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTI0
OGZkZmM4MmQ5NGFlNmUwZWQxNzViMzUxYzFiMjZiNTVhMzEzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3Bw
CkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5
PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4m
JiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2KQoreworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiY+KHsKKyAgICAg
ICAgcHJpdi0+a2V5U3lzdGVtKCksCisgICAgfSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXVEZN
b3ZlKGNkbSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKwor
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJl
bW90ZUNETVByb3h5PiYmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFVuaXF1ZVJlZjxS
ZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1f
Y2RtKFdURk1vdmUoY2RtKSkKKyAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKKyAgICAs
IG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpID0gZGVmYXVsdDsKKwor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywg
QWxsb3dQZXJzaXN0ZW50U3RhdGUgYWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIG1faW5zdGFuY2Ut
PmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBhbGxvd0Rpc3RpbmN0
aXZlSWRlbnRpZmllcnMsIGFsbG93UGVyc2lzdGVudFN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRpb24p
KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBjZXJ0aWZpY2F0ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFj
ZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKENETUluc3RhbmNlOjpG
YWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0YW5jZS0+c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgV1RG
TW92ZShjb21wbGV0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBtX2luc3Rh
bmNlLT5zZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJiBjb21wbGV0aW9uKQorewor
ICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7CisgICAg
aWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9jZG0gfHwgIW1fY2RtLT5mYWN0b3J5KCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gaWRl
bnRpZmllciA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7
CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0
ZShtYWtlV2Vha1B0cihtX2NkbS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVhc2VOb25OdWxsKCks
IGlkZW50aWZpZXIpOworICAgIG1fY2RtLT5mYWN0b3J5KCktPmFkZFNlc3Npb24oaWRlbnRpZmll
ciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyKTsKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MTEyZDVmODRiODg0NzMxOWRj
NDA0ZmVhMTUwNmM4YjFlZjMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3Rh
bmNlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNSW5zdGFuY2U7CitzdHJ1Y3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IDogcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciAgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYs
IFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJik7CisgICAgflJlbW90ZUNETUluc3RhbmNlUHJv
eHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorICAgIFdl
YkNvcmU6OkNETUluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2U7IH0KKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJl
bW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNv
cmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdXNpbmcgU3Vj
Y2Vzc1ZhbHVlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZTsKKyAgICB1c2lu
ZyBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxs
b3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzOworICAgIHVzaW5nIEFsbG93UGVyc2lzdGVudFN0YXRl
ID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOworCisgICAgLy8g
TWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNz
VmFsdWUpPiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1Y2Nlc3NWYWx1ZSk+
JiYpOworICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIGNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Q
cm94eT4gbV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNlOwor
ICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJh
dGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lvbnM7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NTBlODUzNDFjMmViMzViYjZlYzA4MDk1ZDVhMDA0ZWNjYTEzOWY5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2Vz
IC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlU2Vz
c2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQp
IFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGVudW06Ym9vbCBX
ZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3RpbmN0
aXZlSWRlbnRpZmllcnNBbGxvd2VkLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFs
bG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpIC0+IChlbnVtOmJvb2wg
V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBBc3luYworICAgIFNl
dFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0aWZp
Y2F0ZSkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIHN1
Y2Nlc3MpIEFzeW5jCisgICAgU2V0U3RvcmFnZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5KQor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMx
Yzg2ZTZiNDYyZjkzZmNhNWVkN2E4Y2VjYTI2NGI1NTU2ZGE0ZWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+IFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiBwcm94eSwg
UmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBzZXNzaW9uUHJv
eHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+KG5ldyBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShXVEZNb3ZlKHByb3h5KSwgV1RGTW92ZShzZXNz
aW9uKSwgaWRlbnRpZmllcikpOworICAgIGF1dG8gY2xpZW50ID0gbWFrZVdlYWtQdHI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PihzZXNzaW9uUHJveHkuZ2V0KCkpOworICAgIHNl
c3Npb25Qcm94eS0+bV9zZXNzaW9uLT5zZXRDbGllbnQoV1RGTW92ZShjbGllbnQpKTsKKyAgICBy
ZXR1cm4gc2Vzc2lvblByb3h5OworfQorCitSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiBj
ZG0sIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9jZG0oV1RGTW92
ZShjZG0pKQorICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKK3sKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
On5SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIEF0
b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWluaXRE
YXRhLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCBlbXB0eVN0cmluZygpLCBm
YWxzZSwgZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50
IHRoZSBDRE1Qcml2YXRlOjpzdXBwb3J0c0luaXREYXRhKCkgY2hlY2sgaGVyZToKKyAgICBpZiAo
IW1fY2RtLT5zdXBwb3J0c0luaXREYXRhKGluaXREYXRhVHlwZSwgKmluaXREYXRhLmJ1ZmZlcigp
KSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
LCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8U2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6
YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShtZXNzYWdlKSwgc2Vzc2lvbklkLCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Ojp1cGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJiBjb21wbGV0aW9uKQoreworICAgIGlmICghcmVzcG9uc2UuYnVmZmVyKCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih0cnVlLCB7IH0sIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxz
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVBy
aXZhdGU6OnNhbml0aXplUmVzcG9uc2UoKSBjaGVjayBoZXJlOgorICAgIGF1dG8gc2FuaXRpemVk
UmVzcG9uc2UgPSBtX2NkbS0+c2FuaXRpemVSZXNwb25zZSgqcmVzcG9uc2UuYnVmZmVyKCkpOwor
ICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2UpIHsKKyAgICAgICAgY29tcGxldGlvbihmYWxzZSwg
eyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9zZXNzaW9uLT51cGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwg
c2FuaXRpemVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3Zl
KGNvbXBsZXRpb24pXSAoYm9vbCBzZXNzaW9uQ2xvc2VkLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBrZXlTdGF0dXNlcywgT3B0aW9uYWw8ZG91YmxlPiYm
IGV4cGlyYXRpb25UaW1lLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYg
bWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgY29tcGxldGlvbihzZXNzaW9uQ2xvc2VkLCBXVEZNb3ZlKGtleVN0YXR1
c2VzKSwgV1RGTW92ZShleHBpcmF0aW9uVGltZSksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5
cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2sm
JiBjb21wbGV0aW9uKQoreworICAgIC8vIEltcGxlbWVudCB0aGUgQ0RNUHJpdmF0ZTo6c2FuaXRp
emVTZXNzaW9uSWQoKSBjaGVjayBoZXJlOgorICAgIGF1dG8gc2FuaXRpemVkU2Vzc2lvbklkID0g
bV9jZG0tPnNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCk7CisgICAgaWYgKCFzYW5pdGl6ZWRT
ZXNzaW9uSWQpIHsKKyAgICAgICAgY29tcGxldGlvbihXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBmYWxzZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZh
aWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX3Nlc3Npb24tPmxvYWRTZXNzaW9uKHR5cGUsICpzYW5pdGl6ZWRTZXNzaW9uSWQsIG9y
aWdpbiwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoT3B0aW9uYWw8Q0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRv
dWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJs
ZSB7CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhw
aXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZWVkZWQsIGZhaWx1cmUpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBtX3Nlc3Npb24t
PmNsb3NlU2Vzc2lvbihzZXNzaW9uSWQsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KV0gKCkgbXV0YWJsZSB7IGNvbXBsZXRpb24oKTsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY29tcGxl
dGlvbikKK3sKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlw
ZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CisgICAgICAgIGlm
IChleHBpcmVkU2Vzc2lvbnNEYXRhKQorICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVm
ZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFdURk1vdmUoKmV4cGlyZWRT
ZXNzaW9uc0RhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKGtleVN0YXR1c2VzKSwg
V1RGTW92ZShleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpCit7CisgICAgbV9zZXNzaW9uLT5zdG9yZVJlY29yZE9mS2V5VXNhZ2Uoc2Vzc2lv
bklkKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5
U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMpCit7CisgICAgaWYgKCFtX2Nk
bSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGZhY3RvcnkgPSBtX2NkbS0+ZmFj
dG9yeSgpKQorICAgICAgICBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRl
S2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX2Nk
bSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGZhY3RvcnkgPSBtX2NkbS0+ZmFj
dG9yeSgpKQorICAgICAgICBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2VuZE1l
c3NhZ2UodHlwZSwgV1RGTW92ZShtZXNzYWdlKSksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKCFtX2NkbSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGF1dG8qIGZhY3RvcnkgPSBtX2NkbS0+ZmFjdG9yeSgpKQorICAgICAgICBmYWN0b3J5
LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpLCBt
X2lkZW50aWZpZXIpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hODE1MzU2NmY2NDJmYzY4YTM0NTY0ZTc0Njc0NTBmYjQ0OWRhOTQzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFj
ZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IGZpbmFsIDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25DbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETVByb3h5
PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmLCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eSgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5
UHJveHk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisKKyAgICAvLyBUeXBlcworICAgIHVzaW5nIExpY2Vuc2VUeXBlID0gV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZTsKKyAgICB1c2luZyBLZXlTdGF0
dXNWZWN0b3IgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvcjsK
KyAgICB1c2luZyBNZXNzYWdlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
OworICAgIHVzaW5nIFNlc3Npb25Mb2FkRmFpbHVyZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sLCBib29sKT47CisgICAgdXNpbmcgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBPcHRpb25hbDxLZXlT
dGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2FnZT4mJiwg
Ym9vbCk+OworICAgIHVzaW5nIExvYWRTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgT3B0aW9uYWw8ZG91YmxlPiYmLCBP
cHRpb25hbDxNZXNzYWdlPiYmLCBib29sLCBTZXNzaW9uTG9hZEZhaWx1cmUpPjsKKyAgICB1c2lu
ZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CisgICAg
dXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
S2V5U3RhdHVzVmVjdG9yJiYsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4mJiwgYm9vbCk+OworICAgIHVzaW5nIFN0b3JlUmVjb3JkQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+OworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKTsKKyAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJik7
CisgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgU3RyaW5nIHNlc3Npb25JZCwgU3Ry
aW5nIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNsb3NlU2Vzc2lv
bihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJik7CisgICAg
dm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJik7CisgICAgdm9pZCBzdG9yZVJlY29yZE9m
S2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOworCisgICAgLy8gQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50CisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3Im
JikgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNl
c3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBXZWFrUHRyPFJlbW90
ZUNETVByb3h5PiBtX2NkbTsKKyAgICBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBt
X3Nlc3Npb247CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViOTMxOTZjMDk1ZTAzNGI2NDIxZjhlZTYzOGFl
MDllZmNlMjBlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFJlcXVlc3RMaWNlbnNlKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpbml0RGF0YSkgLT4gKElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBTdHJpbmcgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5k
aXZpZHVhbGl6YXRpb24sIGJvb2wgc3VjY2VlZGVkKSBBc3luYworICAgIFVwZGF0ZUxpY2Vuc2Uo
U3RyaW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlw
ZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgcmVzcG9uc2UpIC0+IChib29s
IHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiBjaGFuZ2VkRXhw
aXJhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBt
ZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBMb2FkU2Vzc2lvbihXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0
cmluZyBvcmlnaW4pIC0+IChPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGly
YXRpb24sIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVz
c2FnZSwgYm9vbCBzdWNjZWVkZWQsIGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBsb2FkRmFpbHVyZSkgQXN5bmMKKyAgICBDbG9zZVNl
c3Npb24oU3RyaW5nIHNlc3Npb25JZCkgLT4gKCkgQXN5bmMKKyAgICBSZW1vdmVTZXNzaW9uRGF0
YShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VU
eXBlIHR5cGUpIC0+IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBt
ZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBTdG9yZVJlY29yZE9mS2V5VXNhZ2Uo
U3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWFjOTJmZDA5N2Fm
MWNmOWI4ZmY4YmI0MGRiMWJlYTVlM2E4MGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApAQCAtMCwwICsxLDEwNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Q
cm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlUHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1Qcml2YXRlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiBSZW1vdGVDRE1Q
cm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmIHByaXYpCit7CisgICAgaWYgKCFw
cml2KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUNvbmZpZ3VyYXRp
b24sIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJj4oeworICAgICAgICBwcml2LT5zdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzKCksCisgICAgICAgIHByaXYtPnN1cHBvcnRlZFJvYnVzdG5lc3NlcygpLAor
ICAgICAgICBwcml2LT5zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpLAorICAgICAgICBwcml2
LT5zdXBwb3J0c1Nlc3Npb25zKCkKKyAgICB9KTsKKyAgICAvLyBVc2UgbmV3KCkgdG8gYWNjZXNz
IENETVByaXZhdGUncyBwcml2YXRlIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQ0RNUHJveHk+KG5ldyBSZW1vdGVDRE1Qcm94eShXVEZNb3ZlKGZhY3Rvcnkp
LCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1JlbW90ZUNE
TVByb3h5OjpSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBm
YWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVt
b3RlQ0RNQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdU
Rk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3ByaXZhdGUoV1RGTW92ZShwcml2KSkKKyAgICAsIG1f
Y29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1vdGVDRE1Q
cm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZhdWx0OworCitib29sIFJlbW90ZUNETVByb3h5
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5
cGUsIGRhdGEpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQoreworICAgIHJldHVy
biBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOworfQorCitPcHRpb25hbDxT
dHJpbmc+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNz
aW9uSWQpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0
aW9uKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBX
ZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBXZWJDb3JlOjpD
RE1Qcml2YXRlOjpTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICBtX3ByaXZhdGUtPmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1
cmF0aW9uKSwgYWNjZXNzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
UHJveHk6OmNyZWF0ZUluc3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYgY29t
cGxldGlvbikKK3sKKyAgICBhdXRvIHByaXZhdGVJbnN0YW5jZSA9IG1fcHJpdmF0ZS0+Y3JlYXRl
SW5zdGFuY2UoKTsKKyAgICBpZiAoIXByaXZhdGVJbnN0YW5jZSB8fCAhbV9mYWN0b3J5KSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGF1dG8gaW5zdGFuY2UgPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUobWFrZVdlYWtQ
dHIodGhpcyksIHByaXZhdGVJbnN0YW5jZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAg
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBpbnN0YW5jZS0+
Y29uZmlndXJhdGlvbigpOworICAgIG1fZmFjdG9yeS0+YWRkSW5zdGFuY2UoaWRlbnRpZmllciwg
V1RGTW92ZShpbnN0YW5jZSkpOworICAgIGNvbXBsZXRpb24oaWRlbnRpZmllciwgV1RGTW92ZShj
b25maWd1cmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFs
aXplKCkKK3sKKyAgICBtX3ByaXZhdGUtPmxvYWRBbmRJbml0aWFsaXplKCk7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJjOWQ1NThkZmZhMTUyYzBkZDVhMGMwYjJiNWE4MTczMmExZGI1YjEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2VudW0gY2xhc3MgQ0RNUmVxdWlyZW1l
bnQgOiB1aW50OF90OworZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CitzdHJ1
Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBDRE1SZXN0cmljdGlvbnM7Cit9
CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlUHJveHk7Citz
dHJ1Y3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOworc3RydWN0IFJlbW90ZUNETUNv
bmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUNETVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUNETVByb3h5PiB7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gY3JlYXRlKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
Q0RNUHJpdmF0ZT4mJik7CisgICAgflJlbW90ZUNETVByb3h5KCk7CisKKyAgICBjb25zdCBSZW1v
dGVDRE1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLmdldCgpOyB9CisKKyAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkqIGZhY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KKworICAgIGJvb2wgc3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7
CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAgICBPcHRpb25hbDxTdHJpbmc+
IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJlbW90ZUNETVBy
b3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6Q0RNUHJpdmF0ZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+JiYp
OworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAg
IHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiYsIFdlYkNvcmU6OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcywgV2Vi
Q29yZTo6Q0RNUHJpdmF0ZTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOworICAg
IHZvaWQgY3JlYXRlSW5zdGFuY2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKT4mJik7Cisg
ICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJp
dmF0ZT4gbV9wcml2YXRlOworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiBt
X2NvbmZpZ3VyYXRpb247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5NTU1ODRlZGYxNzFhMTY1ZGM1M2YwZGFlNWYxYTM5NDhjNzU1ZjIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
bWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90
ZUNETVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIEdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
c3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlQ29uZmln
dXJhdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2Vz
cyBhY2Nlc3MpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
PiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pIEFzeW5jCisgICAgQ3JlYXRlSW5zdGFuY2UoKSAt
PiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5jaHJvbm91
cworICAgIExvYWRBbmRJbml0aWFsaXplKCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAK
aW5kZXggYzlkMmVlNDQ1YmQ1ZTZhOTRhYTQ4ZDU4YjllMDQyMTNiYzVhZjJlMC4uODcxZGVhNjBi
YjcyODIxYzYxMzU0MThmMjg3Yjk1ODM2MzBmYjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlTWVzc2FnZXMuaCIKQEAgLTQ3LDYgKzQ4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVBsYXllclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZh
Y3RvcnlQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKQEAgLTUyMyw5ICs1MjgsOSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRp
YVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYsIFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGluaXREYXRhKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5
cGUsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbml0RGF0
YS0+ZGF0YSgpKSwgaW5pdERhdGEtPmJ5dGVMZW5ndGgoKSkpLCBtX2lkKTsKIH0KIAogdm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcldhaXRpbmdGb3JLZXlDaGFuZ2VkKCkK
QEAgLTY5NSw2ICs3MDAsMzQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjprZXlBZGRl
ZCgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OmNkbUluc3RhbmNlQXR0YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9
IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCku
Z2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVyLT5jZG1JbnN0YW5jZUF0
dGFjaGVkKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQorCit2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmNkbUluc3RhbmNlRGV0YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9IG1fbWFu
YWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCkuZ2V0SW5z
dGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVyLT5jZG1JbnN0YW5jZURldGFjaGVk
KGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9IG1f
bWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCkuZ2V0
SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisgICAgICAgIG1fcGxheWVyLT5hdHRlbXB0VG9EZWNyeXB0
V2l0aEluc3RhbmNlKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkpOworfQorI2VuZGlmCisKKwor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVy
S2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIG1fcGxheWVyLT5zZXRTaG91bGRDb250aW51
ZUFmdGVyS2V5TmVlZGVkKHNob3VsZCk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCiB7CiAgICAgbV9wbGF5ZXItPmJl
Z2luU2ltdWxhdGVkSERDUEVycm9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCBmYWRiZTA5YTdkNTQz
ZDExYTE4ODY2MmFmYzc4YWVjNGQxZTRmODA3Li44YjM3YzA0MjBkYWFmM2EyOWIwNzYzMDk2ZmEw
MDQwYWRlZGNjYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTQ2LDYgKzQ2LDExIEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9CkBAIC0xNDEsNiArMTQ2LDE2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGtleUFkZGVkKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgdm9pZCBjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGNkbUluc3RhbmNlRGV0YWNoZWQoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJiYpOworICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZShSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7CisjZW5kaWYKKworI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZv
aWQgc2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sKTsKKyNlbmRpZgorCiAgICAg
dm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwogICAgIHZvaWQgZW5kU2ltdWxhdGVkSERD
UEVycm9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTAzMTg5
NjdmMjgwNmRiYzA1ZmJhNzVmYjhlMGM1OWIzNDFmZDJiYy4uMzRkMjQxOGNjZjhhYmJmY2NmNWRj
NDE4MjE0MDhhNjgwZWJhN2M1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4K
QEAgLTgyLDkgKzgyLDE2IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90
UmVmQ291bnRlZCB7CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgIyBT
ZXRDRE1TZXNzaW9uCiAgICAgS2V5QWRkZWQoKQotICAgICMgQ2RtSW5zdGFuY2VBdHRhY2hlZAot
ICAgICMgQ2RtSW5zdGFuY2VEZXRhY2hlZAotICAgICMgQXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0
YW5jZQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIENkbUluc3Rh
bmNlQXR0YWNoZWQoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJ
ZCkKKyAgICBDZG1JbnN0YW5jZURldGFjaGVkKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyIGluc3RhbmNlSWQpCisgICAgQXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5jZUlkKQorI2VuZGlmCisKKyNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyAgICBTZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQogI2Vu
ZGlmCiAKICAgICBCZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAwZTc3NDdjMjJlOGY1OTg5MjU0Yzk0ZmViMTg3Yjkw
YjNiMzRjY2E4Li4yNTZkYzk5MDViZjQ0NjZkMGMyYWQ1NzRkOGMzNjhhMTRiZTY5NjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIzNCw2ICsyMzQsOSBA
QCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAn
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUlk
ZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIn
LAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
OlJUQ0RlY29kZXJJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDVhZGIzN2Q4YjViZGVmMDBhNTY2ZjRhMDJkYjY0YmI5
NWRhYjAwMjQuLjhiZjhkM2Q1NWVhNTU0NjU0N2JjMTM3ZTQyNjg0MGE0YTExZjgxN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzIx
Nyw0ICszMjE3LDU5IEBAIE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjCiAgICAgcmV0dXJuIGJ1ZmZl
cjsKIH0KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2Fn
ZSkKK3sKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CisKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBlbmNv
ZGVyIDw8IG1lc3NhZ2VEYXRhOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZVR5cGUgdHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAh
YnVmZmVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIG1ha2VP
cHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+KHsgdHlwZSwgYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkgfSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYga2V5U3RhdHVzZXMpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
a2V5U3RhdHVzZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGtleVN0YXR1cyA6IGtleVN0YXR1
c2VzKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleSA9IGtleVN0YXR1cy5maXJz
dC5jb3B5UmVmKCk7CisgICAgICAgIGVuY29kZXIgPDwga2V5IDw8IGtleVN0YXR1cy5zZWNvbmQ7
CisgICAgfQorfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3Rvcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3Rvcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHVpbnQ2NF90
IGRhdGFTaXplOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXM7CisgICAga2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShkYXRhU2l6ZSk7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0
YVNpemU7ICsraSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXk7CisgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoa2V5KSB8fCAha2V5KQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6
OktleVN0YXR1cyBzdGF0dXM7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdHVzKSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAga2V5U3RhdHVzZXMu
dW5jaGVja2VkQXBwZW5kKHsga2V5LnJlbGVhc2VOb25OdWxsKCksIHN0YXR1cyB9KTsKKyAgICB9
CisgICAgcmV0dXJuIGtleVN0YXR1c2VzOworfQorI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA4OTg2MzU4M2YzYmMxNjY5MDk3NDZkZjYxODI2NDdk
NjkyNTlhZWMzLi5kMDdmMmJmNWIyMWI2MjBiOTE5ODEwMTk5NDBlMjc0NGVkMjUwMGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTYsNiAr
NTYsMTEgQEAKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
QWRkaXRpb25zLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFu
Y2VTZXNzaW9uLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdU
RiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtODM2LDYgKzg0MSwxOCBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAg
ICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUo
RGVjb2RlciYpOwogfTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3I+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJik7CisgICAg
c3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMK
IAogbmFtZXNwYWNlIFdURiB7CkBAIC05ODQsNCArMTAwMSwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdURkxvZ0xldmVsPiB7CiAgICAgPjsKIH07CiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQordGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2Fk
RmFpbHVyZTo6Tm9uZSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246OlNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlLAorICAgIFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVk
LAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpP
dGhlcgorICAgID47Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXMgPAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzLAorICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpVbmtub3duLAorICAgIFdlYkNvcmU6OkNETUluc3Rh
bmNlOjpIRENQU3RhdHVzOjpWYWxpZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0
YXR1czo6T3V0cHV0UmVzdHJpY3RlZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0
YXR1czo6T3V0cHV0RG93bnNjYWxlZAorICAgID47Cit9OworCisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBlZWRiN2U2ZGQ5YTllOWZhMjA3Y2U4YThkM2I2MjJj
ZDJmMGM5M2RmLi42ZDBlOGM2OGEwMjM4ODczYjY4NjQyMzgzZTViN2JjNWFhMDYzN2RjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKQEAgLTI3LDYgKzI3LDEwIEBAIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5j
cHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAorR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtNDEsNiArNDUsNyBAQCBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiAKKwogTmV0d29y
a1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwCkBAIC01NDEsNiArNTQ2LDEwIEBAIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRp
b1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKK1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5
cGVDYWNoZS5jcHAgQG5vLXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAxNWM1MjRmMzYyMTc3ZGRjNzEyNzI3NjI1NTc4ODcwNGNlYjM5ZGEz
Li41M2VkZTU2NmQzZGU4ZTk5NzU0Yjk2NjI1NDY0YjYxZWIxNzQ4YTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MDYsNiArMTcw
Niw3IEBACiAJCUNEMTlEMkVBMjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNo
ZXVyaXN0aWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEMTlEMkU4MjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDI4
NjVFRTIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFQzIyNTU1NjIw
MDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi87IH07CiAJCUNEMjg2NUVG
MjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFRDIyNTU1NjIwMDA2
MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovOyB9OworCQlDRDQ2NjE4MzI0
MDEwQTY3MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDY2
MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwODFFNzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENENDkxQjA2MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5oICovOyB9OwogCQlDRDQ5MUIwRDFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEIxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0Q0OTFCMEUxRTczMkU0
RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjBDMUU3MzJFNEQwMDAw
OTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CkBAIC0xNzI4
LDYgKzE3MjksMjAgQEAKIAkJQ0RBMjlBMkIxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJQ0RBOTNEQjAyMkY4QkNGNDAwNDkw
QTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTkzREFFMjJGOEJDRjMwMDQ5
MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBOTNEQjEyMkY4QkNG
NDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUYyMkY4
QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3Bw
ICovOyB9OworCQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
QzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAqLzsgfTsK
KwkJQ0RBQzIwQzMyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIw
QjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovOyB9
OworCQlDREFDMjBDNDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEI3MjNGQzJG
NzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovOyB9OworCQlDREFDMjBDNTIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8q
IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKKwkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RBQzIwQkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETS5oICovOyB9Owor
CQlDREFDMjBDOTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5oICovOyB9OworCQlDREFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIw
QzAyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLzsgfTsKKwkJQ0RBQzIw
Q0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzEyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovOyB9Owor
CQlDREFDMjBDRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzIyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwRjcyM0ZD
NzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBGMjIz
RkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKKwkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGOTIzRkM3MjZDMDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRUMy
M0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNE
TVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNEQzI4MzFEMjAxQkQ3OUQwMEU2RTc0NSAv
KiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5T
dGFja1ZpZXcuaCAqLzsgfTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmggKi87IH07CiAJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2Rl
U2lnbmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi87IH07CkBAIC00OTk3
LDYgKzUwMTIsMTAgQEAKIAkJQ0QxOUQyRTkyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5U
b3VjaFNlY2hldXJpc3RpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hT
ZWNoZXVyaXN0aWMuY3BwOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUMyMjU1
NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2
MTgwMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1Jl
cGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNS
ZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgxMjQwMTA1NjQw
MDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODIyNDAxMDU2NDAwNDdD
QTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNENDkxQjA1MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkxQjA2
MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDQ5MUIwQTFFNzMyRDEyMDAwMDkwNjYgLyogVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDM4LDYgKzUw
NTcsNDMgQEAKIAkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAv
KiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgcGF0aCA9IGlvcy9mdWxs
c2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRnVs
bHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHBhdGggPSBpb3MvZnVsbHNj
cmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1G
YWN0b3J5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3QzIz
RkIxRUY5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Q
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFEMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQUUyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMEIxMjNGQjU4RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIyMjNGQjU4RjIw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUluc3RhbmNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
QjMyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQUMyMEI2MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMy
MEI3MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmln
dXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Db25m
aWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI5MjNGQzJG
NzMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjBCQjIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5z
dGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCQzIzRkMyRjc0
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJEMjNGQzJGNzQwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQUMyMEJFMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwQkYyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUlkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUIyM0ZDMzgzODAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUQy
M0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBF
RTIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94
eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBF
RjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMDIzRkMz
ODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjEyM0ZDMzgzQTAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVz
c2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYyMjNG
QzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwRjMyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY0MjNGQzM4M0Ew
MDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVs
bHNjcmVlblN0YWNrVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcu
aDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDREMyODMxQzIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxs
c2NyZWVuU3RhY2tWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tGdWxsc2NyZWVuU3Rh
Y2tWaWV3Lm1tOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREMzODJGNzE3MjExNTA2MDA4QTJGQzMg
LyogQ0ZOZXR3b3JrLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ0ZOZXR3b3JrLmZyYW1l
d29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdv
cms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC01MzIyLDYgKzUzNzgsMjAgQEAK
IAkJCQk5QjVCRUMyOTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5LmNwcCAqLywKIAkJCQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5LmggKi8sCiAJCQkJOUI1QkVDMkUyNDAxMDE4QzAwNzBDNkVGIC8qIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCRjIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmNwcCAqLywKKwkJCQlDREFDMjBCQTIzRkMyRjc0
MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi8sCisJCQkJQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUz
IC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQlDREFDMjBCOTIzRkMyRjczMDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5jcHAgKi8sCisJCQkJQ0RBQzIwQzAyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLywKKwkJCQlDREFDMjBDMjIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJCMjNGQzJGNzQw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8sCisJCQkJQ0RBQzIwQjcyM0ZDMkY3
MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi8sCisJCQkJQ0RBQzIwQzEyM0ZDMkY3
NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovLAorCQkJCUNE
QUMyMEI2MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAq
LywKKwkJCQlDREFDMjBCRTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmNwcCAqLywKKwkJCQlDREFDMjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmggKi8sCisJCQkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCQzIzRkMyRjc0
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovLAogCQkJ
CTA3QjkzRkY1MjNBRjBDQjgwMDM2RjhFQSAvKiBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRp
b24uaCAqLywKIAkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQkwNzkyMzEzNDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8sCkBAIC01MzUyLDYgKzU0MjIsMTggQEAKIAkJCQk5QjEy
MjlDRjIzRkYyODE0MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW4gKi8sCiAJCQkJMDcxQkM1N0UyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlv
VHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDcxQkM1N0YyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90
ZUF1ZGlvVHJhY2tQcm94eS5oICovLAorCQkJCUNEQUMyMDc5MjNGQjFFMjEwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwICovLAorCQkJCUNEQUMyMDc4MjNGQjFFMjEwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCAqLywKKwkJCQlDREFDMjA3QzIzRkIxRUY5MDAy
MURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMy
MEIzMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCAqLywKKwkJ
CQlDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICov
LAorCQkJCUNEQUMyMEIxMjNGQjU4RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwQUUyM0ZCNTgyQjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8sCisJCQkJQ0RBQzIwQUQy
M0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2Vz
LmluICovLAorCQkJCUNEQUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5j
cHAgKi8sCisJCQkJQ0RBQzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lmgg
Ki8sCisJCQkJQ0RBQzIwODYyM0ZCMjE1ODAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lm1lc3Nh
Z2VzLmluICovLAogCQkJCTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggKi8sCiAJCQkJMDcyNUVGQUIyMzlBRTM4
NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICov
LApAQCAtOTc0OSw2ICs5ODMxLDIxIEBACiAJCQkJMUEwNDNCNUMxMjRENUU5RDAwRkZCRkI1IC8q
IFBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUE4RUZBNkUxMjUyQjg0MTAw
RjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQThFRkE2
RjEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMy
MEYyMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAorCQkJCUNEQUMyMEYzMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFDMjBGNTIz
RkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJQ0RBQzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
UHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0Q0NjYxODEyNDAx
MDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJQ0Q0NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzLmggKi8sCisJCQkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVD
MjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMTIzRkMzODNB
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMu
aCAqLywKKwkJCQlDREFDMjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1v
dGVDRE1Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjAyM0ZDMzgzOTAwMjFERUUzIC8q
IFJlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRC
QzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAogCQkJCTBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
QEAgLTEwNjU1LDYgKzEwNzUyLDE2IEBACiAJCQkJOUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8q
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
QjEyMjlDRDIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCNUJFQzJBMjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM3MjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM1MjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0YyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM0MjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0UyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RBQzIwQzMyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQjQyM0ZCNThGMjAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENBMjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUg
LyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1
MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXll
clRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTEyMzU0LDYgKzEyNDYxLDExIEBACiAJ
CQkJMkQ1NEMzMUIyMTJGNERBNjAwNDlDMTc0IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0
ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIxMjI5Q0UyM0ZGMjVGMjAwOENBNzUx
IC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQ0Q0NjYxODMyNDAxMEE2NzAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGOTIzRkM3
MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJl
bW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENzJB
MUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBkZmI5YjlhOTM4Yjk4NWQyODBhY2RlZGEwNDhiYzVh
NjZmNzdlNjFiLi5mOWI5NzAxODE3MmRhNTJiMWM3MDU0OTM5NTkzYzIxMWRmZWQwMTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgog
I2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC00NCw2
ICs0NiwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc1LDYgKzgxLDEzIEBAIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpzYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCitSZW1vdGVDRE1GYWN0b3J5JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y2RtRmFjdG9y
eSgpCit7CisgICAgcmV0dXJuICpXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJl
bW90ZUNETUZhY3Rvcnk+KCk7Cit9CisjZW5kaWYKKwogYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKQEAgLTEwMCw2ICsxMTMsMTIgQEAgYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWMKICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuZGlkUmVjZWl2ZU1l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCktPmRpZFJlY2VpdmVTZXNzaW9uTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogI2Vu
ZGlmCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA2YWNkY2JmMzk1NDUxYjZiNGM5NThlY2M5
MmI1MjAxNmI2Nzc3Mjg5Li4yYjU3MmMxYmFjYmZhNmI2YjI2ZjM1NjBjMjYyYTlhNDFiMGM3NWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5oCkBAIC0zOSw2ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5OworCiBjbGFzcyBHUFVQcm9j
ZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2Nlc3NDb25uZWN0aW9uPiwg
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8R1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIpCkBAIC01OCw2ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigp
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUNETUZh
Y3RvcnkmIGNkbUZhY3RvcnkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEdQVVByb2Nlc3ND
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcAppbmRleCBkODA5MDEwZDFiNWU0Mzc2OTFjNDI4MGQ2YTQ3MjM5MDg0ZjNm
ZTczLi45NWU3M2E2NTA5YTJhMzI5MzBlYzk0Zjk1YWMxMzZjNmYwODBmNGI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC00OSw2ICs0OSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdURkxv
Z0NoYW5uZWwgTG9nTWVkaWE7CkBAIC05MTIsMTkgKzkxNiwyMiBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNo
ZWQoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3Rh
bmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0
YW5jZUF0dGFjaGVkKGRvd25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRp
ZmllcigpKSwgbV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1J
bnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2Up
KQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6Q2RtSW5zdGFuY2VEZXRhY2hlZChkb3duY2FzdDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5z
dGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShD
RE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAo
aXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVy
KCkpLCBtX2lkKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdG
b3JLZXlDaGFuZ2VkKCkKQEAgLTkzMiw2ICs5MzksMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKICAgICBtX3BsYXllci0+d2FpdGluZ0Zv
cktleUNoYW5nZWQoKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmluaXRp
YWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBJUEM6
OkRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSkKK3sKKyAgICBhdXRvIGluaXREYXRhQnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSk7Cisg
ICAgbV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwg
V1RGTW92ZShpbml0RGF0YUJ1ZmZlcikpOworfQorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAg
LTkzOSw2ICs5NTIsMTMgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdG
b3JLZXkoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQorewor
ICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpT
ZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3VsZCksIG1faWQpOworfQorI2VuZGlm
CisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaAppbmRleCA1NTlmZDY1MDIwODhlYmIzN2Q3NmVhN2Q2OTM1NTcyNjM4ZjIx
MDIzLi43YWI2NjUyOWE1MTk3MzU4MzFjZmJjYzg5OTE4YmJhNzc3YWM1Y2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQgd2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKKyAg
ICB2b2lkIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYsIElQQzo6
RGF0YVJlZmVyZW5jZSYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKQEAgLTMxNSw2ICszMTYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHdhaXRpbmdG
b3JLZXkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBzZXRTaG91bGRD
b250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wpIGZpbmFsOworI2VuZGlmCisKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkg
Y29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihXZWJDb3Jl
OjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCBhNTA3NzZkZGFhNDI3NmMxYzZkZGU3ZTVkYjA3
YmY5OGE2N2FlOGY1Li45NDQ4ZGUwMmYxYWM5ZTQ2NDM4MzNjMmQ1NTM3NTljOTgzMGI4MTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAtNzUsNiAr
NzUsNyBAQCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRl
ZCB7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIFdhaXRpbmdGb3JLZXlDaGFu
Z2VkKCkKKyAgICBJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChTdHJpbmcgaW5pdERhdGFU
eXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UgaW5pdERhdGEpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5MWI0MGYzYjljNzViM2MxMTBi
NjM2ZjY4Y2E1NzA1YTI1YjU0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE0uaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0RNUmVzdHJpY3Rpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPiBSZW1vdGVDRE06OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETT4obmV3IFJlbW90ZUNETShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlk
KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE06OlJlbW90ZUNETShX
ZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSWRlbnRpZmllciYm
IGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFj
dG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQor
ICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBTdXBw
b3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFj
dG9yeSkgeworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpHZXRTdXBw
b3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbiksIGFjY2VzcyksIFdURk1v
dmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBw
b3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIFJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29u
c3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIHdp
bGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
cmVxdWVzdExpY2Vuc2UoKS4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ0RNUmVxdWlyZW1lbnQg
UmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25z
JiByZXN0cmljdGlvbnMpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworfQorCitDRE1SZXF1aXJlbWVudCBS
ZW1vdGVDRE06OnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZDsK
K30KKworYm9vbCBSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJP
cmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitS
ZWZQdHI8Q0RNSW5zdGFuY2U+IFJlbW90ZUNETTo6Y3JlYXRlSW5zdGFuY2UoKQoreworICAgIGlm
ICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbjsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6Q3JlYXRlSW5zdGFu
Y2UoKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5jZTo6UmVwbHkoaWQs
IGNvbmZpZ3VyYXRpb24pLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKG1ha2VX
ZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKTsKK30KKwordm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBp
ZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94
eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVy
LCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4K
KyAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOworfQorCitPcHRpb25hbDxTdHJpbmc+IFJlbW90
ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGNvbnN0Cit7
CisgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKCkuCisgICAgcmV0dXJuIHNlc3Npb25J
ZDsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2ZDZmMzY5NzliMDQ1MmNmOTZhNTJkMThmNmFk
MGI3ZjMzNDhlOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE0gZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6Q0RNUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE0+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNE
TUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2aXJ0dWFsIH5S
ZW1vdGVDRE0oKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNKFdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25m
aWd1cmF0aW9uJiYpOworCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLCBM
b2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKSBmaW5h
bDsKKworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzQ29u
ZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdl
YkNvcmU6OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Cisg
ICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVt
ZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJD
b3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1SZXF1
aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29u
c3QgZmluYWw7CisgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3Jp
Z2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUlu
c3RhbmNlKCkgZmluYWw7CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKworICAgIFZlY3Rv
cjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KKyAgICBWZWN0b3I8
QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZFJvYnVzdG5lc3NlczsgfQorICAgIGJvb2wgc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRp
b24uc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7IH0KKyAgICBib29sIHN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNTZXNzaW9u
czsgfQorCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVt
b3RlQ0RNSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNjJjNDY0ZmRmZGNkOGMzNTc1NmIwZTM4ZGFkMGY4OTM5MDU4ODY3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1Db25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24geworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0
YVR5cGVzOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7Cisg
ICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICBib29sIHN1cHBvcnRzU2Vz
c2lvbnM7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRl
ZEluaXREYXRhVHlwZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkUm9idXN0bmVzc2Vz
OworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgICAg
ICBlbmNvZGVyIDw8IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9y
PEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAgICBkZWNvZGVyID4+
IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFU
eXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9u
YWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGRl
Y29kZXIgPj4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAgICBpZiAoIXN1cHBvcnRlZFJv
YnVzdG5lc3NlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGRlY29k
ZXIgPj4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGlmICghc3VwcG9ydHNT
ZXJ2ZXJDZXJ0aWZpY2F0ZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgICAgIGRlY29kZXIg
Pj4gc3VwcG9ydHNTZXNzaW9uczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1Nlc3Npb25zKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAg
ICAgICAgIFdURk1vdmUoKnN1cHBvcnRlZEluaXREYXRhVHlwZXMpLAorICAgICAgICAgICAgV1RG
TW92ZSgqc3VwcG9ydGVkUm9idXN0bmVzc2VzKSwKKyAgICAgICAgICAgICpzdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcywKKyAgICAgICAgICAgICpzdXBwb3J0c1Nlc3Npb25zLAorICAgICAgICB9
fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZjJkM2Q1YzYxMGFmNTRhZDFkM2VmNGZhNjFjNDU5NjY2NTI5N2Mx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1GYWN0b3J5LmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1GYWN0b3J5KFdlYlByb2Nlc3Mm
IHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKworUmVtb3RlQ0RNRmFj
dG9yeTo6flJlbW90ZUNETUZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQ0RNRmFj
dG9yeTo6cmVnaXN0ZXJGYWN0b3J5KFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGZhY3RvcmllcykKK3sK
KyAgICBmYWN0b3JpZXMuYXBwZW5kKHRoaXMpOworfQorCitjb25zdCBjaGFyKiBSZW1vdGVDRE1G
YWN0b3J5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVDRE1GYWN0b3J5
IjsKK30KKworR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZUNETUZhY3Rvcnk6OmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3ND
b25uZWN0aW9uKCk7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxz
ZTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0p
LCBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVw
bHkoc3VwcG9ydGVkKSwgeyB9KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitzdGQ6OnVu
aXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gUmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKQoreworICAgIFJlbW90ZUNETUlkZW50aWZpZXIgaWQ7CisgICAgUmVt
b3RlQ0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIGdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJv
eHk6OkNyZWF0ZUNETShrZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpDcmVhdGVDRE06OlJlcGx5KGlkLCBjb25maWd1cmF0aW9uKSwgeyB9KTsKKyAgICBpZiAoIWlk
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gUmVtb3RlQ0RNOjpjcmVhdGUo
bWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsK
K30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjphZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIgaWQsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vz
c2lvbikKK3sKKyAgICBBU1NFUlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nl
c3Npb25zLnNldChpZCwgV1RGTW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFj
dG9yeTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlk
KQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9u
cy5yZW1vdmUoaWQpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OmRpZFJlY2VpdmVTZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNv
ZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTg5ZWQwNjAwMWM2NjNiYWYxODVkYjkzMTc0OTdlOTJjZmJmYzA2YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFj
dG9yeS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNl
dHRpbmdzOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBE
ZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb247CitjbGFzcyBSZW1vdGVDRE07CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb247
CitjbGFzcyBXZWJQcm9jZXNzOworCitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5IGZpbmFsCisgICAg
OiBwdWJsaWMgV2ViQ29yZTo6Q0RNRmFjdG9yeQorICAgICwgcHVibGljIFdlYlByb2Nlc3NTdXBw
bGVtZW50CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90
ZUNETUZhY3RvcnkoV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3Rvcnko
KTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlBy
b2Nlc3MmIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAgIEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbigpOworCisgICAgdm9pZCByZWdp
c3RlckZhY3RvcnkoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYpOworCisgICAgdm9pZCBk
aWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
ciwgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4mJik7CisgICAgdm9pZCByZW1vdmVTZXNz
aW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworCitwcml2YXRlOgorICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiBjcmVhdGVDRE0oY29uc3QgU3Ry
aW5nJikgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSBm
aW5hbDsKKworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwg
UmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxS
ZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPj4gbV9jZG1zOwor
ICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmll
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJlZTNhMzgxOWMxNzA3YjU1OGIzZmQ5YWFhODgxNjMxNTgzOTJmYWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworZW51bSBSZW1vdGVDRE1JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVD
RE1JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT47
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTUxYTBlMGI1MmQyZGI1YjM2NmU4YWI2Njk2OGM1NjE0NjJlZGQ5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2UuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNz
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK1JlZjxSZW1vdGVDRE1JbnN0YW5jZT4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZShX
ZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyJiYgaWQsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRp
b24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2UoV1RGTW92
ZShmYWN0b3J5KSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKwor
UmVtb3RlQ0RNSW5zdGFuY2U6OlJlbW90ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFj
dG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9y
eShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQorICAg
ICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBBbGxvd0Rpc3Rp
bmN0aXZlSWRlbnRpZmllcnMgZGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50
U3RhdGUgcGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhGYWlsZWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNl
UHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9p
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2Fs
bGJhY2soRmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjZXJ0
aWZpY2F0ZS5nZXQoKSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5KQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0
b3J5KSwgbV9pZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZVNlc3Npb24oKQoreworICAgIGlmICghbV9m
YWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIgaWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6Q3JlYXRlU2Vzc2lvbigpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3Jl
YXRlU2Vzc2lvbjo6UmVwbHkoaWQpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQp
KTsKKyAgICBtX2ZhY3RvcnktPmFkZFNlc3Npb24oaWQsIHNlc3Npb24uY29weVJlZigpKTsKKyAg
ICByZXR1cm4gc2Vzc2lvbjsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44OTVmNDliOTczOWQyNDc5ZDU1NWRmOGZiMDI3ZWRmZWNhOWMzNDA0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3Vy
YXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBSZW1vdGVDRE1JbnN0YW5jZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5jZSB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2UoKSA9IGRlZmF1bHQ7Cisg
ICAgc3RhdGljIFJlZjxSZW1vdGVDRE1JbnN0YW5jZT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RN
RmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiYmKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
ZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2
YXRlOgorICAgIFJlbW90ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwg
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbiYmKTsKKworICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQorICAgIHZv
aWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lz
dGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZp
bmFsOworICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIG1fY29uZmln
dXJhdGlvbjsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DRE1fSU5TVEFOQ0Uo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZSwgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkltcGxlbWVu
dGF0aW9uVHlwZTo6UmVtb3RlKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MzJkNzJlN2NlNGI4NTNmMmQzYjkzNDU1ZTE5MjgxYzQx
OWZhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNjAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24geworICAgIFN0cmluZyBrZXlT
eXN0ZW07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGtleVN5c3Rl
bTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0
aW9uYWw8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4ga2V5U3lzdGVtOworICAgICAg
ICBkZWNvZGVyID4+IGtleVN5c3RlbTsKKyAgICAgICAgaWYgKCFrZXlTeXN0ZW0pCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAg
ICAgV1RGTW92ZSgqa2V5U3lzdGVtKSwKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGZmZGU2OTFjM2U4OTViODg1OWU2MjA1YTcxZTExNWZhOWI0ZmUwYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2VudW0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA1Y2NiZTIz
OTZmOWIyZjg2YzljNmIyNmYzM2UxYmEyMzViMDE3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNw
cApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3ND
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+IFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBm
YWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdURk1vdmUoZmFj
dG9yeSksIFdURk1vdmUoaWQpKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5
LCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCisgICAgOiBtX2ZhY3Rv
cnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKK3sK
K30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwg
ZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJl
cXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVh
bGl6YXRpb24sIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtZXNzYWdl
LmJ1ZmZlcigpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
LCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBjYWxsYmFjayhtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxs
KCksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lv
bklkLCB0eXBlLCBXVEZNb3ZlKHJlc3BvbnNlKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYg
Y2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9u
YWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IGNhbGxiYWNrKHNlc3Npb25XYXNDbG9zZWQsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3Zl
KGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9u
TG9hZEZhaWx1cmU6Ok90aGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Npb24o
dHlwZSwgc2Vzc2lvbklkLCBvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91Ymxl
PiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wg
c3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIG11dGFibGUgeworICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJh
dGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCwg
bG9hZEZhaWx1cmUpOworICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENs
b3NlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsK
KyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Q2xvc2VTZXNzaW9u
KHNlc3Npb25JZCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayh7IH0s
IFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vz
c2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
IChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAg
ICAgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gV1RGOjpudWxs
b3B0OworICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCisg
ICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNl
Tm9uTnVsbCgpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92
ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAgfSwg
bV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAoIW1f
ZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6U3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCksIG1faWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcykKK3sKKyAgICBpZiAobV9jbGllbnQpCisg
ICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSk7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZW5kTWVzc2FnZShXZWJDb3Jl
OjpDRE1NZXNzYWdlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBt
ZXNzYWdlKQoreworICAgIGlmIChtX2NsaWVudCAmJiBtZXNzYWdlLmJ1ZmZlcigpKQorICAgICAg
ICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UodHlwZSwgbWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9u
TnVsbCgpKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlc3Npb25JZENo
YW5nZWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICBtX2NsaWVudC0+c2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpOworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYyZDA1ZjhiZjk2M2Vj
YzUxMjYzMmEzYWFjYzA5MDQ0OWViNWM3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTAs
MCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUlu
c3RhbmNlU2Vzc2lvbi5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24gZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJs
aWMgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsKKyAgICB2aXJ0dWFs
IH5SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllciYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
KworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNW
ZWN0b3ImJik7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYpOworICAgIHZvaWQgc2Vzc2lvbklkQ2hh
bmdlZChjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9
IFdURk1vdmUoY2xpZW50KTsgfQorICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xp
ZW50ID0gbnVsbHB0cjsgfQorICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5
OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
ICAgIFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YzIzOTJlN2VmODYyMDQ2
MjFkMjg0MTQzOGI1ZWRmNGQzODE1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5p
bgpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCitt
ZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gTm90UmVmQ291bnRlZCB7CisgICAg
VXBkYXRlS2V5U3RhdHVzZXMoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3Iga2V5U3RhdHVzZXMpCisgICAgU2VuZE1lc3NhZ2UoZW51bTp1aW50OF90IFdlYkNvcmU6
OkNETU1lc3NhZ2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBtZXNz
YWdlKQorICAgIFNlc3Npb25JZENoYW5nZWQoU3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4NmFjZDEyNjVhZjBjODQ2Mzg4ZTIzZjljY2ExNmQ5MDIzMzhmZTEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworZW51bSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZSB7IH07
Cit1c2luZyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRp
ZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IDJhYWU1ZTU0NDUxMDg0
NzliZDNjZDMzOWFmYTZiZjZkMmRkYWJjZjYuLjVkN2E4YjhkMTEyNGIyYTUyOGFkNzNiZGM5NmQ5
YTk3ODBkYzIwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0
b3J5Lmg+CkBAIC01MSw3ICs1MywxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbj4gV2ViTWVkaWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiB2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyQ0RN
RmFjdG9yaWVzKFZlY3RvcjxXZWJDb3JlOjpDRE1GYWN0b3J5Kj4mIGZhY3RvcmllcykKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3Rvcmllcyhm
YWN0b3JpZXMpOworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9j
ZXNzKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3ND
b25uZWN0aW9uKCkuY2RtRmFjdG9yeSgpLnJlZ2lzdGVyRmFjdG9yeShmYWN0b3JpZXMpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxh
dGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTcwYTliYjIzN2Fj
Mzk4ZDZlMTgyZjllN2U5ZTM3NzQ2NDFjYjk4ZC4uNzczYTU5Y2RhMWQ0OWI2ZDVjZGFlYWU1Yjc2
YjJhMGRmYmE5ZTZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTMyMiw2ICszMjIsOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlmCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggNWYwNGViOWFmY2I2NGZmNDk4ODQxYTQ2YTQ3MTcxNDk3MmVjNjlhZC4uNTFjMmY1
ZTUzYjM0MGMyMjA1Zjc4OWI0YjM3M2EyZTUwN2JiNmViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTc0LDYgKzE3NCwxMCBAQAogI2luY2x1ZGUgIkxpYldl
YlJUQ0NvZGVjcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lu
Y2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9H
X1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQog
I2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nlc3Np
b25JRD0lIiBQUkl1NjQgIl0gV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9HX1NF
U1NJT05fSUQsICMjX19WQV9BUkdTX18pCiAKQEAgLTI0MCw2ICsyNDQsMTAgQEAgV2ViUHJvY2Vz
czo6V2ViUHJvY2VzcygpCiAgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXI+KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBhZGRTdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCk7CisjZW5k
aWYKKwogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392422</attachid>
            <date>2020-03-04 09:12:22 -0800</date>
            <delta_ts>2020-03-04 09:21:54 -0800</delta_ts>
            <desc>Patch for landing: Part 3: RemoteCDM</desc>
            <filename>bug-208090-20200304091221.patch</filename>
            <type>text/plain</type>
            <size>172236</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUxODRmODVlMzhkNjEx
ZGUxMDQ1ZGMzNThmMzY3MWYwMGYwYmI4Yy4uNDExZDkxNDJiNDFlZGMyMDQ1YjAxZDcxOGM2M2Yx
NDEwYTZjNDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGV4cG9ydCBtYWNyb3MgdG8gQ0RNRmFjdG9yeTo6
cmVnaXN0ZXJlZEZhY3RvcmllcygpLgorCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRmFjdG9yeS5oOgorCiAyMDIwLTAzLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAoQ29va2llQ2FjaGUpIFVuYWJsZSB0byBsb2cg
aW50byBIdWx1LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTc2Y2I0ODY4ZjhlYTBkNWM0ZjY2Nzc0YjBmNDk1
ZjY1ZWFkYzc2Li40NTBlN2UzNTJmM2VhYjhmMzU2MGUxNjViNzNhYmU5M2MwODQ2OTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGlu
IHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90
ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAg
b2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBl
eGlzdGluZyBDRE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5ICB3aGVuIHRoZSBH
UFUgcHJvY2VzcyBpcyBkaXNhYmxlZCwKKyAgICAgICAgYnkgbWFraW5nIGluaXRpYWxpemF0aW9u
IG9mIHRoZSBDRE0gZmFjdG9yaWVzIGNvbnRpbmdlbnQgdXBvbiB0aGUgInVzZSBHUFUiIHNldHRp
bmcuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2Rt
RmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6ZmFjdG9yeUZvcktleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkSW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojpjb25maWd1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5zdGFu
Y2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6On5SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNUHJveHk6OmZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpSZW1vdGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0luaXRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lvbklkIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1GYWN0b3J5Ojp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZh
Y3Rvcnk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5Ojpy
ZW1vdmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVj
ZWl2ZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9m
S2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTAzICBKaXRl
biBNZWh0YSAgPGptZWh0YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5h
dGl2ZSBTZXJ2aWNlcyBTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKaW5kZXggNTI1Yzg0ZWNiZTc5MWY0MGI1NDdmYjdm
YWZkZTlkMDNiYTgxMGJhZS4uZmIzNTBkNDg1NWExYWIzM2IxYjZkMWM0ZGNlNzNhN2U3MjZhNjUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUZhY3RvcnkuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
c3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3Rv
cmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShD
RE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5yZWdpc3RlckZh
Y3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggODZmMDFiMzlhMDQ3MjhjMmMwYmZmNjdlNWJkMzkzZjA5MWI3
N2Y5ZC4uOWY5NDZmODQ5N2FmMjNiNGFmYTUxYjc5MTg0MTg1MTg4NjBhYzViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTgsNiArMTgs
MTAgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTExMiw2ICsxMTYsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA2NDY0ZDgzODlmYjUzZjUy
NzUwNzA1MzljOTgxMGZiMmQ4Y2NiMzE5Li5hOTZjMmNmZGRkNDZiMzU5MjM4ZTk2MjM0M2E5OTIy
MTA0ZWVhNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKQEAgLTEzNyw2ICsxMzcsMjEgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNDM2ZTRiNDIyNGNiMDQ1
YzllYWIzYTZjNzA1NDMwYmQ1MjUzMzMzNC4uNDVlZTNkYjdlZDdlMTMzNzJjOGE3NWFkNTU1YTE2
NTg3ZjY3ZDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTUxLDYgKzE1MSwx
MSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyIFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVD
RE1Qcm94eSBcCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAorICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAog
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXll
clByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2YTJjODcwZjdhYWExYjBkYjAwMGVmODg4MjdjOWEw
ZjYxZGNmMjViLi42Y2YxYzMwYjNlMzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC02MCwxMCArNjAsMTggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VzLmgiCisjZW5kaWYKKworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTksNiArMjA3LDE2IEBAIExpYldlYlJUQ0NvZGVjc1By
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVDRE1GYWN0b3J5
UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSgpCit7Cisg
ICAgaWYgKCFtX2NkbUZhY3RvcnlQcm94eSkKKyAgICAgICAgbV9jZG1GYWN0b3J5UHJveHkgPSBt
YWtlVW5pcXVlPFJlbW90ZUNETUZhY3RvcnlQcm94eT4oKnRoaXMpOworCisgICAgcmV0dXJuICpt
X2NkbUZhY3RvcnlQcm94eTsKK30KKyNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcC5lbnN1cmUocmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIFsmXSgpIHsKQEAgLTI2OSw2ICsyODcsMjggQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHko
KS5kaWRSZWNlaXZlQ0RNTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKQEAgLTI5NCw2ICszMzQsMjggQEAgYm9vbCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICB9CiAjZW5kaWYKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2Rt
RmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQ
cm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1G
YWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCkBAIC0z
MDIsNyArMzY0LDcgQEAgY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpt
ZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKIH0KIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQogY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9n
cHVQcm9jZXNzLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDc0NzE1YzgwYzU0NWJlYWZlYzNmNmI3ZTA5ODRlY2E1MGNiYTI2NjkuLmEzZWNhNWM4
ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDgsNiArNDgs
NyBAQCBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CiBjbGFz
cyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsK
IGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKQEAgLTg1
LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciYgc2Vzc2lvbk1hbmFnZXIoKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEKTsKIApAQCAtMTM4LDYgKzE0MywxMCBAQCBwcml2YXRlOgogICAgIAogICAg
IHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcCA9IEhhc2hNYXA8UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNYXAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHlNYXA7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKaW5k
ZXggMTZhNThlZGE1NDA2YmViZTc2OTNiMTlmNjgxNjZmYzJmZjlmNzBjZi4uYTM2MWM0MjBhNjlh
MzgzNGVmMjg0MWY1ZDM2MGMwZjgzMDE5ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTM1LDYg
KzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1faWRlbnRpZmllcihp
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaAppbmRleCBkNGM3MDZhMmY3NDMzNjI1MDQ0YTQ0ZGIzNWYwNmFlNWY5ZWU4
NTEwLi5lODVmNTcyZTFhMDBhYTEwODZmNWZiZjIyZjFmN2JmMTAyYzRkMmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94
eS5oCkBAIC0zMiwxNSArMzIsMjAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVHJhY2tQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFja0Jhc2UuaD4KIAorbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OwogCiBjbGFzcyBSZW1vdGVBdWRpb1RyYWNrUHJveHkgZmluYWwKICAgICA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb1RyYWNrUHJveHksIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwcml2YXRlIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUF1ZGlvVHJhY2tQcm94eT4g
Y3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBBdWRpb1Ry
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9UcmFj
a1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb1RyYWNrUHJveHkocGxheWVyLCBpZCwg
V1RGTW92ZShjb25uZWN0aW9uKSwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQpAQCAtNTAsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RyYWNr
UHJpdmF0ZS0+c2V0RW5hYmxlZChlbmFibGVkKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZUF1
ZGlvVHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgQXVkaW9UcmFja1ByaXZhdGUmKTsK
KyAgICBSZW1vdGVBdWRpb1RyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlJik7CiAKICAgICAvLyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudAog
ICAgIHZvaWQgZW5hYmxlZENoYW5nZWQoYm9vbCkgZmluYWw7CkBAIC02Nyw3ICs3Miw3IEBAIHBy
aXZhdGU6CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgbV9wbGF5ZXI7CiAgICAgVHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGU+
IG1fdHJhY2tQcml2YXRlOworICAgIFJlZjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZT4gbV90
cmFja1ByaXZhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmNiYWY2YTU4NGI0ZjI3YjFkMmFhMjE3MmVhNWJjMWEzNDRlNTc0MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAi
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+Cisj
aW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDog
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZUNE
TUZhY3RvcnlQcm94eTo6flJlbW90ZUNETUZhY3RvcnlQcm94eSgpID0gZGVmYXVsdDsKKworc3Rh
dGljIENETUZhY3RvcnkqIGZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCit7CisgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3Rv
cmllcygpOworICAgIGF1dG8gZm91bmRJbmRleCA9IGZhY3Rvcmllcy5maW5kTWF0Y2hpbmcoWyZd
IChhdXRvJiBmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5LT5zdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0pOyB9KTsKKyAgICBpZiAoZm91bmRJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhY3Rvcmllc1tmb3VuZEluZGV4XTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWZhY3RvcnkpIHsK
KyAgICBhdXRvIGZhY3RvcnkgPSBmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSk7CisgICAg
ICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RNKGtleVN5c3RlbSk7CisgICAgaWYg
KCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcm94eSA9IFJlbW90ZUNETVByb3h5OjpjcmVhdGUo
bWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUocHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRp
ZmllciA9IFJlbW90ZUNETUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gcHJveHktPmNvbmZpZ3VyYXRpb24oKTsKKyAgICBh
ZGRQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgY29tcGxldGlvbihXVEZN
b3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAg
Y29tcGxldGlvbihmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSkpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHBy
b3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlm
aWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZh
Y3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5z
dGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAg
aW5zdGFuY2UtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
Cit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQor
eworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
ZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7
CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9u
cy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KGNvbnN0IFJlbW90ZUNETUlkZW50
aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHkpCit7Cisg
ICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlk
LCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiBpZCkKK3sKKyAgICBBU1NFUlQobV9w
cm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZShSZW1vdGVDRGNvbnN0IE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eT4mJiBpbnN0YW5jZSkKK3sKKyAgICBBU1NFUlQoIW1faW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9pbnN0YW5jZXMuc2V0KGlkLCBXVEZNb3ZlKGluc3RhbmNlKSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZShSZW1vdGVDRGNvbnN0IE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhp
ZCkpOworICAgIG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNl
UHJveHkqIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlk
KTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlQ0RN
SW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9z
ZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNl
c3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24o
UmVtb3RlQ0RNSW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQpCit7CisgICAgQVNT
RVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiOGEyOGY0YzNmNGRk
Mzc3MjgyM2NhNzA1MWNkMzY2ZDFkY2Y0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CitjbGFzcyBS
ZW1vdGVDRE1Qcm94eTsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0
b3J5UHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNv
ZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHko
Y29uc3QgUmVtb3RlQ0RNSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94
eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJik7
CisKKyAgICB2b2lkIGFkZEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmKTsKKyAgICB2b2lk
IHJlbW92ZUluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYpOworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKGNvbnN0IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXImLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisg
ICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisg
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETVByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4+IG1faW5zdGFu
Y2VzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNDdjNWU2ZTYxYzQyMDc4MzFkYTBiZDExOGE2YWFlYjQwZDMzMTM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4g
UmVtb3RlQ0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZUNETShTdHJp
bmcga2V5U3lzdGVtKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3Vz
CisgICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSkgLT4gKGJvb2wgcmVzdWx0
KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTI0OGZkZmM4MmQ5NGFlNmUwZWQxNzViMzUxYzFiMjZiNTVhMzEzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94
eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2KQoreworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiY+KHsKKyAg
ICAgICAgcHJpdi0+a2V5U3lzdGVtKCksCisgICAgfSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShX
VEZNb3ZlKGNkbSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30K
KworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRy
PFJlbW90ZUNETVByb3h5PiYmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6
IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKKyAg
ICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpID0gZGVmYXVsdDsK
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgYWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIG1faW5zdGFu
Y2UtPmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBhbGxvd0Rpc3Rp
bmN0aXZlSWRlbnRpZmllcnMsIGFsbG93UGVyc2lzdGVudFN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRp
b24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBjZXJ0aWZpY2F0ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYg
KCFjZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKENETUluc3RhbmNl
OjpGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0YW5jZS0+c2V0
U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShjb21wbGV0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBtX2lu
c3RhbmNlLT5zZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJiBjb21wbGV0aW9uKQor
eworICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7Cisg
ICAgaWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9jZG0gfHwgIW1fY2RtLT5mYWN0b3J5KCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8g
aWRlbnRpZmllciA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNy
ZWF0ZShtYWtlV2Vha1B0cihtX2NkbS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVhc2VOb25OdWxs
KCksIGlkZW50aWZpZXIpOworICAgIG1fY2RtLT5mYWN0b3J5KCktPmFkZFNlc3Npb24oaWRlbnRp
ZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MTEyZDVmODRiODg0NzMx
OWRjNDA0ZmVhMTUwNmM4YjFlZjMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUlu
c3RhbmNlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNSW5zdGFuY2U7CitzdHJ1Y3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciAgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+
JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJik7CisgICAgflJlbW90ZUNETUluc3RhbmNl
UHJveHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2U7IH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdl
YkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdXNpbmcg
U3VjY2Vzc1ZhbHVlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZTsKKyAgICB1
c2luZyBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzOworICAgIHVzaW5nIEFsbG93UGVyc2lzdGVudFN0
YXRlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOworCisgICAg
Ly8gTWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNj
ZXNzVmFsdWUpPiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1Y2Nlc3NWYWx1
ZSk+JiYpOworICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4gbV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNl
OworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmln
dXJhdGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lv
bnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NTBlODUzNDFjMmViMzViYjZlYzA4MDk1ZDVhMDA0ZWNjYTEzOWY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3Nh
Z2VzIC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRl
U2Vzc2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIg
aWQpIFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVjdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGVudW06Ym9v
bCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkFsbG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpIC0+IChlbnVtOmJv
b2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBBc3luYworICAg
IFNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0
aWZpY2F0ZSkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IHN1Y2Nlc3MpIEFzeW5jCisgICAgU2V0U3RvcmFnZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5
KQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0NmNmZDA1OWMzMTM5NGYxNmM2MWRlMTliMGZlM2MzNGJmYTRlNzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50aWZp
ZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHktPm1f
c2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Npb25Q
cm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAs
IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXRE
YXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFpbml0RGF0YS5idWZmZXIoKSkg
eworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUgQ0RNUHJpdmF0
ZTo6c3VwcG9ydHNJbml0RGF0YSgpIGNoZWNrIGhlcmU6CisgICAgaWYgKCFtX2NkbS0+c3VwcG9y
dHNJbml0RGF0YShpbml0RGF0YVR5cGUsICppbml0RGF0YS5idWZmZXIoKSkpIHsKKyAgICAgICAg
Y29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXRE
YXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24g
PSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9
KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5z
ZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxldGlv
bikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24o
dHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRlOjpzYW5pdGl6
ZVJlc3BvbnNlKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFJlc3BvbnNlID0gbV9j
ZG0tPnNhbml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKTsKKyAgICBpZiAoIXNhbml0
aXplZFJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UsIHsgfSwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0aXplZFJlc3Bv
bnNlLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0g
KGJvb2wgc2Vzc2lvbkNsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGlt
ZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUo
ZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vz
c2lvbklkLCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikK
K3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplU2Vzc2lvbklkKCkg
Y2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFNlc3Npb25JZCA9IG1fY2RtLT5zYW5pdGl6
ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgIGlmICghc2FuaXRpemVkU2Vzc2lvbklkKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRj
aGVkU2Vzc2lvblR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9u
LT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJh
dGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwg
V1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vl
ZGVkLCBmYWlsdXJlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5jbG9zZVNlc3Npb24o
c2Vzc2lvbklkLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUg
eyBjb21wbGV0aW9uKCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAg
bV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRT
ZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoZXhwaXJlZFNlc3Np
b25zRGF0YSkKKyAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7
CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJl
ZFNlc3Npb25EYXRhUmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorewor
ICAgIG1fc2Vzc2lvbi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0
YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdlKHR5cGUsIFdU
Rk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBm
YWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTgxNTM1NjZmNjQyZmM2OGEzNDU2NGU3NDY3NDUwZmI0NDlkYTk0MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
CisgICAgLy8gVHlwZXMKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I7CisgICAgdXNpbmcgTWVz
c2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAgICB1c2luZyBT
ZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZTsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgYm9vbCwgYm9vbCk+OworICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYm
LCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wpPjsKKyAgICB1
c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2Fn
ZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHVzaW5nIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3Rv
ciYmLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGJvb2wpPjsK
KyAgICB1c2luZyBTdG9yZVJlY29yZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PjsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJik7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4sIExv
YWRTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYpOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKKworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAor
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOworICAg
IHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4gbV9j
ZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gbV9zZXNzaW9uOworICAg
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41YjkzMTk2YzA5NWUwMzRiNjQyMWY4ZWU2MzhhZTA5ZWZjZTIwZTk0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBOb3RSZWZDb3Vu
dGVkIHsKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Okxp
Y2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9u
SWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNzaW9uV2FzQ2xv
c2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
cj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luKSAt
PiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+
IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25h
bDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3Vj
Y2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9u
TG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9uKFN0cmluZyBz
ZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3RyaW5nIHNlc3Np
b25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlKSAtPiAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXMs
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmluZyBzZXNzaW9u
SWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhYzkyZmQwOTdhZjFjZjliOGZmOGJiNDBk
YjFiZWE1ZTNhODBhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0
ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVm
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygp
LAorICAgICAgICBwcml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAgICAgcHJpdi0+
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXNz
aW9ucygpCisgICAgfSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Qcml2YXRlJ3Mg
cHJpdmF0ZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TVByb3h5PihuZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2
KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94eTo6UmVtb3Rl
Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rvcnkp
KQorICAgICwgbV9wcml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVD
RE1Qcm94eSgpID0gZGVmYXVsdDsKKworYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKK30K
KworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5z
YW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVD
RE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1Qcm94eTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV2ViQ29yZTo6Q0RNUHJp
dmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9wcml2YXRl
LT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbiksIGFjY2Vz
cywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpjcmVhdGVJ
bnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7Cisg
ICAgaWYgKCFwcml2YXRlSW5zdGFuY2UgfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0
aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluc3RhbmNl
ID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBwcml2
YXRlSW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZpZ3VyYXRpb24o
KTsKKyAgICBtX2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1vdmUoaW5zdGFu
Y2UpKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworfQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAg
bV9wcml2YXRlLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzlkNTU4ZGZmYTE1MmMwZGQ1YTBjMGIyYjVhODE3MzJhMWRiNWIxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAg
LTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsK
K2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Oworc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zOworfQorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Oworc3RydWN0IFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOwor
CitjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4geworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYp
OworICAgIH5SZW1vdGVDRE1Qcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQo
KTsgfQorCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9mYWN0b3J5LmdldCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJl
bW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZh
dGU+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBX
ZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OkNETVByaXZh
dGU6OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNyZWF0ZUlu
c3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZEFu
ZEluaXRpYWxpemUoKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2Zh
Y3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IG1fcHJpdmF0
ZTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9u
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTU1NTg0
ZWRmMTcxYTE2NWRjNTNmMGRhZTVmMWEzOTQ4Yzc1NWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1Qcm94eSBOb3RS
ZWZDb3VudGVkIHsKKyAgICBHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIGVudW06
Ym9vbCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKSAtPiAo
T3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gYWNjdW11bGF0ZWRD
b25maWd1cmF0aW9uKSBBc3luYworICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBMb2FkQW5k
SW5pdGlhbGl6ZSgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGM5ZDJlZTQ0
NWJkNWU2YTk0YWE0OGQ1OGI5ZTA0MjEzYmM1YWYyZTAuLjg3MWRlYTYwYmI3MjgyMWM2MTM1NDE4
ZjI4N2I5NTgzNjMwZmI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTGF5ZXJI
b3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3Nh
Z2VzLmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01MjMsOSArNTI4LDkgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcktleU5lZWRlZChVaW50OEFycmF5KikKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGlu
aXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC02OTUsNiArNzAw
LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlu
c3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGlu
c3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VBdHRhY2hlZChpbnN0YW5j
ZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNl
SWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNl
SWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0YW5jZVByb3h5
LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0
VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3Rh
bmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3Rh
bmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShp
bnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRpZgorCisKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29s
IHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxheWVyLT5iZWdpblNpbXVsYXRlZEhE
Q1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggZmFkYmUwOWE3ZDU0M2QxMWExODg2NjJhZmM3
OGFlYzRkMWU0ZjgwNy4uOGIzN2MwNDIwZGFhZjNhMjliMDc2MzA5NmZhMDA0MGFkZWRjY2IyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFz
cyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTQxLDYgKzE0NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7
CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYKKwogICAgIHZvaWQgYmVnaW5TaW11
bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDUwMzE4OTY3ZjI4MDZkYmMwNWZi
YTc1ZmI4ZTBjNTliMzQxZmQyYmMuLjM0ZDI0MThjY2Y4YWJiZmNjZjVkYzQxODIxNDA4YTY4MGVi
YTdjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC04Miw5ICs4Miwx
NiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICMgU2V0Q0RNU2Vzc2lvbgog
ICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0YWNoZWQKLSAgICAjIENkbUluc3Rh
bmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UKKyNlbmRpZgor
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBDZG1JbnN0YW5jZUF0dGFjaGVkKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisgICAgQ2RtSW5z
dGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5j
ZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgU2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKICNlbmRpZgogCiAgICAgQmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCAwYmUxNTQ1MWQ5YWI4NDliOWFh
NDliNTRjMzE1OTQ0Y2Q2ZjhmNzFiLi40ZjQ5ZjNhMzg3ZDBlYTEwZjE2MWU1YWQ3OWY4ZDc4NTUw
M2QxNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaApAQCAtNjEsOSArNjEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5kaWYKIAotICAgIHZp
cnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlJik7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYp
OwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oCmluZGV4IGJkYjBlYjAwN2JkYWE0N2M1ZGY2NjZiYWFl
MjE5MzJkYTc5OTM5YjcuLjRlMzI4Y2Y0ODA0ZjE0NmYyZWU4Yzg0YWEzOTA2N2Y0NmJkZGI0NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1Ry
YWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9UcmFja1Byb3h5LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgUmVtb3RlVmlkZW9UcmFja1By
b3h5IGZpbmFsCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlVmlkZW9U
cmFja1Byb3h5LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPgogICAgICwgcHJpdmF0ZSBX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZW1vdGVWaWRlb1RyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVNZWRpYVBsYXllclByb3h5JiBw
bGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbiwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZVZpZGVvVHJhY2tQcm94eT4gY3JlYXRlKFJlbW90ZU1lZGlhUGxheWVy
UHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZSYgdHJh
Y2tQcml2YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlk
ZW9UcmFja1Byb3h5KHBsYXllciwgaWQsIFdURk1vdmUoY29ubmVjdGlvbiksIHRyYWNrUHJpdmF0
ZSkpOwogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2VsZWN0
ZWQoYm9vbCBzZWxlY3RlZCkgeyBtX3RyYWNrUHJpdmF0ZS0+c2V0U2VsZWN0ZWQoc2VsZWN0ZWQp
OyB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlVmlkZW9UcmFja1Byb3h5KFJlbW90ZU1lZGlhUGxh
eWVyUHJveHkmLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0
aW9uPiYmLCBWaWRlb1RyYWNrUHJpdmF0ZSYpOworICAgIFJlbW90ZVZpZGVvVHJhY2tQcm94eShS
ZW1vdGVNZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGUmKTsKIAogICAg
IC8vIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50CiAgICAgdm9pZCBzZWxlY3RlZENoYW5nZWQoYm9v
bCkgZmluYWw7CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eSYgbV9wbGF5ZXI7CiAgICAgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bjsKLSAgICBSZWY8VmlkZW9UcmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRlOworICAgIFJlZjxX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZT4gbV90cmFja1ByaXZhdGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDBlNzc0N2MyMmU4ZjU5ODkyNTRjOTRmZWIxODdiOTBiM2IzNGNjYTguLjI1NmRjOTkwNWJm
NDQ2NmQwYzJhZDU3NGQ4YzM2OGExNGJlNjk2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtMjM0LDYgKzIzNCw5IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5v
dF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpNZWRpYVJlY29yZGVySWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllcicsCisgICAgICAgICdX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1v
dGVNZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggNWFkYjM3ZDhiNWJkZWYwMGE1NjZmNGEwMmRiNjRiYjk1ZGFiMDAyNC4uOGJmOGQzZDU1ZWE1
NTQ2NTQ3YmMxMzdlNDI2ODQwYTRhMTFmODE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMjE3LDQgKzMyMTcsNTkgQEAgT3B0aW9u
YWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjpkZWMKICAgICByZXR1cm4gYnVmZmVyOwogfQogCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246Ok1lc3NhZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJiBtZXNzYWdlKQoreworICAgIGVuY29kZXIgPDwg
bWVzc2FnZS5maXJzdDsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0g
bWVzc2FnZS5zZWNvbmQuY29weVJlZigpOworICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7Cit9
CisKK09wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlVHlwZSB0eXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gbWFrZU9wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4oeyB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSB9
KTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiBrZXlTdGF0dXNlcykKK3sKKyAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihrZXlTdGF0dXNlcy5zaXplKCkpOwor
ICAgIGZvciAoYXV0byYga2V5U3RhdHVzIDoga2V5U3RhdHVzZXMpIHsKKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5ID0ga2V5U3RhdHVzLmZpcnN0LmNvcHlSZWYoKTsKKyAgICAgICAg
ZW5jb2RlciA8PCBrZXkgPDwga2V5U3RhdHVzLnNlY29uZDsKKyAgICB9Cit9CisKK09wdGlvbmFs
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgdWludDY0X3QgZGF0YVNpemU7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhU2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0
dXNlczsKKyAgICBrZXlTdGF0dXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFTaXplKTsK
KworICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgKytpKSB7CisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShr
ZXkpIHx8ICFrZXkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzIHN0YXR1czsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBrZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBrZXku
cmVsZWFzZU5vbk51bGwoKSwgc3RhdHVzIH0pOworICAgIH0KKyAgICByZXR1cm4ga2V5U3RhdHVz
ZXM7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwogfSAvLyBuYW1lc3Bh
Y2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmlu
ZGV4IDg5ODYzNTgzZjNiYzE2NjkwOTc0NmRmNjE4MjY0N2Q2OTI1OWFlYzMuLmQwN2YyYmY1YjIx
YjYyMGI5MTk4MTAxOTk0MGUyNzQ0ZWQyNTAwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC01Niw2ICs1NiwxMSBAQAogI2luY2x1ZGUgPFdl
YktpdEFkZGl0aW9ucy9XZWJDb3JlQXJndW1lbnRDb2RlcnNBZGRpdGlvbnMuaD4KICNlbmRpZgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3Rh
bmNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmln
aHQ7CkBAIC04MzYsNiArODQxLDE4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgT3B0aW9uYWw8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3Nh
Z2UmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gewor
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGRlY29kZShEZWNvZGVyJik7
Cit9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAg
LTk4NCw0ICsxMDAxLDI4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V1RGTG9nTGV2
ZWw+IHsKICAgICA+OwogfTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Np
b25Mb2FkRmFpbHVyZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlLAorICAgIFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lLAorICAgIFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb1Nlc3Npb25E
YXRhLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJl
OjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpTZXNzaW9uTG9hZEZhaWx1cmU6OlF1b3RhRXhjZWVkZWQsCisgICAgV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVyCisgICAgPjsKK307CisKK3Rl
bXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3Rh
dHVzPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RN
SW5zdGFuY2U6OkhEQ1BTdGF0dXMsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0
dXM6OlVua25vd24sCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlZhbGlk
LAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpPdXRwdXRSZXN0cmljdGVk
LAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpPdXRwdXREb3duc2NhbGVk
CisgICAgPjsKK307CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IGVlZGI3ZTZkZDlhOWU5ZmEyMDdjZThhOGQzYjYyMmNkMmYwYzkzZGYuLjZkMGU4YzY4YTAy
Mzg4NzNiNjg2NDIzODNlNWI3YmM1YWEwNjM3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjcsNiArMjcs
MTAgQEAgR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwCkBAIC00MSw2ICs0NSw3IEBAIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5jcHAKIAorCiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5j
cHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTU0
MSw2ICs1NDYsMTAgQEAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNRmFjdG9yeS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNw
cAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkK
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1YzUy
NGYzNjIxNzdkZGM3MTI3Mjc2MjU1Nzg4NzA0Y2ViMzlkYTMuLjUzZWRlNTY2ZDNkZThlOTk3NTRi
OTY2MjU0NjRiNjFlYjE3NDhhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcwNiw2ICsxNzA2LDcgQEAKIAkJQ0QxOUQyRUEyMDQ2
NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxOUQyRTgyMDQ2NDA2RjAwMTcw
NzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMjg2NUVFMjI1NTU2MjAwMDYwNkFDNyAv
KiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFz
a1N0YXRlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2QUM3IC8qIFBy
b2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMjg2NUVEMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXIubW0gKi87IH07CisJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0EzNSAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNE
NDkxQjA4MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMDYxRTcwRDA1
RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi87IH07CiAJCUNENDkxQjBE
MUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ5
MUIwQjFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwRTFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEMxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTE3MjgsNiArMTcyOSwyMCBAQAogCQlDREEy
OUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5
QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdl
cy5oICovOyB9OwogCQlDREE5M0RCMDIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3Vj
aFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVl
blRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNj
cmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi87IH07CisJCUNEQUMyMEI0MjNG
QjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovOyB9OworCQlDREFDMjBDMzIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCNjIzRkMyRjczMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMEM0MjNGQzJGNzUw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlLmggKi87IH07CisJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVD
RE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlv
bi5oICovOyB9OworCQlDREFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQTIzRkMy
Rjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi87IH07CisJCUNEQUMyMEM5MjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQzIzRkMyRjc0MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovOyB9OworCQlDREFD
MjBDQTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCRDIzRkMyRjc0
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IH07CisJCUNEQUMyMENE
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNRmFjdG9yeS5oICovOyB9OworCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi87IH07CisJCUNEQUMyMENGMjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RN
SWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGODIz
RkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBG
NTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlD
REFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIw
RUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmll
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjgz
MUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICovOyB9OwogCQlD
RENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1Qzcx
MzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLzsgfTsK
IAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ1MTFDQkM0ODJGMDA2ODFF
RTUgLyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKQEAgLTQ5OTcsNiArNTAxMiwxMCBAQAogCQlDRDE5
RDJFOTIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHA7IHBhdGgg
PSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vz
c1Rhc2tTdGF0ZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFRDIyNTU1NjIwMDA2
MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDUxRTcw
RDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5MDY2IC8qIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENDkxQjBBMUU3MzJEMTIwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMzgsNiArNTA1Nyw0MyBAQAogCQlDREEyOUEyNzFD
QkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hl
dXJpc3RpY1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1
cmlzdGljUGFyYW1ldGVycy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFy
YW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0
aWNQYXJhbWV0ZXJzLmNwcDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNl
Y2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjA3ODIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjA3OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZh
Y3RvcnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDgz
MjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMy
MDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBBRTIzRkI1ODJCMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjEyM0ZCNThFMjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCMzIzRkI1OEYyMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjYy
M0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI4
MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
Q0RNRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJBMjNG
QzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJC
MjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkUy
M0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMg
LyogUmVtb3RlQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMwMjNGQzJG
NzUwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzIy
M0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVD
RE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90
ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMzIzRkMzODNBMDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVBy
b3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
UHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGNTIz
RkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBwYXRoID0gaW9zL2Z1bGxzY3Jl
ZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQzI4MzFDMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHBhdGggPSBpb3Mv
ZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBDRk5ldHdvcmsuZnJhbWV3b3Jr
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBl
ci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJz
b2x1dGU+IjsgfTsKQEAgLTUzMjIsNiArNTM3OCwyMCBAQAogCQkJCTlCNUJFQzI5MjQwMTAxNTgw
MDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwICovLAogCQkJCTlCNUJF
QzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLywK
IAkJCQk5QjVCRUMyRTI0MDEwMThDMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEJGMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE0uY3BwICovLAorCQkJCUNEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0u
aCAqLywKKwkJCQlDREFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbi5oICovLAorCQkJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0
b3J5LmNwcCAqLywKKwkJCQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFj
dG9yeS5oICovLAorCQkJCUNEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVu
dGlmaWVyLmggKi8sCisJCQkJQ0RBQzIwQkIyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlLmNwcCAqLywKKwkJCQlDREFDMjBCNzIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2UuaCAqLywKKwkJCQlDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJFMjNGQzJG
NzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICovLAorCQkJCUNEQUMy
MEJEMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLywKKwkJ
CQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1l
c3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8sCiAJCQkJMDdCOTNGRjUyM0FGMENCODAwMzZG
OEVBIC8qIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTA3OTIzMTMw
MjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwICovLAogCQkJ
CTA3OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAq
LywKQEAgLTUzNTIsNiArNTQyMiwxOCBAQAogCQkJCTlCMTIyOUNGMjNGRjI4MTQwMDhDQTc1MSAv
KiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzFC
QzU3RTIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcCAqLywKIAkJ
CQkwNzFCQzU3RjIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmggKi8s
CisJCQkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5j
cHAgKi8sCisJCQkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQ
cm94eS5oICovLAorCQkJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0
b3J5UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEIyMjNGQjU4RjIwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggKi8sCisJCQkJQ0RBQzIwQjEyM0ZCNThF
MjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJ
Q0RBQzIwQUYyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcCAqLywKKwkJCQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkuaCAqLywKKwkJCQlDREFDMjBBRDIzRkI1ODJCMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwODMy
M0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjA4MjIz
RkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLywKKwkJCQlDREFDMjA4NjIzRkIy
MTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcyNUVG
QUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAq
LywKIAkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuaCAqLywKIAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05NzQ5LDYgKzk4MzEsMjEg
QEAKIAkJCQkxQTA0M0I1QzEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCAqLywKIAkJCQkxQThFRkE2RTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQ
bHVnaW5Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIw
RjMyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8s
CisJCQkJQ0RBQzIwRUUyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1l
c3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEY1MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBFQjIz
RkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8sCisJ
CQkJQ0RBQzIwRjYyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNz
YWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDRDQ2NjE4MjI0
MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLywK
KwkJCQlDRDQ2NjE4MDI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlD
REFDMjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlN
ZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYxMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVGMjNG
QzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJ
CQkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCAq
LywKKwkJCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZGMjRB
MkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNz
YWdlcy5oICovLAogCQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTA2NTUsNiArMTA3NTIsMTYg
QEAKIAkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUNEMjNGRjI1RjIwMDhDQTc1
MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUI1QkVDMkEyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENEMjNGQzJGNzUw
MDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBD
RjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RBQzIwQzQyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDMzIzRkMyRjc1
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzkyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFC
MTZBRUExNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTIzNTQsNiArMTI0NjEsMTEgQEAKIAkJCQkyRDU0QzMxQjIxMkY0REE2MDA0
OUMxNzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjg2NUVG
MjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk5QjEyMjlDRTIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFE
RUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDQ2NjE4MzI0MDEw
QTY3MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREFDMjBGQTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8q
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRB
MkQxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5RTAwMjVB
ODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IGRmYjliOWE5MzhiOTg1ZDI4MGFjZGVkYTA0OGJjNWE2NmY3N2U2MWIuLmY5Yjk3MDE4MTcy
ZGE1MmIxYzcwNTQ5Mzk1OTNjMjExZGZlZDAxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMyw2ICszMyw4
IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29k
ZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Q
cm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKQEAgLTQ0LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2VzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtNzUsNiArODEsMTMgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0K
IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUNETUZhY3Rv
cnkmIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpjZG1GYWN0b3J5KCkKK3sKKyAgICByZXR1cm4gKldl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKTsKK30K
KyNlbmRpZgorCiBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpAQCAtMTAwLDYgKzExMywx
MiBAQCBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlYwogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5saWJXZWJSVENDb2RlY3MoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RN
RmFjdG9yeT4oKS0+ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oCmluZGV4IDZhY2RjYmYzOTU0NTFiNmI0Yzk1OGVjYzkyYjUyMDE2YjY3NzcyODkuLjJiNTcy
YzFiYWNiZmE2YjZiMjZmMzU2MGMyNjJhOWE0MWIwYzc1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM5LDYgKzM5
LDggQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNz
IFJlbW90ZUNETUZhY3Rvcnk7CisKIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxHUFVQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRl
KElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTU4
LDYgKzYwLDEwIEBAIHB1YmxpYzoKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
JiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlQ0RNRmFjdG9yeSYgY2RtRmFjdG9yeSgpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGQ4
MDkwMTBkMWI1ZTQzNzY5MWM0MjgwZDZhNDcyMzkwODRmM2ZlNzMuLjk1ZTczYTY1MDlhMmEzMjkz
MGVjOTRmOTVhYzEzNmM2ZjA4MGY0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
QEAgLTQ5LDYgKzQ5LDEwIEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAi
UmVtb3RlQ0RNSW5zdGFuY2UuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAg
LTkxMiwxOSArOTE2LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRl
ZCgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5j
ZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3Rl
Q0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNkbUluc3RhbmNlQXR0YWNoZWQoZG93bmNhc3Q8
UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5z
dGFuY2UmKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNo
ZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
aWYgKGlzPFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZURldGFj
aGVkKGRvd25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwg
bV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNy
eXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4o
aW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6QXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShkb3duY2FzdDxSZW1v
dGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtOTMy
LDYgKzkzOSwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0Zvcktl
eUNoYW5nZWQoKQogICAgIG1fcGxheWVyLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwogfQogCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSYmIGluaXRE
YXRhKQoreworICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGlu
aXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKTsKKyAgICBtX3BsYXllci0+aW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhQnVmZmVy
KSk7Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkg
Y29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtOTM5LDYgKzk1MiwxMyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRp
bnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCBzaG91bGQpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFNob3VsZENvbnRpbnVlQWZ0ZXJL
ZXlOZWVkZWQoc2hvdWxkKSwgbV9pZCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc1RleHRUcmFja1Jl
cHJlc2VudGF0aW9uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDU1
OWZkNjUwMjA4OGViYjM3ZDc2ZWE3ZDY5MzU1NzI2MzhmMjEwMjMuLjdhYjY2NTI5YTUxOTczNTgz
MWNmYmNjODk5MThiYmE3NzdhYzVjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAt
MTM5LDYgKzEzOSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAg
ICAgdm9pZCB3YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOworICAgIHZvaWQgaW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiwgSVBDOjpEYXRhUmVmZXJlbmNlJiYpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMzE1LDYgKzMx
NiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IGZpbmFsOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQo
Ym9vbCkgZmluYWw7CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29s
IHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0
aW9uKikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmlu
CmluZGV4IGE1MDc3NmRkYWE0Mjc2YzFjNmRkZTdlNWRiMDdiZjk4YTY3YWU4ZjUuLjk0NDhkZTAy
ZjFhYzllNDY0MzgzM2MyZDU1Mzc1OWM5ODMwYjgxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC03NSw2ICs3NSw3IEBAIG1lc3NhZ2VzIC0+IE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBOb3RSZWZDb3VudGVkIHsKIAogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAgICAgV2FpdGluZ0ZvcktleUNoYW5nZWQoKQorICAgIEluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkKFN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5j
ZSBpbml0RGF0YSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYzkxYjQwZjNiOWM3NWIzYzExMGI2MzZmNjhjYTU3MDVhMjViNTQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE0uY3BwCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DRE1SZXN0cmljdGlvbnMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+
IFJlbW90ZUNETTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBS
ZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPihuZXcgUmVt
b3RlQ0RNKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSk7Cit9CisKK1JlbW90ZUNETTo6UmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkp
CisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE06OmdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRp
b24sIExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxi
YWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3Rv
cnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSwgYWNjZXNzKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRp
Zmllcik7Cit9CisKKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0
c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBv
cnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKSBjb25zdAoreworICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5z
aWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgorICAg
IHJldHVybiB0cnVlOworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OmRpc3RpbmN0aXZl
SWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ0RNUmVxdWlyZW1lbnQ6
Ok5vdEFsbG93ZWQ7Cit9CisKK0NETVJlcXVpcmVtZW50IFJlbW90ZUNETTo6cGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENE
TVJlc3RyaWN0aW9ucyYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOworfQorCitib29sIFJlbW90ZUNETTo6
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZlB0cjxDRE1JbnN0YW5jZT4gUmVt
b3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSgpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkOwor
ICAgIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5jZSgpLCBNZXNzYWdlczo6UmVtb3Rl
Q0RNUHJveHk6OkNyZWF0ZUluc3RhbmNlOjpSZXBseShpZCwgY29uZmlndXJhdGlvbiksIG1faWRl
bnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0b3J5LmdldCgp
KSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90
ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgp
LCBtX2lkZW50aWZpZXIpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNh
bml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK3sKKyAg
ICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSgpLgorICAgIHJldHVybiByZXNwb25zZS5j
b3B5KCk7Cit9CisKK09wdGlvbmFsPFN0cmluZz4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIHdp
bGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
bG9hZFNlc3Npb24oKS4KKyAgICByZXR1cm4gc2Vzc2lvbklkOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjZkNmYzNjk3OWIwNDUyY2Y5NmE1MmQxOGY2YWQwYjdmMzM0OGU4ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgK
QEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVt
b3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2
YXRlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFJlbW90ZUNETSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1Qcml2YXRlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4gY3JlYXRlKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVD
RE1Db25maWd1cmF0aW9uJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETSgpID0gZGVmYXVsdDsK
KworcHJpdmF0ZToKKyAgICBSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBS
ZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICB2
b2lkIGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIExvY2FsU3RvcmFnZUFjY2VzcywgU3Vw
cG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOworCisgICAgYm9vbCBzdXBwb3J0
c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0
aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nl
c3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUm
LCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7
CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1SZXF1aXJl
bWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYp
IGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0
ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGRp
c3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3Qg
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKKyAgICB2
b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBj
b25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0
IFN0cmluZyYpIGNvbnN0IGZpbmFsOworCisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRl
ZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3Vw
cG9ydGVkSW5pdERhdGFUeXBlczsgfQorICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRS
b2J1c3RuZXNzZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9y
dGVkUm9idXN0bmVzc2VzOyB9CisgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1NlcnZlckNlcnRp
ZmljYXRlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1Nlc3Npb25zOyB9CisKKyAgICBXZWFrUHRyPFJl
bW90ZUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MmM0NjRm
ZGZkY2Q4YzM1NzU2YjBlMzhkYWQwZjg5MzkwNTg4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaApA
QCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDxXZWJD
b3JlL0NvbnRlbnRUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiB7CisgICAg
VmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgVmVjdG9yPEF0
b21TdHJpbmc+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICBib29sIHN1cHBvcnRzU2VydmVy
Q2VydGlmaWNhdGVzOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uczsKKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICAg
ICAgZW5jb2RlciA8PCBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGVuY29kZXIgPDwg
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydHNT
ZXNzaW9uczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0
aWMgT3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRl
ZEluaXREYXRhVHlwZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkSW5pdERhdGFUeXBl
czsKKyAgICAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+
IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRSb2J1
c3RuZXNzZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkUm9idXN0bmVzc2VzKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1NlcnZlckNl
cnRpZmljYXRlczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcykKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c3VwcG9ydHNTZXNzaW9uczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nlc3Npb25zOwor
ICAgICAgICBpZiAoIXN1cHBvcnRzU2Vzc2lvbnMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9y
dGVkSW5pdERhdGFUeXBlcyksCisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBwb3J0ZWRSb2J1c3Ru
ZXNzZXMpLAorICAgICAgICAgICAgKnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzLAorICAgICAg
ICAgICAgKnN1cHBvcnRzU2Vzc2lvbnMsCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMmQz
ZDVjNjEwYWY1NGFkMWQzZWY0ZmE2MWM0NTk2NjY1Mjk3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCkBA
IC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiUmVtb3RlQ0RNLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUNETUZh
Y3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkoV2ViUHJvY2VzcyYgcHJvY2VzcykKKyAgICA6IG1fcHJv
Y2Vzcyhwcm9jZXNzKQoreworfQorCitSZW1vdGVDRE1GYWN0b3J5Ojp+UmVtb3RlQ0RNRmFjdG9y
eSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZWdpc3RlckZhY3Rvcnko
VmVjdG9yPENETUZhY3RvcnkqPiYgZmFjdG9yaWVzKQoreworICAgIGZhY3Rvcmllcy5hcHBlbmQo
dGhpcyk7Cit9CisKK2NvbnN0IGNoYXIqIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1l
KCkKK3sKKyAgICByZXR1cm4gIlJlbW90ZUNETUZhY3RvcnkiOworfQorCitHUFVQcm9jZXNzQ29u
bmVjdGlvbiYgUmVtb3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworICAg
IHJldHVybiBtX3Byb2Nlc3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKworYm9v
bCBSZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSkKK3sKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAgIGdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOwor
ICAgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBS
ZW1vdGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7Cisg
ICAgUmVtb3RlQ0RNSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb247CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNKGtleVN5c3Rl
bSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETTo6UmVwbHkoaWQs
IGNvbmZpZ3VyYXRpb24pLCB7IH0pOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBSZW1vdGVDRE06OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RG
TW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZh
Y3Rvcnk6OmFkZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCwg
UmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCgh
bV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3Zl
KHNlc3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uKFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fc2Vz
c2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkp
CisgICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODllZDA2MDAxYzY2M2Jh
ZjE4NWRiOTMxNzQ5N2U5MmNmYmZjMDZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKQEAgLTAsMCArMSw4NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNRmFj
dG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFj
ZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFJlbW90ZUNE
TTsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjsKK2NsYXNzIFdlYlByb2Nlc3M7CisK
K2NsYXNzIFJlbW90ZUNETUZhY3RvcnkgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpDRE1G
YWN0b3J5CisgICAgLCBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlQ0RNRmFjdG9yeShXZWJQcm9jZXNz
Jik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNRmFjdG9yeSgpOworCisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvY2VzczsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVBy
b2Nlc3NDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmFjdG9yeShWZWN0b3I8V2Vi
Q29yZTo6Q0RNRmFjdG9yeSo+Jik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lv
bihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkNETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29s
IHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgSGFzaE1hcDxS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uPj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+PiBtX2NkbXM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9j
ZXNzOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVlM2Ez
ODE5YzE3MDdiNTU4YjNmZDlhYWE4ODE2MzE1ODM5MmZhZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNE
TUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUlkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTFhMGUwYjUyZDJkYjVi
MzY2ZThhYjY2OTY4YzU2MTQ2MmVkZDljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTAsMCArMSwx
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSW5zdGFuY2UuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUlu
c3RhbmNlPiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVDRE1JbnN0YW5jZShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlk
KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZTo6UmVt
b3RlQ0RNSW5zdGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRp
b24mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisg
ICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBwZXJzaXN0ZW50U3RhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7Cisg
ICAgICAgIGNhbGxiYWNrKEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNp
c3RlbnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhGYWlsZWQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OlNldFNlcnZlckNlcnRpZmljYXRlKGNlcnRpZmljYXRlLmdldCgpKSwgV1RGTW92
ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6
OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6U2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpLCBtX2lkZW50aWZpZXIpOwor
fQorCitSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5j
ZTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZDsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uKCksIE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBseShpZCks
IG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUobWFrZVdl
YWtQdHIobV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCkpOworICAgIG1fZmFjdG9yeS0+YWRk
U2Vzc2lvbihpZCwgc2Vzc2lvbi5jb3B5UmVmKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NWY0OWI5NzM5ZDI0NzlkNTU1
ZGY4ZmIwMjdlZGZlY2E5YzM0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFu
Y2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkNETUluc3RhbmNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5SZW1vdGVDRE1JbnN0YW5jZSgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNE
TUluc3RhbmNlPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOwor
CisgICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNSW5z
dGFuY2UoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50
aWZpZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOworCisgICAgSW1wbGVt
ZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIElt
cGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CisgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93
RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNl
dFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lz
dGVtOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vz
c2lvbigpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7
CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworfTsKKworfQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NETV9JTlNUQU5DRShXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlLCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGUpCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjUzMmQ3MmU3Y2U0Yjg1M2YyZDNiOTM0NTVlMTkyODFjNDE5ZmE0MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiB7CisgICAgU3RyaW5nIGtleVN5c3RlbTsKKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwga2V5U3lzdGVtOworICAgIH0KKworICAgIHRlbXBs
YXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAg
T3B0aW9uYWw8U3RyaW5nPiBrZXlTeXN0ZW07CisgICAgICAgIGRlY29kZXIgPj4ga2V5U3lzdGVt
OworICAgICAgICBpZiAoIWtleVN5c3RlbSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCprZXlTeXN0ZW0p
LAorICAgICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmZkZTY5MWMz
ZTg5NWI4ODU5ZTYyMDVhNzFlMTE1ZmE5YjRmZTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIu
aApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1v
dGVDRE1JbnN0YW5jZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
VHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVjY2JlMjM5NmY5YjJmODZjOWM2YjI2ZjMzZTFi
YTIzNWIwMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
UmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpj
cmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsK
K30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24o
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQor
ICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQoreworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAg
ICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwg
RmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlwZSwgaW5p
dERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVk
ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVyKCkpIHsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNl
LCBGYWlsZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxi
YWNrKG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgc2Vzc2lvbklkLCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0s
IG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIFdURk1vdmUocmVz
cG9uc2UpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHNlc3Npb25XYXND
bG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8
ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2Us
IGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soc2Vzc2lvbldhc0Ns
b3NlZCwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBX
VEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0s
IG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2Fk
U2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBp
ZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpMb2FkU2Vzc2lvbih0eXBlLCBzZXNzaW9uSWQsIG9yaWdp
biksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoT3B0aW9uYWw8S2V5U3RhdHVzVmVj
dG9yPiYmIGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24s
IE9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQsIFNlc3Npb25Mb2Fk
RmFpbHVyZSBsb2FkRmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
Y2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdl
KSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkLCBsb2FkRmFpbHVyZSk7CisgICAgfSwg
bV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmNsb3Nl
U2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjaygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpDbG9zZVNlc3Npb24oc2Vzc2lvbklkKSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjaygpOwor
ICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUg
dHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICgh
bV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSwgV1RGOjpudWxsb3B0LCBGYWlsZWQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5
cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNo
YW5nZWRLZXlzLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYgbWVz
c2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBPcHRpb25hbDxSZWY8U2hh
cmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlmIChtZXNz
YWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKKyAgICAgICAgICAgIHJlYWxNZXNzYWdl
ID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2Vl
ZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpTdG9yZVJlY29y
ZE9mS2V5VXNhZ2Uoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtl
eVN0YXR1c2VzKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0
ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5cGUs
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1f
Y2xpZW50ICYmIG1lc3NhZ2UuYnVmZmVyKCkpCisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2Fn
ZSh0eXBlLCBtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCkpOworfQorCit2b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9u
SWRDaGFuZ2VkKHNlc3Npb25JZCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NjJkMDVmOGJmOTYzZWNjNTEyNjMyYTNhYWNjMDkwNDQ5ZWI1
YzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBmaW5hbCA6
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbigpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RN
RmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1G
YWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYpOworCisgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAg
ICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKTsKKyAgICB2b2lkIHNl
bmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UmJik7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOwor
CisgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQ+JiYgY2xpZW50KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9Cisg
ICAgdm9pZCBjbGVhckNsaWVudCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRyOyB9CisgICAg
dm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgbG9hZFNlc3Npb24o
TGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGNsb3NlU2Vzc2lvbihj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzdG9y
ZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGZpbmFsOworCisgICAg
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2Fn
ZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzhjMjM5MmU3ZWY4NjIwNDYyMWQyODQxNDM4YjVlZGY0ZDM4MTUz
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBVcGRhdGVLZXlTdGF0dXNlcyhXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNlcykKKyAg
ICBTZW5kTWVzc2FnZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUgdHlwZSwg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpCisgICAgU2Vzc2lvbklkQ2hh
bmdlZChTdHJpbmcgc2Vzc2lvbklkKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg2YWNkMTI2NWFmMGM4NDYzODhl
MjNmOWNjYTE2ZDkwMjMzOGZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRp
YVN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVk
aWFTdHJhdGVneS5jcHAKaW5kZXggMmFhZTVlNTQ0NTEwODQ3OWJkM2NkMzM5YWZhNmJmNmQyZGRh
YmNmNi4uNWQ3YThiOGQxMTI0YjJhNTI4YWQ3M2JkYzk2ZDlhOTc4MGRjMjA0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRl
Z3kuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2Fs
bGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KQEAgLTUxLDcgKzUzLDEz
IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uPiBXZWJNZWRpYVN0
cmF0ZWd5OjpjcmVhdGVBdWRpb0Rlc3RpbmF0CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
IHZvaWQgV2ViTWVkaWFTdHJhdGVneTo6cmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNv
cmU6OkNETUZhY3RvcnkqPiYgZmFjdG9yaWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpDRE1G
YWN0b3J5OjpwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKGZhY3Rvcmllcyk7CisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQorICAgIGlmIChtX3VzZUdQVVByb2Nlc3MpIHsKKyAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jZG1GYWN0b3J5
KCkucmVnaXN0ZXJGYWN0b3J5KGZhY3Rvcmllcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKyAgICBXZWJDb3JlOjpDRE1GYWN0b3J5OjpwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVz
KGZhY3Rvcmllcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCA5NzBhOWJiMjM3YWMzOThkNmUxODJmOWU3ZTllMzc3NDY0
MWNiOThkLi43NzNhNTljZGExZDQ5YjZkNWNkYWVhZTViNzZiMmEwZGZiYTllNmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzIyLDYgKzMy
Miw5IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmgiCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJS
ZW1vdGVDRE1GYWN0b3J5LmgiCisjZW5kaWYKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA1ZjA0ZWI5YWZjYjY0
ZmY0OTg4NDFhNDZhNDcxNzE0OTcyZWM2OWFkLi41MWMyZjVlNTNiMzQwYzIyMDVmNzg5YjRiMzcz
YTJlNTA3YmI2ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0xNzQsNiArMTc0LDEwIEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eS5oIgorI2VuZGlmCisKICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9u
SUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50NjQoKSA6IDApCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbc2Vzc2lvbklEPSUiIFBSSXU2NCAiXSBXZWJQ
cm9jZXNzOjoiIGZtdCwgdGhpcywgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCwgIyNfX1ZBX0FSR1Nf
XykKIApAQCAtMjQwLDYgKzI0NCwxMCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICBh
ZGRTdXBwbGVtZW50PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGFkZFN1
cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZv
cmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392423</attachid>
            <date>2020-03-04 09:22:20 -0800</date>
            <delta_ts>2020-03-04 09:31:05 -0800</delta_ts>
            <desc>Patch for landing: Part 3: RemoteCDM</desc>
            <filename>bug-208090-20200304092219.patch</filename>
            <type>text/plain</type>
            <size>172449</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUxODRmODVlMzhkNjEx
ZGUxMDQ1ZGMzNThmMzY3MWYwMGYwYmI4Yy4uNDExZDkxNDJiNDFlZGMyMDQ1YjAxZDcxOGM2M2Yx
NDEwYTZjNDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGV4cG9ydCBtYWNyb3MgdG8gQ0RNRmFjdG9yeTo6
cmVnaXN0ZXJlZEZhY3RvcmllcygpLgorCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRmFjdG9yeS5oOgorCiAyMDIwLTAzLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAoQ29va2llQ2FjaGUpIFVuYWJsZSB0byBsb2cg
aW50byBIdWx1LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTc2Y2I0ODY4ZjhlYTBkNWM0ZjY2Nzc0YjBmNDk1
ZjY1ZWFkYzc2Li40NTBlN2UzNTJmM2VhYjhmMzU2MGUxNjViNzNhYmU5M2MwODQ2OTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGlu
IHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90
ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAg
b2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBl
eGlzdGluZyBDRE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5ICB3aGVuIHRoZSBH
UFUgcHJvY2VzcyBpcyBkaXNhYmxlZCwKKyAgICAgICAgYnkgbWFraW5nIGluaXRpYWxpemF0aW9u
IG9mIHRoZSBDRE0gZmFjdG9yaWVzIGNvbnRpbmdlbnQgdXBvbiB0aGUgInVzZSBHUFUiIHNldHRp
bmcuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2Rt
RmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6ZmFjdG9yeUZvcktleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkSW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojpjb25maWd1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5zdGFu
Y2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6On5SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNUHJveHk6OmZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpSZW1vdGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0luaXRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lvbklkIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1GYWN0b3J5Ojp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZh
Y3Rvcnk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5Ojpy
ZW1vdmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVj
ZWl2ZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9m
S2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTAzICBKaXRl
biBNZWh0YSAgPGptZWh0YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5h
dGl2ZSBTZXJ2aWNlcyBTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKaW5kZXggNTI1Yzg0ZWNiZTc5MWY0MGI1NDdmYjdm
YWZkZTlkMDNiYTgxMGJhZS4uZmIzNTBkNDg1NWExYWIzM2IxYjZkMWM0ZGNlNzNhN2U3MjZhNjUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUZhY3RvcnkuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
c3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3Rv
cmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShD
RE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5yZWdpc3RlckZh
Y3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggODZmMDFiMzlhMDQ3MjhjMmMwYmZmNjdlNWJkMzkzZjA5MWI3
N2Y5ZC4uOWY5NDZmODQ5N2FmMjNiNGFmYTUxYjc5MTg0MTg1MTg4NjBhYzViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTgsNiArMTgs
MTAgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTExMiw2ICsxMTYsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA2NDY0ZDgzODlmYjUzZjUy
NzUwNzA1MzljOTgxMGZiMmQ4Y2NiMzE5Li5hOTZjMmNmZGRkNDZiMzU5MjM4ZTk2MjM0M2E5OTIy
MTA0ZWVhNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKQEAgLTEzNyw2ICsxMzcsMjEgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNDM2ZTRiNDIyNGNiMDQ1
YzllYWIzYTZjNzA1NDMwYmQ1MjUzMzMzNC4uNDVlZTNkYjdlZDdlMTMzNzJjOGE3NWFkNTU1YTE2
NTg3ZjY3ZDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTUxLDYgKzE1MSwx
MSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyIFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVD
RE1Qcm94eSBcCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAorICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAog
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXll
clByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2YTJjODcwZjdhYWExYjBkYjAwMGVmODg4MjdjOWEw
ZjYxZGNmMjViLi42Y2YxYzMwYjNlMzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC02MCwxMCArNjAsMTggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VzLmgiCisjZW5kaWYKKworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTksNiArMjA3LDE2IEBAIExpYldlYlJUQ0NvZGVjc1By
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVDRE1GYWN0b3J5
UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSgpCit7Cisg
ICAgaWYgKCFtX2NkbUZhY3RvcnlQcm94eSkKKyAgICAgICAgbV9jZG1GYWN0b3J5UHJveHkgPSBt
YWtlVW5pcXVlPFJlbW90ZUNETUZhY3RvcnlQcm94eT4oKnRoaXMpOworCisgICAgcmV0dXJuICpt
X2NkbUZhY3RvcnlQcm94eTsKK30KKyNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcC5lbnN1cmUocmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIFsmXSgpIHsKQEAgLTI2OSw2ICsyODcsMjggQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHko
KS5kaWRSZWNlaXZlQ0RNTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKQEAgLTI5NCw2ICszMzQsMjggQEAgYm9vbCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICB9CiAjZW5kaWYKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2Rt
RmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQ
cm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1G
YWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCkBAIC0z
MDIsNyArMzY0LDcgQEAgY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpt
ZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKIH0KIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQogY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9n
cHVQcm9jZXNzLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDc0NzE1YzgwYzU0NWJlYWZlYzNmNmI3ZTA5ODRlY2E1MGNiYTI2NjkuLmEzZWNhNWM4
ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDgsNiArNDgs
NyBAQCBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CiBjbGFz
cyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsK
IGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKQEAgLTg1
LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciYgc2Vzc2lvbk1hbmFnZXIoKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEKTsKIApAQCAtMTM4LDYgKzE0MywxMCBAQCBwcml2YXRlOgogICAgIAogICAg
IHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcCA9IEhhc2hNYXA8UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNYXAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHlNYXA7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKaW5k
ZXggMTZhNThlZGE1NDA2YmViZTc2OTNiMTlmNjgxNjZmYzJmZjlmNzBjZi4uYTM2MWM0MjBhNjlh
MzgzNGVmMjg0MWY1ZDM2MGMwZjgzMDE5ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTM1LDYg
KzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1faWRlbnRpZmllcihp
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaAppbmRleCBkNGM3MDZhMmY3NDMzNjI1MDQ0YTQ0ZGIzNWYwNmFlNWY5ZWU4
NTEwLi5lODVmNTcyZTFhMDBhYTEwODZmNWZiZjIyZjFmN2JmMTAyYzRkMmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94
eS5oCkBAIC0zMiwxNSArMzIsMjAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVHJhY2tQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFja0Jhc2UuaD4KIAorbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OwogCiBjbGFzcyBSZW1vdGVBdWRpb1RyYWNrUHJveHkgZmluYWwKICAgICA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb1RyYWNrUHJveHksIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwcml2YXRlIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUF1ZGlvVHJhY2tQcm94eT4g
Y3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBBdWRpb1Ry
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9UcmFj
a1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb1RyYWNrUHJveHkocGxheWVyLCBpZCwg
V1RGTW92ZShjb25uZWN0aW9uKSwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQpAQCAtNTAsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RyYWNr
UHJpdmF0ZS0+c2V0RW5hYmxlZChlbmFibGVkKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZUF1
ZGlvVHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgQXVkaW9UcmFja1ByaXZhdGUmKTsK
KyAgICBSZW1vdGVBdWRpb1RyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlJik7CiAKICAgICAvLyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudAog
ICAgIHZvaWQgZW5hYmxlZENoYW5nZWQoYm9vbCkgZmluYWw7CkBAIC02Nyw3ICs3Miw3IEBAIHBy
aXZhdGU6CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgbV9wbGF5ZXI7CiAgICAgVHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGU+
IG1fdHJhY2tQcml2YXRlOworICAgIFJlZjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZT4gbV90
cmFja1ByaXZhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmNiYWY2YTU4NGI0ZjI3YjFkMmFhMjE3MmVhNWJjMWEzNDRlNTc0MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAi
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+Cisj
aW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDog
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZUNE
TUZhY3RvcnlQcm94eTo6flJlbW90ZUNETUZhY3RvcnlQcm94eSgpID0gZGVmYXVsdDsKKworc3Rh
dGljIENETUZhY3RvcnkqIGZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCit7CisgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3Rv
cmllcygpOworICAgIGF1dG8gZm91bmRJbmRleCA9IGZhY3Rvcmllcy5maW5kTWF0Y2hpbmcoWyZd
IChhdXRvJiBmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5LT5zdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0pOyB9KTsKKyAgICBpZiAoZm91bmRJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhY3Rvcmllc1tmb3VuZEluZGV4XTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWZhY3RvcnkpIHsK
KyAgICBhdXRvIGZhY3RvcnkgPSBmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSk7CisgICAg
ICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RNKGtleVN5c3RlbSk7CisgICAgaWYg
KCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcm94eSA9IFJlbW90ZUNETVByb3h5OjpjcmVhdGUo
bWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUocHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRp
ZmllciA9IFJlbW90ZUNETUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gcHJveHktPmNvbmZpZ3VyYXRpb24oKTsKKyAgICBh
ZGRQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgY29tcGxldGlvbihXVEZN
b3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAg
Y29tcGxldGlvbihmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSkpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHBy
b3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlm
aWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZh
Y3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5z
dGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAg
aW5zdGFuY2UtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
Cit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQor
eworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
ZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7
CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9u
cy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KGNvbnN0IFJlbW90ZUNETUlkZW50
aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHkpCit7Cisg
ICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlk
LCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiBpZCkKK3sKKyAgICBBU1NFUlQobV9w
cm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZShSZW1vdGVDRGNvbnN0IE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eT4mJiBpbnN0YW5jZSkKK3sKKyAgICBBU1NFUlQoIW1faW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9pbnN0YW5jZXMuc2V0KGlkLCBXVEZNb3ZlKGluc3RhbmNlKSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZShSZW1vdGVDRGNvbnN0IE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhp
ZCkpOworICAgIG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNl
UHJveHkqIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlk
KTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlQ0RN
SW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9z
ZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNl
c3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24o
UmVtb3RlQ0RNSW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQpCit7CisgICAgQVNT
RVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiOGEyOGY0YzNmNGRk
Mzc3MjgyM2NhNzA1MWNkMzY2ZDFkY2Y0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CitjbGFzcyBS
ZW1vdGVDRE1Qcm94eTsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0
b3J5UHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNv
ZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHko
Y29uc3QgUmVtb3RlQ0RNSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94
eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJik7
CisKKyAgICB2b2lkIGFkZEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmKTsKKyAgICB2b2lk
IHJlbW92ZUluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYpOworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKGNvbnN0IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXImLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisg
ICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisg
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETVByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4+IG1faW5zdGFu
Y2VzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNDdjNWU2ZTYxYzQyMDc4MzFkYTBiZDExOGE2YWFlYjQwZDMzMTM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4g
UmVtb3RlQ0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZUNETShTdHJp
bmcga2V5U3lzdGVtKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3Vz
CisgICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSkgLT4gKGJvb2wgcmVzdWx0
KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTI0OGZkZmM4MmQ5NGFlNmUwZWQxNzViMzUxYzFiMjZiNTVhMzEzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94
eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2KQoreworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiY+KHsKKyAg
ICAgICAgcHJpdi0+a2V5U3lzdGVtKCksCisgICAgfSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShX
VEZNb3ZlKGNkbSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30K
KworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRy
PFJlbW90ZUNETVByb3h5PiYmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6
IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKKyAg
ICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpID0gZGVmYXVsdDsK
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgYWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIG1faW5zdGFu
Y2UtPmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBhbGxvd0Rpc3Rp
bmN0aXZlSWRlbnRpZmllcnMsIGFsbG93UGVyc2lzdGVudFN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRp
b24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBjZXJ0aWZpY2F0ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYg
KCFjZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKENETUluc3RhbmNl
OjpGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0YW5jZS0+c2V0
U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShjb21wbGV0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBtX2lu
c3RhbmNlLT5zZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJiBjb21wbGV0aW9uKQor
eworICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7Cisg
ICAgaWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9jZG0gfHwgIW1fY2RtLT5mYWN0b3J5KCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8g
aWRlbnRpZmllciA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNy
ZWF0ZShtYWtlV2Vha1B0cihtX2NkbS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVhc2VOb25OdWxs
KCksIGlkZW50aWZpZXIpOworICAgIG1fY2RtLT5mYWN0b3J5KCktPmFkZFNlc3Npb24oaWRlbnRp
ZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MTEyZDVmODRiODg0NzMx
OWRjNDA0ZmVhMTUwNmM4YjFlZjMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUlu
c3RhbmNlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNSW5zdGFuY2U7CitzdHJ1Y3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciAgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+
JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJik7CisgICAgflJlbW90ZUNETUluc3RhbmNl
UHJveHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2U7IH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdl
YkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdXNpbmcg
U3VjY2Vzc1ZhbHVlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZTsKKyAgICB1
c2luZyBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzOworICAgIHVzaW5nIEFsbG93UGVyc2lzdGVudFN0
YXRlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOworCisgICAg
Ly8gTWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNj
ZXNzVmFsdWUpPiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1Y2Nlc3NWYWx1
ZSk+JiYpOworICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4gbV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNl
OworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmln
dXJhdGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lv
bnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NTBlODUzNDFjMmViMzViYjZlYzA4MDk1ZDVhMDA0ZWNjYTEzOWY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3Nh
Z2VzIC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRl
U2Vzc2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIg
aWQpIFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVjdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGVudW06Ym9v
bCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkFsbG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpIC0+IChlbnVtOmJv
b2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBBc3luYworICAg
IFNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0
aWZpY2F0ZSkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IHN1Y2Nlc3MpIEFzeW5jCisgICAgU2V0U3RvcmFnZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5
KQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0NmNmZDA1OWMzMTM5NGYxNmM2MWRlMTliMGZlM2MzNGJmYTRlNzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50aWZp
ZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHktPm1f
c2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Npb25Q
cm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAs
IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXRE
YXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFpbml0RGF0YS5idWZmZXIoKSkg
eworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUgQ0RNUHJpdmF0
ZTo6c3VwcG9ydHNJbml0RGF0YSgpIGNoZWNrIGhlcmU6CisgICAgaWYgKCFtX2NkbS0+c3VwcG9y
dHNJbml0RGF0YShpbml0RGF0YVR5cGUsICppbml0RGF0YS5idWZmZXIoKSkpIHsKKyAgICAgICAg
Y29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXRE
YXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24g
PSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9
KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5z
ZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxldGlv
bikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24o
dHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRlOjpzYW5pdGl6
ZVJlc3BvbnNlKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFJlc3BvbnNlID0gbV9j
ZG0tPnNhbml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKTsKKyAgICBpZiAoIXNhbml0
aXplZFJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UsIHsgfSwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0aXplZFJlc3Bv
bnNlLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0g
KGJvb2wgc2Vzc2lvbkNsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGlt
ZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUo
ZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vz
c2lvbklkLCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikK
K3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplU2Vzc2lvbklkKCkg
Y2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFNlc3Npb25JZCA9IG1fY2RtLT5zYW5pdGl6
ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgIGlmICghc2FuaXRpemVkU2Vzc2lvbklkKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRj
aGVkU2Vzc2lvblR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9u
LT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJh
dGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwg
V1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vl
ZGVkLCBmYWlsdXJlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5jbG9zZVNlc3Npb24o
c2Vzc2lvbklkLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUg
eyBjb21wbGV0aW9uKCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAg
bV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRT
ZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoZXhwaXJlZFNlc3Np
b25zRGF0YSkKKyAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7
CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJl
ZFNlc3Npb25EYXRhUmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorewor
ICAgIG1fc2Vzc2lvbi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0
YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdlKHR5cGUsIFdU
Rk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBm
YWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTgxNTM1NjZmNjQyZmM2OGEzNDU2NGU3NDY3NDUwZmI0NDlkYTk0MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
CisgICAgLy8gVHlwZXMKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I7CisgICAgdXNpbmcgTWVz
c2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAgICB1c2luZyBT
ZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZTsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgYm9vbCwgYm9vbCk+OworICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYm
LCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wpPjsKKyAgICB1
c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2Fn
ZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHVzaW5nIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3Rv
ciYmLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGJvb2wpPjsK
KyAgICB1c2luZyBTdG9yZVJlY29yZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PjsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJik7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4sIExv
YWRTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYpOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKKworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAor
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOworICAg
IHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4gbV9j
ZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gbV9zZXNzaW9uOworICAg
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41YjkzMTk2YzA5NWUwMzRiNjQyMWY4ZWU2MzhhZTA5ZWZjZTIwZTk0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBOb3RSZWZDb3Vu
dGVkIHsKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Okxp
Y2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9u
SWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNzaW9uV2FzQ2xv
c2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
cj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luKSAt
PiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+
IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25h
bDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3Vj
Y2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9u
TG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9uKFN0cmluZyBz
ZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3RyaW5nIHNlc3Np
b25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlKSAtPiAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXMs
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmluZyBzZXNzaW9u
SWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhYzkyZmQwOTdhZjFjZjliOGZmOGJiNDBk
YjFiZWE1ZTNhODBhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0
ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVm
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygp
LAorICAgICAgICBwcml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAgICAgcHJpdi0+
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXNz
aW9ucygpCisgICAgfSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Qcml2YXRlJ3Mg
cHJpdmF0ZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TVByb3h5PihuZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2
KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94eTo6UmVtb3Rl
Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rvcnkp
KQorICAgICwgbV9wcml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVD
RE1Qcm94eSgpID0gZGVmYXVsdDsKKworYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKK30K
KworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5z
YW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVD
RE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1Qcm94eTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV2ViQ29yZTo6Q0RNUHJp
dmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9wcml2YXRl
LT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbiksIGFjY2Vz
cywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpjcmVhdGVJ
bnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7Cisg
ICAgaWYgKCFwcml2YXRlSW5zdGFuY2UgfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0
aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluc3RhbmNl
ID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBwcml2
YXRlSW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZpZ3VyYXRpb24o
KTsKKyAgICBtX2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1vdmUoaW5zdGFu
Y2UpKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworfQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAg
bV9wcml2YXRlLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzlkNTU4ZGZmYTE1MmMwZGQ1YTBjMGIyYjVhODE3MzJhMWRiNWIxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAg
LTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsK
K2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Oworc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zOworfQorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Oworc3RydWN0IFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOwor
CitjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4geworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYp
OworICAgIH5SZW1vdGVDRE1Qcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQo
KTsgfQorCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9mYWN0b3J5LmdldCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJl
bW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZh
dGU+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBX
ZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OkNETVByaXZh
dGU6OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNyZWF0ZUlu
c3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZEFu
ZEluaXRpYWxpemUoKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2Zh
Y3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IG1fcHJpdmF0
ZTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9u
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTU1NTg0
ZWRmMTcxYTE2NWRjNTNmMGRhZTVmMWEzOTQ4Yzc1NWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1Qcm94eSBOb3RS
ZWZDb3VudGVkIHsKKyAgICBHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIGVudW06
Ym9vbCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKSAtPiAo
T3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gYWNjdW11bGF0ZWRD
b25maWd1cmF0aW9uKSBBc3luYworICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBMb2FkQW5k
SW5pdGlhbGl6ZSgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGM5ZDJlZTQ0
NWJkNWU2YTk0YWE0OGQ1OGI5ZTA0MjEzYmM1YWYyZTAuLjg3MWRlYTYwYmI3MjgyMWM2MTM1NDE4
ZjI4N2I5NTgzNjMwZmI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTGF5ZXJI
b3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3Nh
Z2VzLmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01MjMsOSArNTI4LDkgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcktleU5lZWRlZChVaW50OEFycmF5KikKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGlu
aXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC02OTUsNiArNzAw
LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlu
c3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGlu
c3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VBdHRhY2hlZChpbnN0YW5j
ZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNl
SWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNl
SWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0YW5jZVByb3h5
LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0
VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3Rh
bmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3Rh
bmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShp
bnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRpZgorCisKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29s
IHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxheWVyLT5iZWdpblNpbXVsYXRlZEhE
Q1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggZmFkYmUwOWE3ZDU0M2QxMWExODg2NjJhZmM3
OGFlYzRkMWU0ZjgwNy4uOGIzN2MwNDIwZGFhZjNhMjliMDc2MzA5NmZhMDA0MGFkZWRjY2IyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFz
cyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTQxLDYgKzE0NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7
CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYKKwogICAgIHZvaWQgYmVnaW5TaW11
bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDUwMzE4OTY3ZjI4MDZkYmMwNWZi
YTc1ZmI4ZTBjNTliMzQxZmQyYmMuLjM0ZDI0MThjY2Y4YWJiZmNjZjVkYzQxODIxNDA4YTY4MGVi
YTdjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC04Miw5ICs4Miwx
NiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICMgU2V0Q0RNU2Vzc2lvbgog
ICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0YWNoZWQKLSAgICAjIENkbUluc3Rh
bmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UKKyNlbmRpZgor
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBDZG1JbnN0YW5jZUF0dGFjaGVkKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisgICAgQ2RtSW5z
dGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5j
ZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgU2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKICNlbmRpZgogCiAgICAgQmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCAwYmUxNTQ1MWQ5YWI4NDliOWFh
NDliNTRjMzE1OTQ0Y2Q2ZjhmNzFiLi40ZjQ5ZjNhMzg3ZDBlYTEwZjE2MWU1YWQ3OWY4ZDc4NTUw
M2QxNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaApAQCAtNjEsOSArNjEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5kaWYKIAotICAgIHZp
cnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlJik7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYp
OwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oCmluZGV4IGJkYjBlYjAwN2JkYWE0N2M1ZGY2NjZiYWFl
MjE5MzJkYTc5OTM5YjcuLjY1MGJmOWZiOTM4ZWRmZjFkM2QyYjM0ZjM3MTA3OTE2ZWIzYmExMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1Ry
YWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9UcmFja1Byb3h5LmgKQEAgLTMyLDE1ICszMiwyMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVHJh
Y2tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb1RyYWNrUHJpdmF0ZS5oPgogCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBSZW1vdGVWaWRlb1RyYWNrUHJveHk7CiBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3Rl
Q29uZmlndXJhdGlvbjsKIAogY2xhc3MgUmVtb3RlVmlkZW9UcmFja1Byb3h5IGZpbmFsCiAgICAg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlVmlkZW9UcmFja1Byb3h5LCBXVEY6
OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPgogICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpWaWRlb1Ry
YWNrUHJpdmF0ZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb1Ry
YWNrUHJveHk+IGNyZWF0ZShSZW1vdGVNZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
biwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVZpZGVvVHJhY2tQcm94eT4gY3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwg
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9UcmFja1Byb3h5KHBs
YXllciwgaWQsIFdURk1vdmUoY29ubmVjdGlvbiksIHRyYWNrUHJpdmF0ZSkpOwogICAgIH0KQEAg
LTUwLDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3Rl
ZCkgeyBtX3RyYWNrUHJpdmF0ZS0+c2V0U2VsZWN0ZWQoc2VsZWN0ZWQpOyB9CiAKIHByaXZhdGU6
Ci0gICAgUmVtb3RlVmlkZW9UcmFja1Byb3h5KFJlbW90ZU1lZGlhUGxheWVyUHJveHkmLCBUcmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBWaWRlb1Ry
YWNrUHJpdmF0ZSYpOworICAgIFJlbW90ZVZpZGVvVHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXll
clByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiwgV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGUmKTsKIAogICAgIC8vIFZpZGVvVHJhY2tQ
cml2YXRlQ2xpZW50CiAgICAgdm9pZCBzZWxlY3RlZENoYW5nZWQoYm9vbCkgZmluYWw7CkBAIC02
Nyw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgbV9wbGF5
ZXI7CiAgICAgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBSZWY8Vmlk
ZW9UcmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRlOworICAgIFJlZjxXZWJDb3JlOjpWaWRlb1Ry
YWNrUHJpdmF0ZT4gbV90cmFja1ByaXZhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDBlNzc0N2MyMmU4
ZjU5ODkyNTRjOTRmZWIxODdiOTBiM2IzNGNjYTguLjI1NmRjOTkwNWJmNDQ2NmQwYzJhZDU3NGQ4
YzM2OGExNGJlNjk2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMjM0LDYgKzIzNCw5IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpNZWRpYVJlY29yZGVySWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyJywKKyAgICAgICAg
J1dlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNl
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNWFkYjM3ZDhiNWJk
ZWYwMGE1NjZmNGEwMmRiNjRiYjk1ZGFiMDAyNC4uOGJmOGQzZDU1ZWE1NTQ2NTQ3YmMxMzdlNDI2
ODQwYTRhMTFmODE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCkBAIC0zMjE3LDQgKzMyMTcsNTkgQEAgT3B0aW9uYWw8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpk
ZWMKICAgICByZXR1cm4gYnVmZmVyOwogfQogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
K3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpNZXNzYWdlJiBtZXNzYWdlKQoreworICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJzdDsK
KworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQu
Y29weVJlZigpOworICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7Cit9CisKK09wdGlvbmFsPFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlVHlwZSB0eXBlOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gbWFrZU9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZT4oeyB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSB9KTsKK30KKwordm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9y
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzVmVjdG9yJiBrZXlTdGF0dXNlcykKK3sKKyAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQ2NF90PihrZXlTdGF0dXNlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYg
a2V5U3RhdHVzIDoga2V5U3RhdHVzZXMpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5ID0ga2V5U3RhdHVzLmZpcnN0LmNvcHlSZWYoKTsKKyAgICAgICAgZW5jb2RlciA8PCBrZXkg
PDwga2V5U3RhdHVzLnNlY29uZDsKKyAgICB9Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgdWludDY0X3QgZGF0YVNpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRhU2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNlczsKKyAgICBrZXlT
dGF0dXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFTaXplKTsKKworICAgIGZvciAodWlu
dDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShrZXkpIHx8ICFrZXkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzIHN0YXR1czsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICBrZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBrZXkucmVsZWFzZU5vbk51bGwo
KSwgc3RhdHVzIH0pOworICAgIH0KKyAgICByZXR1cm4ga2V5U3RhdHVzZXM7Cit9CisjZW5kaWYg
Ly8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDg5ODYzNTgzZjNi
YzE2NjkwOTc0NmRmNjE4MjY0N2Q2OTI1OWFlYzMuLmQwN2YyYmY1YjIxYjYyMGI5MTk4MTAxOTk0
MGUyNzQ0ZWQyNTAwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCkBAIC01Niw2ICs1NiwxMSBAQAogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNBZGRpdGlvbnMuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC04MzYsNiAr
ODQxLDE4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2UmKTsKKyAgICBzdGF0
aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBkZWNvZGUo
RGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3ImKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGRlY29kZShEZWNvZGVyJik7Cit9OworI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTk4NCw0ICsxMDAxLDI4
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V1RGTG9nTGV2ZWw+IHsKICAgICA+Owog
fTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZT4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lLAorICAgIFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb1Nlc3Npb25EYXRhLAorICAgIFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRjaGVkU2Vz
c2lvblR5cGUsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZh
aWx1cmU6OlF1b3RhRXhjZWVkZWQsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpT
ZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVyCisgICAgPjsKK307CisKK3RlbXBsYXRlIDw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzPiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlcyA8CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BT
dGF0dXMsCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlVua25vd24sCisg
ICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlZhbGlkLAorICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkLAorICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpPdXRwdXREb3duc2NhbGVkCisgICAgPjsKK307CisK
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGVlZGI3ZTZkZDlh
OWU5ZmEyMDdjZThhOGQzYjYyMmNkMmYwYzkzZGYuLjZkMGU4YzY4YTAyMzg4NzNiNjg2NDIzODNl
NWI3YmM1YWEwNjM3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjcsNiArMjcsMTAgQEAgR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCitH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAorR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBA
IC00MSw2ICs0NSw3IEBAIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlci5jcHAKIAorCiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNw
cAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAKIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTU0MSw2ICs1NDYsMTAgQEAg
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAK
K1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1YzUyNGYzNjIxNzdkZGM3MTI3
Mjc2MjU1Nzg4NzA0Y2ViMzlkYTMuLjUzZWRlNTY2ZDNkZThlOTk3NTRiOTY2MjU0NjRiNjFlYjE3
NDhhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTcwNiw2ICsxNzA2LDcgQEAKIAkJQ0QxOUQyRUEyMDQ2NDA2RjAwMTcwNzRBIC8q
IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxOUQyRTgyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNEMjg2NUVFMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMjg2NUVDMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIu
aCAqLzsgfTsKIAkJQ0QyODY1RUYyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVP
YnNlcnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEMjg2NUVEMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0g
Ki87IH07CisJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNENDkxQjA4MUU3MEQwNUYw
MDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5MDY2IC8qIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggKi87IH07CiAJCUNENDkxQjBEMUU3MzJFNEQwMDAwOTA2
NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ5MUIwQjFFNzMyRTREMDAw
MDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQlDRDQ5MUIwRTFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q0OTFCMEMxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2Fn
ZXMuaCAqLzsgfTsKQEAgLTE3MjgsNiArMTcyOSwyMCBAQAogCQlDREEyOUEyQjFDQkVCNjdBMDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTI3MUNCRUI2N0EwMDkw
MUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQlD
REE5M0RCMDIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1Bh
cmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlz
dGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1
cmlzdGljUGFyYW1ldGVycy5jcHAgKi87IH07CisJCUNEQUMyMEI0MjNGQjU4RjIwMDIxREVFMyAv
KiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5oICovOyB9OworCQlDREFDMjBDMzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREFDMjBCNjIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyLmggKi87IH07CisJCUNEQUMyMEM0MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi87
IH07CisJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBC
ODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oICovOyB9OworCQlD
REFDMjBDNzIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyog
UmVtb3RlQ0RNLmggKi87IH07CisJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBDQTIzRkMyRjc1MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi87IH07CisJCUNEQUMyMENEMjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eS5oICovOyB9OworCQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uLmggKi87IH07CisJCUNEQUMyMENGMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVD
RE1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oICov
OyB9OworCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBGNTIzRkMzODNCMDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJ
CUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREFDMjBFQzIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGQTIzRkM3MjZD
MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRUYyM0ZDMzgzOTAwMjFE
RUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0RDMjgz
MUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZF
NzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICovOyB9OwogCQlDRENBODVDOTEzMkFCQTRF
MDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURG
IC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQ0UxMUFENTIxQ0JD
NDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25p
bmcuaCAqLzsgfTsKQEAgLTQ5OTcsNiArNTAxMiwxMCBAQAogCQlDRDE5RDJFOTIwNDY0MDZGMDAx
NzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHA7IHBhdGggPSBpb3MvZnVsbHNjcmVl
bi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2Vy
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vz
c1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc1Rhc2tT
dGF0ZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ2NjE3RjI0
MDEwNDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0OTFCMDUxRTcwRDA1RjAwMDA5MDY2IC8q
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0Q0OTFCMDYxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkxQjBBMUU3MzJE
MTIwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTUwMzgsNiArNTA1Nyw0MyBAQAogCQlDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0Yg
LyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQ0RBOTNE
QUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVy
cy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFy
YW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREE5M0RBRjIyRjhCQ0Y0
MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNw
cDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFt
ZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3ODIzRkIxRTIx
MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3
OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwODIyM0ZCMjEzNDAw
MjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETVByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDgzMjNGQjIxMzQwMDIxREVF
MyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1Qcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDg2MjNGQjIxNTgwMDIx
REVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUQyM0ZCNTgy
QjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREFDMjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUYyM0ZC
NTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjEyM0ZCNThFMjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjBCMzIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI4MjNGQzJGNzMwMDIxREVF
MyAvKiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwQjkyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAv
KiBSZW1vdGVDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJCMjNGQzJGNzQwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkUyM0ZDMkY3NDAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMwMjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzEyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUz
IC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlQ0RNSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBFQjIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFQzIzRkMz
ODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjBFRDIzRkMzODM4MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2Vz
UmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Qcm94
eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBG
MTIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREFDMjBGMzIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFj
dG9yeVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBQzIwRjQyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGNTIzRkMzODNCMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjYyM0ZDMzgz
QjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREMyODMxQjIwMUJE
NzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdL
RnVsbHNjcmVlblN0YWNrVmlldy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVu
U3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzI4MzFDMjAxQkQ3
OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9XS0Z1
bGxzY3JlZW5TdGFja1ZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4
MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBDRk5ldHdvcmsuZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5h
bWUgPSBDRk5ldHdvcmsuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAg
LTUzMjIsNiArNTM3OCwyMCBAQAogCQkJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwICovLAogCQkJCTlCNUJFQzI4MjQwMTAxNTgwMDcw
QzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLywKIAkJCQk5QjVCRUMyRTI0
MDEwMThDMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmlu
ICovLAorCQkJCUNEQUMyMEJGMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uY3BwICovLAor
CQkJCUNEQUMyMEJBMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCAqLywKKwkJCQlDREFD
MjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oICovLAorCQkJ
CUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmNwcCAqLywKKwkJ
CQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovLAorCQkJ
CUNEQUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggKi8sCisJ
CQkJQ0RBQzIwQkIyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmNwcCAqLywK
KwkJCQlDREFDMjBCNzIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCAqLywK
KwkJCQlDREFDMjBDMTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uLmggKi8sCisJCQkJQ0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJFMjNGQzJGNzQwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICovLAorCQkJCUNEQUMyMEJEMjNGQzJGNzQwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAqLywKKwkJCQlDRDQ2NjE3RjI0MDEw
NDU4MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluICovLAor
CQkJCUNEQUMyMEJDMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25J
ZGVudGlmaWVyLmggKi8sCiAJCQkJMDdCOTNGRjUyM0FGMENCODAwMzZGOEVBIC8qIFJlbW90ZU1l
ZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTA3OTIzMTMwMjM5QjNCMEMwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwICovLAogCQkJCTA3OTIzMTM0MjM5QjNC
MEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLywKQEAgLTUzNTIsNiAr
NTQyMiwxOCBAQAogCQkJCTlCMTIyOUNGMjNGRjI4MTQwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzFCQzU3RTIzQ0E1REIxMDA2
ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwNzFCQzU3RjIzQ0E1
REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmggKi8sCisJCQkJQ0RBQzIwNzky
M0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgKi8sCisJCQkJQ0RB
QzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5oICovLAorCQkJ
CUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW4gKi8sCisJCQkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlUHJveHkuY3BwICovLAorCQkJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmggKi8sCisJCQkJQ0RBQzIwQjEyM0ZCNThFMjAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwQUYyM0ZCNTgy
QjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCAqLywKKwkJCQlD
REFDMjBBRTIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
aCAqLywKKwkJCQlDREFDMjBBRDIzRkI1ODJCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RBQzIwODMyM0ZCMjEzNDAwMjFERUUz
IC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjA4MjIzRkIyMTM0MDAyMURFRTMg
LyogUmVtb3RlQ0RNUHJveHkuaCAqLywKKwkJCQlDREFDMjA4NjIzRkIyMTU4MDAyMURFRTMgLyog
UmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcyNUVGQUQyMzlCMDI0NTAwQTUz
OEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLywKIAkJCQkwNzI1RUZB
QzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLywK
IAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05NzQ5LDYgKzk4MzEsMjEgQEAKIAkJCQkxQTA0M0I1
QzEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLywKIAkJ
CQkxQThFRkE2RTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRjMyM0ZDMzgzQTAwMjFE
RUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRUUy
M0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5o
ICovLAorCQkJCUNEQUMyMEY1MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBFQjIzRkMzODM4MDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIwRjYyM0ZD
MzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAq
LywKKwkJCQlDRDQ2NjE4MTI0MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDRDQ2NjE4MjI0MDEwNTY0MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMuaCAqLywKKwkJCQlDRDQ2NjE4MDI0
MDEwNTY0MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVz
LmggKi8sCisJCQkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREFDMjBFRDIzRkMzODM4
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oICovLAor
CQkJCUNEQUMyMEYxMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAv
KiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRjQyM0ZD
MzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBG
MDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywK
IAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZGMjRBMkMxODc5RTRCQzAwM0FC
RjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oICovLAogCQkJ
CTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTA2NTUsNiArMTA3NTIsMTYgQEAKIAkJCQk5QjEyMjlE
MjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTlCMTIyOUNEMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI1QkVDMkEyNDAxMDE1
ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0RBQzIwQzUyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENEMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRjIzRkMyRjc1MDAyMURF
RTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzQy
M0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDREFDMjBDRTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDMzIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBCNDIz
RkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzkyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDdC
NTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMTZBRUExNjRCM0E4ODAw
MjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMTIz
NTQsNiArMTI0NjEsMTEgQEAKIAkJCQkyRDU0QzMxQjIxMkY0REE2MDA0OUMxNzQgLyogUHJvY2Vz
c0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFD
NyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjEy
MjlDRTIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFD
MjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NBMzUgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNEQUMyMEY5MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGQTIz
RkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRBMkQxODc5RTRCQzAwM0FC
RjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxh
eWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGRmYjliOWE5Mzhi
OTg1ZDI4MGFjZGVkYTA0OGJjNWE2NmY3N2U2MWIuLmY5Yjk3MDE4MTcyZGE1MmIxYzcwNTQ5Mzk1
OTNjMjExZGZlZDAxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAi
TGliV2ViUlRDQ29kZWNzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWVzc2FnZXMuaCIKQEAgLTQ0LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApA
QCAtNzUsNiArODEsMTMgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0KIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUNETUZhY3RvcnkmIEdQVVByb2Nlc3ND
b25uZWN0aW9uOjpjZG1GYWN0b3J5KCkKK3sKKyAgICByZXR1cm4gKldlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKTsKK30KKyNlbmRpZgorCiBib29s
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpAQCAtMTAwLDYgKzExMywxMiBAQCBib29sIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlYwogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVEND
b2RlY3MoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlQ0RNRmFjdG9yeT4oKS0+ZGlk
UmVjZWl2ZVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCku
ZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDZhY2Rj
YmYzOTU0NTFiNmI0Yzk1OGVjYzkyYjUyMDE2YjY3NzcyODkuLjJiNTcyYzFiYWNiZmE2YjZiMjZm
MzU2MGMyNjJhOWE0MWIwYzc1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM5LDYgKzM5LDggQEAgY2xhc3MgRGF0
YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFJlbW90ZUNETUZhY3Rv
cnk7CisKIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8R1BV
UHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxHUFVQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTU4LDYgKzYwLDEwIEBAIHB1
YmxpYzoKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisgICAgUmVtb3RlQ0RNRmFjdG9yeSYgY2RtRmFjdG9yeSgpOworI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGQ4MDkwMTBkMWI1ZTQzNzY5
MWM0MjgwZDZhNDcyMzkwODRmM2ZlNzMuLjk1ZTczYTY1MDlhMmEzMjkzMGVjOTRmOTVhYzEzNmM2
ZjA4MGY0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTQ5LDYgKzQ5LDEw
IEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFu
Y2UuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAgLTkxMiwxOSArOTE2LDIy
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgpCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGlu
c3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OkNkbUluc3RhbmNlQXR0YWNoZWQoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFu
Y2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAotdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmKQordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2Um
IGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNE
TUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZURldGFjaGVkKGRvd25jYXN0PFJl
bW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNl
KENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9E
ZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAg
ICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
QXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShkb3duY2FzdDxSZW1vdGVDRE1JbnN0YW5jZT4o
aW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtOTMyLDYgKzkzOSwxMiBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleUNoYW5nZWQoKQogICAg
IG1fcGxheWVyLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwogfQogCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5n
JiBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSYmIGluaXREYXRhKQoreworICAgIGF1
dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwg
aW5pdERhdGEuc2l6ZSgpKTsKKyAgICBtX3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQoaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSk7Cit9CisKIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpAQCAtOTM5LDYgKzk1MiwxMyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVk
ZWQoYm9vbCBzaG91bGQpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OlNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxk
KSwgbV9pZCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDU1OWZkNjUwMjA4OGViYjM3
ZDc2ZWE3ZDY5MzU1NzI2MzhmMjEwMjMuLjdhYjY2NTI5YTUxOTczNTgzMWNmYmNjODk5MThiYmE3
NzdhYzVjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMTM5LDYgKzEzOSw3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdm9pZCB3YWl0aW5n
Rm9yS2V5Q2hhbmdlZCgpOworICAgIHZvaWQgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQo
Y29uc3QgU3RyaW5nJiwgSVBDOjpEYXRhUmVmZXJlbmNlJiYpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMzE1LDYgKzMxNiwxMCBAQCBwcml2YXRl
OgogICAgIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICB2b2lkIHNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCkgZmluYWw7Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29sIHJlcXVpcmVzVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4IGE1MDc3NmRk
YWE0Mjc2YzFjNmRkZTdlNWRiMDdiZjk4YTY3YWU4ZjUuLjk0NDhkZTAyZjFhYzllNDY0MzgzM2My
ZDU1Mzc1OWM5ODMwYjgxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluCkBAIC03NSw2ICs3NSw3IEBAIG1lc3NhZ2VzIC0+IE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZSBOb3RSZWZDb3VudGVkIHsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAg
ICAgV2FpdGluZ0ZvcktleUNoYW5nZWQoKQorICAgIEluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKFN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBpbml0RGF0YSkKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YzkxYjQwZjNiOWM3NWIzYzExMGI2MzZmNjhjYTU3MDVhMjViNTQ4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC0w
LDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
UmVtb3RlQ0RNUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DRE1SZXN0cmljdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IFJlbW90ZUNETTo6Y3Jl
YXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JZGVudGlm
aWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPihuZXcgUmVtb3RlQ0RNKFdURk1vdmUo
ZmFjdG9yeSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7Cit9CisKK1Jl
bW90ZUNETTo6UmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBS
ZW1vdGVDRE1JZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2lkZW50
aWZpZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1
cmF0aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRp
b24oQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIExvY2FsU3RvcmFn
ZUFjY2VzcyBhY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9w
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVt
b3RlQ0RNUHJveHk6OkdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0
aW9uKSwgYWNjZXNzKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7Cit9CisKKwor
Ym9vbCBSZW1vdGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBD
RE1SZXN0cmljdGlvbnMmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAorewor
ICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgorICAgIHJldHVybiB0cnVlOwor
fQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1
aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBj
b25zdCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQ7Cit9
CisKK0NETVJlcXVpcmVtZW50IFJlbW90ZUNETTo6cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQo
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENETVJlcXVp
cmVtZW50OjpOb3RBbGxvd2VkOworfQorCitib29sIFJlbW90ZUNETTo6ZGlzdGluY3RpdmVJZGVu
dGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK1JlZlB0cjxDRE1JbnN0YW5jZT4gUmVtb3RlQ0RNOjpjcmVhdGVJ
bnN0YW5jZSgpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkOworICAgIFJlbW90ZUNETUlu
c3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUNE
TVByb3h5OjpDcmVhdGVJbnN0YW5jZSgpLCBNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkNyZWF0
ZUluc3RhbmNlOjpSZXBseShpZCwgY29uZmlndXJhdGlvbiksIG1faWRlbnRpZmllcik7CisgICAg
aWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFJlbW90ZUNETUlu
c3RhbmNlOjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0b3J5LmdldCgpKSwgV1RGTW92ZShpZCks
IFdURk1vdmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETTo6bG9hZEFuZElu
aXRpYWxpemUoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBtX2lkZW50aWZpZXIp
OworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNr
IHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6dXBkYXRlTGljZW5zZSgpLgorICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7Cit9CisKK09w
dGlvbmFsPFN0cmluZz4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0
ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Npb24oKS4K
KyAgICByZXR1cm4gc2Vzc2lvbklkOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZkNmYzNjk3
OWIwNDUyY2Y5NmE1MmQxOGY2YWQwYjdmMzM0OGU4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90
ZUNETSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1Qcml2YXRlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RN
RmFjdG9yeT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9u
JiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETSgpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAg
ICBSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JZGVudGlm
aWVyJiYsIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mJik7CisKKyAgICB2b2lkIGdldFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRp
ZGF0ZUNvbmZpZ3VyYXRpb24sIExvY2FsU3RvcmFnZUFjY2VzcywgU3VwcG9ydGVkQ29uZmlndXJh
dGlvbkNhbGxiYWNrJiYpIGZpbmFsOworCisgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24o
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2
ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwor
ICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNv
bnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpD
RE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
RE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRBbmRJbml0
aWFsaXplKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAg
ICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOworCisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFU
eXBlczsgfQorICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkUm9idXN0bmVzc2Vz
OyB9CisgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsgfQorICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi5zdXBwb3J0c1Nlc3Npb25zOyB9CisKKyAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+
IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVDRE1JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MmM0NjRmZGZkY2Q4YzM1NzU2YjBl
MzhkYWQwZjg5MzkwNTg4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDg0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBl
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiB7CisgICAgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBv
cnRlZFJvYnVzdG5lc3NlczsKKyAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOwor
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uczsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAg
IGVuY29kZXIgPDwgc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAgZW5jb2RlciA8PCBz
dXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydHNTZXJ2ZXJD
ZXJ0aWZpY2F0ZXM7CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydHNTZXNzaW9uczsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVt
b3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAg
ICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7
CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKKyAgICAgICAgaWYg
KCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZFJvYnVz
dG5lc3NlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAg
ICAgIGlmICghc3VwcG9ydGVkUm9idXN0bmVzc2VzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlczsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsKKyAg
ICAgICAgaWYgKCFzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcykKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXNzaW9u
czsKKyAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nlc3Npb25zOworICAgICAgICBpZiAoIXN1
cHBvcnRzU2Vzc2lvbnMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVkSW5pdERhdGFUeXBl
cyksCisgICAgICAgICAgICBXVEZNb3ZlKCpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMpLAorICAgICAg
ICAgICAgKnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzLAorICAgICAgICAgICAgKnN1cHBvcnRz
U2Vzc2lvbnMsCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMmQzZDVjNjEwYWY1NGFkMWQz
ZWY0ZmE2MWM0NTk2NjY1Mjk3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCkBAIC0wLDAgKzEsMTAxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZh
Y3RvcnkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNE
TUZhY3RvcnkoV2ViUHJvY2VzcyYgcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQor
eworfQorCitSZW1vdGVDRE1GYWN0b3J5Ojp+UmVtb3RlQ0RNRmFjdG9yeSgpID0gZGVmYXVsdDsK
Kwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZWdpc3RlckZhY3RvcnkoVmVjdG9yPENETUZhY3Rv
cnkqPiYgZmFjdG9yaWVzKQoreworICAgIGZhY3Rvcmllcy5hcHBlbmQodGhpcyk7Cit9CisKK2Nv
bnN0IGNoYXIqIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1
cm4gIlJlbW90ZUNETUZhY3RvcnkiOworfQorCitHUFVQcm9jZXNzQ29ubmVjdGlvbiYgUmVtb3Rl
Q0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworICAgIHJldHVybiBtX3Byb2Nl
c3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKworYm9vbCBSZW1vdGVDRE1GYWN0
b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBi
b29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRz
S2V5U3lzdGVtKGtleVN5c3RlbSksIE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlN1
cHBvcnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOworICAgIHJldHVybiBzdXBw
b3J0ZWQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBSZW1vdGVDRE1GYWN0b3J5
OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgUmVtb3RlQ0RNSWRl
bnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Cisg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNKGtleVN5c3RlbSksIE1lc3NhZ2VzOjpS
ZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETTo6UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24p
LCB7IH0pOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBSZW1vdGVDRE06OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92ZShpZCksIFdURk1v
dmUoY29uZmlndXJhdGlvbikpOworfQorCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OmFkZFNlc3Np
b24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZCwgUmVmPFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9zZXNzaW9ucy5jb250
YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNlc3Npb24pKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fc2Vzc2lvbnMuY29udGFpbnMo
aWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFj
dG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9z
ZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Np
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODllZDA2MDAxYzY2M2JhZjE4NWRiOTMxNzQ5N2U5
MmNmYmZjMDZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3Mg
Q29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFJlbW90ZUNETTsKK2NsYXNzIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjsKK2NsYXNzIFdlYlByb2Nlc3M7CisKK2NsYXNzIFJlbW90ZUNE
TUZhY3RvcnkgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpDRE1GYWN0b3J5CisgICAgLCBw
dWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxS
ZW1vdGVDRE1GYWN0b3J5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgUmVtb3RlQ0RNRmFjdG9yeShXZWJQcm9jZXNzJik7CisgICAgdmlydHVh
bCB+UmVtb3RlQ0RNRmFjdG9yeSgpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1l
bnROYW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2VzczsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9u
KCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmFjdG9yeShWZWN0b3I8V2ViQ29yZTo6Q0RNRmFjdG9y
eSo+Jik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsK
KyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
cik7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+
IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzS2V5U3lz
dGVtKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPj4gbV9zZXNz
aW9uczsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVDRE0+PiBtX2NkbXM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVlM2EzODE5YzE3MDdiNTU4YjNm
ZDlhYWE4ODE2MzE1ODM5MmZhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNETUlkZW50aWZpZXJUeXBl
IHsgfTsKK3VzaW5nIFJlbW90ZUNETUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90
ZUNETUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTFhMGUwYjUyZDJkYjViMzY2ZThhYjY2OTY4YzU2
MTQ2MmVkZDljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwor
I2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUluc3RhbmNlPiBSZW1vdGVD
RE1JbnN0YW5jZTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVDRE1JbnN0YW5jZShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25m
aWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1JbnN0YW5jZTo6UmVtb3RlQ0RNSW5zdGFuY2Uo
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllciYmIGlkLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2lkZW50aWZp
ZXIoV1RGTW92ZShpZCkpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0
aW9uKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24sIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBwZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNr
KEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdU
Rk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGNl
cnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFj
dG9yeSkgeworICAgICAgICBjYWxsYmFjayhGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFNl
cnZlckNlcnRpZmljYXRlKGNlcnRpZmljYXRlLmdldCgpKSwgV1RGTW92ZShjYWxsYmFjayksIG1f
aWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U3Rv
cmFnZURpcmVjdG9yeShkaXJlY3RvcnkpLCBtX2lkZW50aWZpZXIpOworfQorCitSZWZQdHI8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlU2Vzc2lv
bigpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZDsKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uKCksIE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBseShpZCksIG1faWRlbnRpZmllcik7
CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBzZXNzaW9u
ID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0b3J5
LmdldCgpKSwgV1RGTW92ZShpZCkpOworICAgIG1fZmFjdG9yeS0+YWRkU2Vzc2lvbihpZCwgc2Vz
c2lvbi5jb3B5UmVmKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NWY0OWI5NzM5ZDI0NzlkNTU1ZGY4ZmIwMjdlZGZlY2E5
YzM0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNl
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2UuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkNETUluc3RhbmNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0
YW5jZSgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNETUluc3RhbmNlPiBjcmVh
dGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZp
ZXImJiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOworCisgICAgY29uc3QgUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNSW5zdGFuY2UoV2Vha1B0cjxS
ZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiwgUmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpOworCisgICAgSW1wbGVtZW50YXRpb25UeXBlIGlt
cGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlw
ZTo6UmVtb3RlOyB9CisgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3Qg
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVu
dGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwor
CisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOworfTsKKworfQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0NETV9JTlNUQU5DRShXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlLCBXZWJDb3JlOjpD
RE1JbnN0YW5jZTo6SW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGUpCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUzMmQ3MmU3Y2U0Yjg1
M2YyZDNiOTM0NTVlMTkyODFjNDE5ZmE0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
biB7CisgICAgU3RyaW5nIGtleVN5c3RlbTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAg
IGVuY29kZXIgPDwga2V5U3lzdGVtOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNv
ZGVyPgorICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5n
PiBrZXlTeXN0ZW07CisgICAgICAgIGRlY29kZXIgPj4ga2V5U3lzdGVtOworICAgICAgICBpZiAo
IWtleVN5c3RlbSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
cmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCprZXlTeXN0ZW0pLAorICAgICAgICB9fTsK
KyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmZkZTY5MWMzZTg5NWI4ODU5ZTYyMDVh
NzFlMTE1ZmE5YjRmZTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRp
Zmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciA9IE9i
amVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZT47CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MDVjY2JlMjM5NmY5YjJmODZjOWM2YjI2ZjMzZTFiYTIzNWIwMTc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxS
ZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXImJiBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsKK30KKworUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVD
RE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIm
JiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlm
aWVyKFdURk1vdmUoaWQpKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBXVEZN
b3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewor
ICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVyKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKG1lc3NhZ2UuYnVm
ZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1faWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAo
IW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIFdURk1vdmUocmVzcG9uc2UpKSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFs
PEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5n
ZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVk
KSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soc2Vzc2lvbldhc0Nsb3NlZCwgV1RGTW92ZShj
aGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBXVEZNb3ZlKG1lc3NhZ2Up
LCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOworICAgIH0sIG1faWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkg
eworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpMb2FkU2Vzc2lvbih0eXBlLCBzZXNzaW9uSWQsIG9yaWdpbiksIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRL
ZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPE1lc3Nh
Z2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZSBsb2FkRmFp
bHVyZSkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBX
VEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8g
U3VjY2VlZGVkIDogRmFpbGVkLCBsb2FkRmFpbHVyZSk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmNsb3NlU2Vzc2lvbihjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjaygpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpDbG9zZVNlc3Npb24oc2Vzc2lvbklkKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldICgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjaygpOworICAgIH0sIG1faWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vz
c2lvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9mYWN0b3J5KSB7Cisg
ICAgICAgIGNhbGxiYWNrKHsgfSwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBPcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNj
ZWVkZWQpIG11dGFibGUgeworICAgICAgICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVh
bE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2Uu
dmFsdWUoKS5idWZmZXIoKSkKKyAgICAgICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1
ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
Y2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVk
IDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Zh
Y3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpTdG9yZVJlY29yZE9mS2V5VXNhZ2Uoc2Vz
c2lvbklkKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQorewor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fY2xpZW50ICYmIG1lc3Nh
Z2UuYnVmZmVyKCkpCisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZSh0eXBlLCBtZXNzYWdl
LmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCkpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKHNlc3Np
b25JZCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NjJkMDVmOGJmOTYzZWNjNTEyNjMyYTNhYWNjMDkwNDQ5ZWI1YzdiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisKK25hbWVzcGFjZSBJUEMgewor
Y2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBmaW5hbCA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGUoV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyJiYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbigpID0gZGVmYXVs
dDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeTsKKyAgICBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmLCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHVwZGF0ZUtl
eVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNv
cmU6OkNETU1lc3NhZ2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJik7Cisg
ICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCBzZXRD
bGllbnQoV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xpZW50
KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CisgICAgdm9pZCBjbGVhckNs
aWVudCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRyOyB9CisgICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNh
Z2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVD
RE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25DbGllbnQ+IG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzhjMjM5MmU3ZWY4NjIwNDYyMWQyODQxNDM4YjVlZGY0ZDM4MTUzNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBO
b3RSZWZDb3VudGVkIHsKKyAgICBVcGRhdGVLZXlTdGF0dXNlcyhXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNlcykKKyAgICBTZW5kTWVzc2FnZShl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpCisgICAgU2Vzc2lvbklkQ2hhbmdlZChTdHJpbmcgc2Vz
c2lvbklkKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg2YWNkMTI2NWFmMGM4NDYzODhlMjNmOWNjYTE2ZDkwMjMz
OGZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAK
aW5kZXggMmFhZTVlNTQ0NTEwODQ3OWJkM2NkMzM5YWZhNmJmNmQyZGRhYmNmNi4uNWQ3YThiOGQx
MTI0YjJhNTI4YWQ3M2JkYzk2ZDlhOTc4MGRjMjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCkBAIC0yOCw2
ICsyOCw4IEBACiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rl
c3RpbmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KQEAgLTUxLDcgKzUzLDEzIEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uPiBXZWJNZWRpYVN0cmF0ZWd5OjpjcmVhdGVB
dWRpb0Rlc3RpbmF0CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIHZvaWQgV2ViTWVkaWFT
dHJhdGVneTo6cmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3Rvcnkq
PiYgZmFjdG9yaWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpDRE1GYWN0b3J5OjpwbGF0Zm9y
bVJlZ2lzdGVyRmFjdG9yaWVzKGZhY3Rvcmllcyk7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
ICAgIGlmIChtX3VzZUdQVVByb2Nlc3MpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jZG1GYWN0b3J5KCkucmVnaXN0ZXJGYWN0
b3J5KGZhY3Rvcmllcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBXZWJD
b3JlOjpDRE1GYWN0b3J5OjpwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKGZhY3Rvcmllcyk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA5NzBhOWJiMjM3YWMzOThkNmUxODJmOWU3ZTllMzc3NDY0MWNiOThkLi43NzNhNTlj
ZGExZDQ5YjZkNWNkYWVhZTViNzZiMmEwZGZiYTllNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzIyLDYgKzMyMiw5IEBACiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgi
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
LmgiCisjZW5kaWYKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA1ZjA0ZWI5YWZjYjY0ZmY0OTg4NDFhNDZhNDcx
NzE0OTcyZWM2OWFkLi41MWMyZjVlNTNiMzQwYzIyMDVmNzg5YjRiMzczYTJlNTA3YmI2ZWJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNzQsNiArMTc0LDEw
IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlmCisK
ICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25J
RC0+dG9VSW50NjQoKSA6IDApCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5l
bCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBj
aGFubmVsLCAiJXAgLSBbc2Vzc2lvbklEPSUiIFBSSXU2NCAiXSBXZWJQcm9jZXNzOjoiIGZtdCwg
dGhpcywgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMjQwLDYg
KzI0NCwxMCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICBhZGRTdXBwbGVtZW50PFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGFkZFN1cHBsZW1lbnQ8UmVtb3Rl
Q0RNRmFjdG9yeT4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392424</attachid>
            <date>2020-03-04 09:31:28 -0800</date>
            <delta_ts>2020-03-04 09:36:31 -0800</delta_ts>
            <desc>Patch for landing: Part 3: RemoteCDM</desc>
            <filename>bug-208090-20200304093127.patch</filename>
            <type>text/plain</type>
            <size>172450</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUxODRmODVlMzhkNjEx
ZGUxMDQ1ZGMzNThmMzY3MWYwMGYwYmI4Yy4uNDExZDkxNDJiNDFlZGMyMDQ1YjAxZDcxOGM2M2Yx
NDEwYTZjNDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGV4cG9ydCBtYWNyb3MgdG8gQ0RNRmFjdG9yeTo6
cmVnaXN0ZXJlZEZhY3RvcmllcygpLgorCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRmFjdG9yeS5oOgorCiAyMDIwLTAzLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAoQ29va2llQ2FjaGUpIFVuYWJsZSB0byBsb2cg
aW50byBIdWx1LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTc2Y2I0ODY4ZjhlYTBkNWM0ZjY2Nzc0YjBmNDk1
ZjY1ZWFkYzc2Li40NTBlN2UzNTJmM2VhYjhmMzU2MGUxNjViNzNhYmU5M2MwODQ2OTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGlu
IHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90
ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAg
b2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBl
eGlzdGluZyBDRE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5ICB3aGVuIHRoZSBH
UFUgcHJvY2VzcyBpcyBkaXNhYmxlZCwKKyAgICAgICAgYnkgbWFraW5nIGluaXRpYWxpemF0aW9u
IG9mIHRoZSBDRE0gZmFjdG9yaWVzIGNvbnRpbmdlbnQgdXBvbiB0aGUgInVzZSBHUFUiIHNldHRp
bmcuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2Rt
RmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6ZmFjdG9yeUZvcktleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkSW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojpjb25maWd1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5zdGFu
Y2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6On5SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNUHJveHk6OmZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpSZW1vdGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0luaXRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lvbklkIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1GYWN0b3J5Ojp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZh
Y3Rvcnk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5Ojpy
ZW1vdmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVj
ZWl2ZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9m
S2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTAzICBKaXRl
biBNZWh0YSAgPGptZWh0YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5h
dGl2ZSBTZXJ2aWNlcyBTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKaW5kZXggNTI1Yzg0ZWNiZTc5MWY0MGI1NDdmYjdm
YWZkZTlkMDNiYTgxMGJhZS4uZmIzNTBkNDg1NWExYWIzM2IxYjZkMWM0ZGNlNzNhN2U3MjZhNjUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUZhY3RvcnkuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
c3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3Rv
cmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShD
RE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5yZWdpc3RlckZh
Y3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggODZmMDFiMzlhMDQ3MjhjMmMwYmZmNjdlNWJkMzkzZjA5MWI3
N2Y5ZC4uOWY5NDZmODQ5N2FmMjNiNGFmYTUxYjc5MTg0MTg1MTg4NjBhYzViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTgsNiArMTgs
MTAgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTExMiw2ICsxMTYsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA2NDY0ZDgzODlmYjUzZjUy
NzUwNzA1MzljOTgxMGZiMmQ4Y2NiMzE5Li5hOTZjMmNmZGRkNDZiMzU5MjM4ZTk2MjM0M2E5OTIy
MTA0ZWVhNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKQEAgLTEzNyw2ICsxMzcsMjEgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNDM2ZTRiNDIyNGNiMDQ1
YzllYWIzYTZjNzA1NDMwYmQ1MjUzMzMzNC4uNDVlZTNkYjdlZDdlMTMzNzJjOGE3NWFkNTU1YTE2
NTg3ZjY3ZDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTUxLDYgKzE1MSwx
MSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyIFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVD
RE1Qcm94eSBcCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAorICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAog
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXll
clByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2YTJjODcwZjdhYWExYjBkYjAwMGVmODg4MjdjOWEw
ZjYxZGNmMjViLi42Y2YxYzMwYjNlMzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC02MCwxMCArNjAsMTggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VzLmgiCisjZW5kaWYKKworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTksNiArMjA3LDE2IEBAIExpYldlYlJUQ0NvZGVjc1By
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVDRE1GYWN0b3J5
UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSgpCit7Cisg
ICAgaWYgKCFtX2NkbUZhY3RvcnlQcm94eSkKKyAgICAgICAgbV9jZG1GYWN0b3J5UHJveHkgPSBt
YWtlVW5pcXVlPFJlbW90ZUNETUZhY3RvcnlQcm94eT4oKnRoaXMpOworCisgICAgcmV0dXJuICpt
X2NkbUZhY3RvcnlQcm94eTsKK30KKyNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcC5lbnN1cmUocmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIFsmXSgpIHsKQEAgLTI2OSw2ICsyODcsMjggQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHko
KS5kaWRSZWNlaXZlQ0RNTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKQEAgLTI5NCw2ICszMzQsMjggQEAgYm9vbCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICB9CiAjZW5kaWYKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2Rt
RmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQ
cm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1G
YWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCkBAIC0z
MDIsNyArMzY0LDcgQEAgY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpt
ZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKIH0KIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQogY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9n
cHVQcm9jZXNzLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDc0NzE1YzgwYzU0NWJlYWZlYzNmNmI3ZTA5ODRlY2E1MGNiYTI2NjkuLmEzZWNhNWM4
ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDgsNiArNDgs
NyBAQCBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CiBjbGFz
cyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsK
IGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKQEAgLTg1
LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciYgc2Vzc2lvbk1hbmFnZXIoKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEKTsKIApAQCAtMTM4LDYgKzE0MywxMCBAQCBwcml2YXRlOgogICAgIAogICAg
IHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcCA9IEhhc2hNYXA8UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNYXAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHlNYXA7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKaW5k
ZXggMTZhNThlZGE1NDA2YmViZTc2OTNiMTlmNjgxNjZmYzJmZjlmNzBjZi4uYTM2MWM0MjBhNjlh
MzgzNGVmMjg0MWY1ZDM2MGMwZjgzMDE5ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTM1LDYg
KzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1faWRlbnRpZmllcihp
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaAppbmRleCBkNGM3MDZhMmY3NDMzNjI1MDQ0YTQ0ZGIzNWYwNmFlNWY5ZWU4
NTEwLi5lODVmNTcyZTFhMDBhYTEwODZmNWZiZjIyZjFmN2JmMTAyYzRkMmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94
eS5oCkBAIC0zMiwxNSArMzIsMjAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVHJhY2tQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFja0Jhc2UuaD4KIAorbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OwogCiBjbGFzcyBSZW1vdGVBdWRpb1RyYWNrUHJveHkgZmluYWwKICAgICA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb1RyYWNrUHJveHksIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwcml2YXRlIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUF1ZGlvVHJhY2tQcm94eT4g
Y3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBBdWRpb1Ry
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9UcmFj
a1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb1RyYWNrUHJveHkocGxheWVyLCBpZCwg
V1RGTW92ZShjb25uZWN0aW9uKSwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQpAQCAtNTAsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RyYWNr
UHJpdmF0ZS0+c2V0RW5hYmxlZChlbmFibGVkKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZUF1
ZGlvVHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgQXVkaW9UcmFja1ByaXZhdGUmKTsK
KyAgICBSZW1vdGVBdWRpb1RyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlJik7CiAKICAgICAvLyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudAog
ICAgIHZvaWQgZW5hYmxlZENoYW5nZWQoYm9vbCkgZmluYWw7CkBAIC02Nyw3ICs3Miw3IEBAIHBy
aXZhdGU6CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgbV9wbGF5ZXI7CiAgICAgVHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGU+
IG1fdHJhY2tQcml2YXRlOworICAgIFJlZjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZT4gbV90
cmFja1ByaXZhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmNiYWY2YTU4NGI0ZjI3YjFkMmFhMjE3MmVhNWJjMWEzNDRlNTc0MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAi
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+Cisj
aW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDog
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZUNE
TUZhY3RvcnlQcm94eTo6flJlbW90ZUNETUZhY3RvcnlQcm94eSgpID0gZGVmYXVsdDsKKworc3Rh
dGljIENETUZhY3RvcnkqIGZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCit7CisgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3Rv
cmllcygpOworICAgIGF1dG8gZm91bmRJbmRleCA9IGZhY3Rvcmllcy5maW5kTWF0Y2hpbmcoWyZd
IChhdXRvJiBmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5LT5zdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0pOyB9KTsKKyAgICBpZiAoZm91bmRJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhY3Rvcmllc1tmb3VuZEluZGV4XTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWZhY3RvcnkpIHsK
KyAgICBhdXRvIGZhY3RvcnkgPSBmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSk7CisgICAg
ICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RNKGtleVN5c3RlbSk7CisgICAgaWYg
KCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcm94eSA9IFJlbW90ZUNETVByb3h5OjpjcmVhdGUo
bWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUocHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRp
ZmllciA9IFJlbW90ZUNETUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gcHJveHktPmNvbmZpZ3VyYXRpb24oKTsKKyAgICBh
ZGRQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgY29tcGxldGlvbihXVEZN
b3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAg
Y29tcGxldGlvbihmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSkpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHBy
b3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlm
aWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZh
Y3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5z
dGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAg
aW5zdGFuY2UtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
Cit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQor
eworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
ZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7
CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9u
cy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KGNvbnN0IFJlbW90ZUNETUlkZW50
aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHkpCit7Cisg
ICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlk
LCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiBpZCkKK3sKKyAgICBBU1NFUlQobV9w
cm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZShSZW1vdGVDRGNvbnN0IE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eT4mJiBpbnN0YW5jZSkKK3sKKyAgICBBU1NFUlQoIW1faW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9pbnN0YW5jZXMuc2V0KGlkLCBXVEZNb3ZlKGluc3RhbmNlKSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZShSZW1vdGVDRGNvbnN0IE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhp
ZCkpOworICAgIG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNl
UHJveHkqIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlk
KTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlQ0RN
SW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9z
ZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNl
c3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24o
UmVtb3RlQ0RNSW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQpCit7CisgICAgQVNT
RVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiOGEyOGY0YzNmNGRk
Mzc3MjgyM2NhNzA1MWNkMzY2ZDFkY2Y0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CitjbGFzcyBS
ZW1vdGVDRE1Qcm94eTsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0
b3J5UHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNv
ZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHko
Y29uc3QgUmVtb3RlQ0RNSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94
eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJik7
CisKKyAgICB2b2lkIGFkZEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmKTsKKyAgICB2b2lk
IHJlbW92ZUluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYpOworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKGNvbnN0IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXImLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisg
ICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisg
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETVByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4+IG1faW5zdGFu
Y2VzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNDdjNWU2ZTYxYzQyMDc4MzFkYTBiZDExOGE2YWFlYjQwZDMzMTM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4g
UmVtb3RlQ0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZUNETShTdHJp
bmcga2V5U3lzdGVtKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3Vz
CisgICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSkgLT4gKGJvb2wgcmVzdWx0
KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTI0OGZkZmM4MmQ5NGFlNmUwZWQxNzViMzUxYzFiMjZiNTVhMzEzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94
eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2KQoreworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiY+KHsKKyAg
ICAgICAgcHJpdi0+a2V5U3lzdGVtKCksCisgICAgfSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShX
VEZNb3ZlKGNkbSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30K
KworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRy
PFJlbW90ZUNETVByb3h5PiYmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6
IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKKyAg
ICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpID0gZGVmYXVsdDsK
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgYWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIG1faW5zdGFu
Y2UtPmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBhbGxvd0Rpc3Rp
bmN0aXZlSWRlbnRpZmllcnMsIGFsbG93UGVyc2lzdGVudFN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRp
b24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBjZXJ0aWZpY2F0ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYg
KCFjZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKENETUluc3RhbmNl
OjpGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0YW5jZS0+c2V0
U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShjb21wbGV0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBtX2lu
c3RhbmNlLT5zZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJiBjb21wbGV0aW9uKQor
eworICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7Cisg
ICAgaWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9jZG0gfHwgIW1fY2RtLT5mYWN0b3J5KCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8g
aWRlbnRpZmllciA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNy
ZWF0ZShtYWtlV2Vha1B0cihtX2NkbS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVhc2VOb25OdWxs
KCksIGlkZW50aWZpZXIpOworICAgIG1fY2RtLT5mYWN0b3J5KCktPmFkZFNlc3Npb24oaWRlbnRp
ZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MTEyZDVmODRiODg0NzMx
OWRjNDA0ZmVhMTUwNmM4YjFlZjMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUlu
c3RhbmNlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNSW5zdGFuY2U7CitzdHJ1Y3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciAgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+
JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJik7CisgICAgflJlbW90ZUNETUluc3RhbmNl
UHJveHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2U7IH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdl
YkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdXNpbmcg
U3VjY2Vzc1ZhbHVlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZTsKKyAgICB1
c2luZyBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzOworICAgIHVzaW5nIEFsbG93UGVyc2lzdGVudFN0
YXRlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOworCisgICAg
Ly8gTWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNj
ZXNzVmFsdWUpPiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1Y2Nlc3NWYWx1
ZSk+JiYpOworICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4gbV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNl
OworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmln
dXJhdGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lv
bnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NTBlODUzNDFjMmViMzViYjZlYzA4MDk1ZDVhMDA0ZWNjYTEzOWY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3Nh
Z2VzIC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRl
U2Vzc2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIg
aWQpIFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVjdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGVudW06Ym9v
bCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkFsbG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpIC0+IChlbnVtOmJv
b2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBBc3luYworICAg
IFNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0
aWZpY2F0ZSkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IHN1Y2Nlc3MpIEFzeW5jCisgICAgU2V0U3RvcmFnZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5
KQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0NmNmZDA1OWMzMTM5NGYxNmM2MWRlMTliMGZlM2MzNGJmYTRlNzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50aWZp
ZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHktPm1f
c2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Npb25Q
cm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAs
IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXRE
YXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFpbml0RGF0YS5idWZmZXIoKSkg
eworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUgQ0RNUHJpdmF0
ZTo6c3VwcG9ydHNJbml0RGF0YSgpIGNoZWNrIGhlcmU6CisgICAgaWYgKCFtX2NkbS0+c3VwcG9y
dHNJbml0RGF0YShpbml0RGF0YVR5cGUsICppbml0RGF0YS5idWZmZXIoKSkpIHsKKyAgICAgICAg
Y29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXRE
YXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24g
PSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9
KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5z
ZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxldGlv
bikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24o
dHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRlOjpzYW5pdGl6
ZVJlc3BvbnNlKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFJlc3BvbnNlID0gbV9j
ZG0tPnNhbml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKTsKKyAgICBpZiAoIXNhbml0
aXplZFJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UsIHsgfSwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0aXplZFJlc3Bv
bnNlLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0g
KGJvb2wgc2Vzc2lvbkNsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGlt
ZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUo
ZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vz
c2lvbklkLCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikK
K3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplU2Vzc2lvbklkKCkg
Y2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFNlc3Npb25JZCA9IG1fY2RtLT5zYW5pdGl6
ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgIGlmICghc2FuaXRpemVkU2Vzc2lvbklkKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRj
aGVkU2Vzc2lvblR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9u
LT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJh
dGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwg
V1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vl
ZGVkLCBmYWlsdXJlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5jbG9zZVNlc3Npb24o
c2Vzc2lvbklkLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUg
eyBjb21wbGV0aW9uKCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAg
bV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRT
ZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoZXhwaXJlZFNlc3Np
b25zRGF0YSkKKyAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7
CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJl
ZFNlc3Npb25EYXRhUmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorewor
ICAgIG1fc2Vzc2lvbi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0
YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdlKHR5cGUsIFdU
Rk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBm
YWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTgxNTM1NjZmNjQyZmM2OGEzNDU2NGU3NDY3NDUwZmI0NDlkYTk0MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
CisgICAgLy8gVHlwZXMKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I7CisgICAgdXNpbmcgTWVz
c2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAgICB1c2luZyBT
ZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZTsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgYm9vbCwgYm9vbCk+OworICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYm
LCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wpPjsKKyAgICB1
c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2Fn
ZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHVzaW5nIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3Rv
ciYmLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGJvb2wpPjsK
KyAgICB1c2luZyBTdG9yZVJlY29yZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PjsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJik7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4sIExv
YWRTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYpOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKKworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAor
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOworICAg
IHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4gbV9j
ZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gbV9zZXNzaW9uOworICAg
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41YjkzMTk2YzA5NWUwMzRiNjQyMWY4ZWU2MzhhZTA5ZWZjZTIwZTk0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBOb3RSZWZDb3Vu
dGVkIHsKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Okxp
Y2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9u
SWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNzaW9uV2FzQ2xv
c2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
cj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luKSAt
PiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+
IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25h
bDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3Vj
Y2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9u
TG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9uKFN0cmluZyBz
ZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3RyaW5nIHNlc3Np
b25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlKSAtPiAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXMs
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmluZyBzZXNzaW9u
SWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhYzkyZmQwOTdhZjFjZjliOGZmOGJiNDBk
YjFiZWE1ZTNhODBhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0
ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVm
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygp
LAorICAgICAgICBwcml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAgICAgcHJpdi0+
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXNz
aW9ucygpCisgICAgfSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Qcml2YXRlJ3Mg
cHJpdmF0ZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TVByb3h5PihuZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2
KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94eTo6UmVtb3Rl
Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rvcnkp
KQorICAgICwgbV9wcml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVD
RE1Qcm94eSgpID0gZGVmYXVsdDsKKworYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKK30K
KworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5z
YW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVD
RE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1Qcm94eTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV2ViQ29yZTo6Q0RNUHJp
dmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9wcml2YXRl
LT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbiksIGFjY2Vz
cywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpjcmVhdGVJ
bnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7Cisg
ICAgaWYgKCFwcml2YXRlSW5zdGFuY2UgfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0
aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluc3RhbmNl
ID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBwcml2
YXRlSW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZpZ3VyYXRpb24o
KTsKKyAgICBtX2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1vdmUoaW5zdGFu
Y2UpKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworfQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAg
bV9wcml2YXRlLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzlkNTU4ZGZmYTE1MmMwZGQ1YTBjMGIyYjVhODE3MzJhMWRiNWIxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAg
LTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsK
K2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Oworc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zOworfQorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Oworc3RydWN0IFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOwor
CitjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4geworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYp
OworICAgIH5SZW1vdGVDRE1Qcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQo
KTsgfQorCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9mYWN0b3J5LmdldCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJl
bW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZh
dGU+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBX
ZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OkNETVByaXZh
dGU6OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNyZWF0ZUlu
c3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZEFu
ZEluaXRpYWxpemUoKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2Zh
Y3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IG1fcHJpdmF0
ZTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9u
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTU1NTg0
ZWRmMTcxYTE2NWRjNTNmMGRhZTVmMWEzOTQ4Yzc1NWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1Qcm94eSBOb3RS
ZWZDb3VudGVkIHsKKyAgICBHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIGVudW06
Ym9vbCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKSAtPiAo
T3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gYWNjdW11bGF0ZWRD
b25maWd1cmF0aW9uKSBBc3luYworICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBMb2FkQW5k
SW5pdGlhbGl6ZSgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGM5ZDJlZTQ0
NWJkNWU2YTk0YWE0OGQ1OGI5ZTA0MjEzYmM1YWYyZTAuLjg3MWRlYTYwYmI3MjgyMWM2MTM1NDE4
ZjI4N2I5NTgzNjMwZmI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTGF5ZXJI
b3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3Nh
Z2VzLmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01MjMsOSArNTI4LDkgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcktleU5lZWRlZChVaW50OEFycmF5KikKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGlu
aXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC02OTUsNiArNzAw
LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlu
c3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGlu
c3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VBdHRhY2hlZChpbnN0YW5j
ZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNl
SWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNl
SWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0YW5jZVByb3h5
LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0
VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3Rh
bmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3Rh
bmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShp
bnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRpZgorCisKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29s
IHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxheWVyLT5iZWdpblNpbXVsYXRlZEhE
Q1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggZmFkYmUwOWE3ZDU0M2QxMWExODg2NjJhZmM3
OGFlYzRkMWU0ZjgwNy4uOGIzN2MwNDIwZGFhZjNhMjliMDc2MzA5NmZhMDA0MGFkZWRjY2IyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFz
cyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTQxLDYgKzE0NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7
CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYKKwogICAgIHZvaWQgYmVnaW5TaW11
bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDUwMzE4OTY3ZjI4MDZkYmMwNWZi
YTc1ZmI4ZTBjNTliMzQxZmQyYmMuLjM0ZDI0MThjY2Y4YWJiZmNjZjVkYzQxODIxNDA4YTY4MGVi
YTdjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC04Miw5ICs4Miwx
NiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICMgU2V0Q0RNU2Vzc2lvbgog
ICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0YWNoZWQKLSAgICAjIENkbUluc3Rh
bmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UKKyNlbmRpZgor
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBDZG1JbnN0YW5jZUF0dGFjaGVkKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisgICAgQ2RtSW5z
dGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5j
ZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgU2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKICNlbmRpZgogCiAgICAgQmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCAwYmUxNTQ1MWQ5YWI4NDliOWFh
NDliNTRjMzE1OTQ0Y2Q2ZjhmNzFiLi40ZjQ5ZjNhMzg3ZDBlYTEwZjE2MWU1YWQ3OWY4ZDc4NTUw
M2QxNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaApAQCAtNjEsOSArNjEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5kaWYKIAotICAgIHZp
cnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlJik7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYp
OwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oCmluZGV4IGJkYjBlYjAwN2JkYWE0N2M1ZGY2NjZiYWFl
MjE5MzJkYTc5OTM5YjcuLmM2ZTE5MzRmNWRmZmIwOWVmMjliZGU5MTExOWNjN2MwNDg4MzgxYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1Ry
YWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9UcmFja1Byb3h5LmgKQEAgLTMyLDE1ICszMiwyMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVHJh
Y2tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb1RyYWNrUHJpdmF0ZS5oPgogCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclByb3h5Owogc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90
ZUNvbmZpZ3VyYXRpb247CiAKIGNsYXNzIFJlbW90ZVZpZGVvVHJhY2tQcm94eSBmaW5hbAogICAg
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZVZpZGVvVHJhY2tQcm94eSwgV1RG
OjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4KICAgICAsIHByaXZhdGUgV2ViQ29yZTo6VmlkZW9U
cmFja1ByaXZhdGVDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9U
cmFja1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1By
aXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24sIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJlZjxSZW1v
dGVWaWRlb1RyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVNZWRpYVBsYXllclByb3h5JiBwbGF5ZXIs
IFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbiwgV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvVHJhY2tQcm94eShw
bGF5ZXIsIGlkLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCB0cmFja1ByaXZhdGUpKTsKICAgICB9CkBA
IC01MCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wgc2VsZWN0
ZWQpIHsgbV90cmFja1ByaXZhdGUtPnNldFNlbGVjdGVkKHNlbGVjdGVkKTsgfQogCiBwcml2YXRl
OgotICAgIFJlbW90ZVZpZGVvVHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5JiwgVHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgVmlkZW9U
cmFja1ByaXZhdGUmKTsKKyAgICBSZW1vdGVWaWRlb1RyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eSYsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYsIFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlJik7CiAKICAgICAvLyBWaWRlb1RyYWNr
UHJpdmF0ZUNsaWVudAogICAgIHZvaWQgc2VsZWN0ZWRDaGFuZ2VkKGJvb2wpIGZpbmFsOwpAQCAt
NjcsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIG1fcGxh
eWVyOwogICAgIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAg
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247Ci0gICAgUmVmPFZp
ZGVvVHJhY2tQcml2YXRlPiBtX3RyYWNrUHJpdmF0ZTsKKyAgICBSZWY8V2ViQ29yZTo6VmlkZW9U
cmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAwZTc3NDdjMjJl
OGY1OTg5MjU0Yzk0ZmViMTg3YjkwYjNiMzRjY2E4Li4yNTZkYzk5MDViZjQ0NjZkMGMyYWQ1NzRk
OGMzNjhhMTRiZTY5NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKQEAgLTIzNCw2ICsyMzQsOSBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9k
ZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcicsCisgICAgICAg
ICdXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDVhZGIzN2Q4YjVi
ZGVmMDBhNTY2ZjRhMDJkYjY0YmI5NWRhYjAwMjQuLjhiZjhkM2Q1NWVhNTU0NjU0N2JjMTM3ZTQy
Njg0MGE0YTExZjgxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcApAQCAtMzIxNyw0ICszMjE3LDU5IEBAIE9wdGlvbmFsPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6
ZGVjCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
Cit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZSYgbWVzc2FnZSkKK3sKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7
CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25k
LmNvcHlSZWYoKTsKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOworfQorCitPcHRpb25hbDxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZVR5cGUgdHlwZTsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIG1ha2VPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
Ok1lc3NhZ2U+KHsgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgfSk7Cit9CisKK3ZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
cj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMpCit7CisgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oa2V5U3RhdHVzZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8m
IGtleVN0YXR1cyA6IGtleVN0YXR1c2VzKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleSA9IGtleVN0YXR1cy5maXJzdC5jb3B5UmVmKCk7CisgICAgICAgIGVuY29kZXIgPDwga2V5
IDw8IGtleVN0YXR1cy5zZWNvbmQ7CisgICAgfQorfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YVNpemUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXM7CisgICAga2V5
U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRhU2l6ZSk7CisKKyAgICBmb3IgKHVp
bnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7ICsraSkgeworICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBrZXk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5KSB8fCAha2V5KQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1cyBzdGF0dXM7CisgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAga2V5U3RhdHVzZXMudW5jaGVja2VkQXBwZW5kKHsga2V5LnJlbGVhc2VOb25OdWxs
KCksIHN0YXR1cyB9KTsKKyAgICB9CisgICAgcmV0dXJuIGtleVN0YXR1c2VzOworfQorI2VuZGlm
IC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA4OTg2MzU4M2Yz
YmMxNjY5MDk3NDZkZjYxODI2NDdkNjkyNTlhZWMzLi5kMDdmMmJmNWIyMWI2MjBiOTE5ODEwMTk5
NDBlMjc0NGVkMjUwMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaApAQCAtNTYsNiArNTYsMTEgQEAKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQWRkaXRpb25zLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwpAQCAtODM2LDYg
Kzg0MSwxOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJik7CisgICAgc3Rh
dGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC05ODQsNCArMTAwMSwy
OCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdURkxvZ0xldmVsPiB7CiAgICAgPjsK
IH07CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordGVtcGxhdGUgPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU+
IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwKKyAgICBXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSwKKyAgICBXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNl
c3Npb25UeXBlLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRG
YWlsdXJlOjpRdW90YUV4Y2VlZGVkLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
U2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcgorICAgID47Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1cz4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQ
U3RhdHVzLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpVbmtub3duLAor
ICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzOjpWYWxpZCwKKyAgICBXZWJDb3Jl
OjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0UmVzdHJpY3RlZCwKKyAgICBXZWJDb3Jl
OjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0RG93bnNjYWxlZAorICAgID47Cit9Owor
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBlZWRiN2U2ZGQ5
YTllOWZhMjA3Y2U4YThkM2I2MjJjZDJmMGM5M2RmLi42ZDBlOGM2OGEwMjM4ODczYjY4NjQyMzgz
ZTViN2JjNWFhMDYzN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI3LDYgKzI3LDEwIEBAIEdQVVByb2Nl
c3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAor
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKK0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApA
QCAtNDEsNiArNDUsNyBAQCBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIuY3BwCiAKKwogTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5j
cHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwCiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCkBAIC01NDEsNiArNTQ2LDEwIEBA
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3Bw
CitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKK1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgQG5vLXVuaWZ5CiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNWM1MjRmMzYyMTc3ZGRjNzEy
NzI3NjI1NTc4ODcwNGNlYjM5ZGEzLi41M2VkZTU2NmQzZGU4ZTk5NzU0Yjk2NjI1NDY0YjYxZWIx
NzQ4YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE3MDYsNiArMTcwNiw3IEBACiAJCUNEMTlEMkVBMjA0NjQwNkYwMDE3MDc0QSAv
KiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTlEMkU4MjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDI4NjVFRTIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tT
dGF0ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVy
LmggKi87IH07CiAJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRl
T2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1t
ICovOyB9OworCQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENENDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ5MUIwODFFNzBEMDVG
MDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjA2MUU3MEQwNUYwMDAwOTA2NiAvKiBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovOyB9OwogCQlDRDQ5MUIwRDFFNzMyRTREMDAwMDkw
NjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0OTFCMEIxRTczMkU0RDAw
MDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENENDkxQjBDMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3Nh
Z2VzLmggKi87IH07CkBAIC0xNzI4LDYgKzE3MjksMjAgQEAKIAkJQ0RBMjlBMkIxQ0JFQjY3QTAw
OTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEyNzFDQkVCNjdBMDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJ
Q0RBOTNEQjAyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1Bh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQ
YXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hl
dXJpc3RpY1BhcmFtZXRlcnMuY3BwICovOyB9OworCQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjIyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHkuaCAqLzsgfTsKKwkJQ0RBQzIwQzMyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBQzIwQjYyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBDNDIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICov
OyB9OworCQlDREFDMjBDNTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIw
QjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKKwkJ
Q0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkEyM0ZDMkY3NDAwMjFERUUzIC8q
IFJlbW90ZUNETS5oICovOyB9OworCQlDREFDMjBDOTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwQ0EyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovOyB9OworCQlDREFDMjBDRDIzRkMyRjc1MDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBQzIwQzAyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnkuaCAqLzsgfTsKKwkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29u
ZmlndXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCAq
LzsgfTsKKwkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREFDMjBGMjIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRjUyM0ZDMzgzQjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owor
CQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RBQzIwRkEyM0ZDNzI2
QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEVGMjNGQzM4MzkwMDIx
REVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNEQzI4
MzFEMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI4MzFCMjAxQkQ3OUQwMEU2
RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAqLzsgfTsKIAkJQ0RDQTg1QzkxMzJBQkE0
RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFE
RiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi87IH07CiAJCUNFMTFBRDUyMUNC
QzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWdu
aW5nLmggKi87IH07CkBAIC00OTk3LDYgKzUwMTIsMTAgQEAKIAkJQ0QxOUQyRTkyMDQ2NDA2RjAw
MTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3BwOyBwYXRoID0gaW9zL2Z1bGxzY3Jl
ZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0QyODY1RUMyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUQyMjU1NTYyMDAwNjA2QUM3IC8qIFByb2Nl
c3NUYXNrU3RhdGVPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NUYXNr
U3RhdGVPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxN0Yy
NDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNENDY2MTgwMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNENDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0Q0NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkxQjA1MUU3MEQwNUYwMDAwOTA2NiAv
KiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNENDkxQjA2MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDQ5MUIwQTFFNzMy
RDEyMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MDM4LDYgKzUwNTcsNDMgQEAKIAkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNEQTkz
REFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRl
cnMuaDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1Bh
cmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBOTNEQUYyMkY4QkNG
NDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5j
cHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJh
bWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwNzgyM0ZCMUUy
MTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVDRE1GYWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
NzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMDgyMjNGQjIxMzQw
MDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Qcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA4MzIzRkIyMTM0MDAyMURF
RTMgLyogUmVtb3RlQ0RNUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA4NjIzRkIyMTU4MDAy
MURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQ0RNUHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFEMjNGQjU4
MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUUyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEFGMjNG
QjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIxMjNGQjU4RTIwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90
ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI2MjNGQzJGNzMwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5j
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCODIzRkMyRjczMDAyMURF
RTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMg
LyogUmVtb3RlQ0RNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNE
TS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCQjIzRkMyRjc0MDAyMURF
RTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJFMjNGQzJGNzQwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkYyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBDMDIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMxMjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEMyMjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBQzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUMyM0ZD
MzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjBFRTIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFDMjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIw
RjEyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjMyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETVByb3h5TWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY2MjNGQzM4
M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNz
YWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMjgzMUIyMDFC
RDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
S0Z1bGxzY3JlZW5TdGFja1ZpZXcuaDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL1dLRnVsbHNjcmVl
blN0YWNrVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREMyODMxQzIwMUJE
NzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vV0tG
dWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREMz
ODJGNzE3MjExNTA2MDA4QTJGQzMgLyogQ0ZOZXR3b3JrLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBu
YW1lID0gQ0ZOZXR3b3JrLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NGTmV0d29yay5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBA
IC01MzIyLDYgKzUzNzgsMjAgQEAKIAkJCQk5QjVCRUMyOTI0MDEwMTU4MDA3MEM2RUYgLyogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLywKIAkJCQk5QjVCRUMyODI0MDEwMTU4MDA3
MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi8sCiAJCQkJOUI1QkVDMkUy
NDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5p
biAqLywKKwkJCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNLmNwcCAqLywK
KwkJCQlDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi8sCisJCQkJQ0RB
QzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCAqLywKKwkJ
CQlDREFDMjBCOTIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5jcHAgKi8sCisJ
CQkJQ0RBQzIwQzAyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLywKKwkJ
CQlDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oICovLAor
CQkJCUNEQUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5jcHAgKi8s
CisJCQkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlLmggKi8s
CisJCQkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbi5oICovLAorCQkJCUNEQUMyMEI2MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBCRTIzRkMyRjc0MDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCAqLywKKwkJCQlDREFDMjBCRDIzRkMyRjc0MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi8sCisJCQkJQ0Q0NjYxN0YyNDAx
MDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywK
KwkJCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oICovLAogCQkJCTA3QjkzRkY1MjNBRjBDQjgwMDM2RjhFQSAvKiBSZW1vdGVN
ZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQkwNzkyMzEzNDIzOUIz
QjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8sCkBAIC01MzUyLDYg
KzU0MjIsMTggQEAKIAkJCQk5QjEyMjlDRjIzRkYyODE0MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcxQkM1N0UyM0NBNURCMTAw
NjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDcxQkM1N0YyM0NB
NURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5oICovLAorCQkJCUNEQUMyMDc5
MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwICovLAorCQkJCUNE
QUMyMDc4MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCAqLywKKwkJ
CQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3Nh
Z2VzLmluICovLAorCQkJCUNEQUMyMEIzMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjBCMjIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5oICovLAorCQkJCUNEQUMyMEIxMjNGQjU4RTIwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEFGMjNGQjU4
MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgKi8sCisJCQkJ
Q0RBQzIwQUUyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmggKi8sCisJCQkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMDgzMjNGQjIxMzQwMDIxREVF
MyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwODIyM0ZCMjEzNDAwMjFERUUz
IC8qIFJlbW90ZUNETVByb3h5LmggKi8sCisJCQkJQ0RBQzIwODYyM0ZCMjE1ODAwMjFERUUzIC8q
IFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTA3MjVFRkFEMjM5QjAyNDUwMEE1
MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJMDcyNUVG
QUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggKi8s
CiAJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtOTc0OSw2ICs5ODMxLDIxIEBACiAJCQkJMUEwNDNC
NUMxMjRENUU5RDAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi8sCiAJ
CQkJMUE4RUZBNkUxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNz
YWdlcy5oICovLAorCQkJCUNEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQUMyMEYzMjNGQzM4M0EwMDIx
REVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEVF
MjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMu
aCAqLywKKwkJCQlDREFDMjBGNTIzRkMzODNCMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRUIyM0ZDMzgzODAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEY2MjNG
QzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgg
Ki8sCisJCQkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0Q0NjYxODIyNDAxMDU2NDAwNDdDQTM1
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmggKi8sCisJCQkJQ0Q0NjYxODAy
NDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzUmVwbGll
cy5oICovLAorCQkJCUNEQUMyMEVDMjNGQzM4MzgwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RBQzIwRUQyM0ZDMzgz
ODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLywK
KwkJCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFDMjBFRjIzRkMzODM5MDAyMURFRTMg
LyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEQUMyMEY0MjNG
QzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RBQzIw
RjAyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8s
CiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTBGRjI0QTJDMTg3OUU0QkMwMDNB
QkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLywKIAkJ
CQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTEwNjU1LDYgKzEwNzUyLDE2IEBACiAJCQkJOUIxMjI5
RDIyM0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlDRDIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNUJFQzJBMjQwMTAx
NTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUNEQUMyMEM3MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE0uaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1Db25maWd1cmF0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyogUmVt
b3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0YyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM0
MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzMyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQjQy
M0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3
QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QUVBMTY0QjNBODgw
MDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTEy
MzU0LDYgKzEyNDYxLDExIEBACiAJCQkJMkQ1NEMzMUIyMTJGNERBNjAwNDlDMTc0IC8qIFByb2Nl
c3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDI4NjVFRjIyNTU1NjIwMDA2MDZB
QzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIx
MjI5Q0UyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RB
QzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q0NjYxODMyNDAxMEE2NzAwNDdDQTM1IC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRkEy
M0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNB
QkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVM
YXllclRyZWVWaWV3cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBkZmI5YjlhOTM4
Yjk4NWQyODBhY2RlZGEwNDhiYzVhNjZmNzdlNjFiLi5mOWI5NzAxODE3MmRhNTJiMWM3MDU0OTM5
NTkzYzIxMWRmZWQwMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUg
IkxpYldlYlJUQ0NvZGVjcy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1lc3NhZ2VzLmgiCkBAIC00NCw2ICs0NiwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlcy5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTc1LDYgKzgxLDEzIEBAIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVDRE1GYWN0b3J5JiBHUFVQcm9jZXNz
Q29ubmVjdGlvbjo6Y2RtRmFjdG9yeSgpCit7CisgICAgcmV0dXJuICpXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCk7Cit9CisjZW5kaWYKKwogYm9v
bCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTEwMCw2ICsxMTMsMTIgQEAgYm9vbCBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWMKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRD
Q29kZWNzKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCktPmRp
ZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgp
LmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA2YWNk
Y2JmMzk1NDUxYjZiNGM5NThlY2M5MmI1MjAxNmI2Nzc3Mjg5Li4yYjU3MmMxYmFjYmZhNmI2YjI2
ZjM1NjBjMjYyYTlhNDFiMGM3NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zOSw2ICszOSw4IEBAIGNsYXNzIERh
dGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1vdGVDRE1GYWN0
b3J5OworCiBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VVByb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCkBAIC01OCw2ICs2MCwxMCBAQCBw
dWJsaWM6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlcigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIFJlbW90ZUNETUZhY3RvcnkmIGNkbUZhY3RvcnkoKTsKKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBkODA5MDEwZDFiNWU0Mzc2
OTFjNDI4MGQ2YTQ3MjM5MDg0ZjNmZTczLi45NWU3M2E2NTA5YTJhMzI5MzBlYzk0Zjk1YWMxMzZj
NmYwODBmNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC00OSw2ICs0OSwx
MCBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUluc3Rh
bmNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVkaWE7CkBAIC05MTIsMTkgKzkxNiwy
MiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmKQordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlzPFJlbW90ZUNETUluc3RhbmNlPihp
bnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpDZG1JbnN0YW5jZUF0dGFjaGVkKGRvd25jYXN0PFJlbW90ZUNETUluc3Rh
bmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJikKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNl
JiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChpczxSZW1vdGVD
RE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFuY2VEZXRhY2hlZChkb3duY2FzdDxS
ZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCi12
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZShDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRv
RGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKSkKKyAg
ICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OkF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoZG93bmNhc3Q8UmVtb3RlQ0RNSW5zdGFuY2U+
KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKQEAgLTkzMiw2ICs5MzksMTIgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKICAg
ICBtX3BsYXllci0+d2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKIH0KIAordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSkKK3sKKyAgICBh
dXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCks
IGluaXREYXRhLnNpemUoKSk7CisgICAgbV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkKGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YUJ1ZmZlcikpOworfQorCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKQEAgLTkzOSw2ICs5NTIsMTMgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXkoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKGJvb2wgc2hvdWxkKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpTZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3Vs
ZCksIG1faWQpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA1NTlmZDY1MDIwODhlYmIz
N2Q3NmVhN2Q2OTM1NTcyNjM4ZjIxMDIzLi43YWI2NjUyOWE1MTk3MzU4MzFjZmJjYzg5OTE4YmJh
Nzc3YWM1Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTEzOSw2ICsxMzksNyBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQgd2FpdGlu
Z0ZvcktleUNoYW5nZWQoKTsKKyAgICB2b2lkIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVk
KGNvbnN0IFN0cmluZyYsIElQQzo6RGF0YVJlZmVyZW5jZSYmKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTMxNSw2ICszMTYsMTAgQEAgcHJpdmF0
ZToKICAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgdm9pZCBzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wpIGZpbmFsOwor
I2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgYm9vbCByZXF1aXJlc1RleHRU
cmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbihXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCBhNTA3NzZk
ZGFhNDI3NmMxYzZkZGU3ZTVkYjA3YmY5OGE2N2FlOGY1Li45NDQ4ZGUwMmYxYWM5ZTQ2NDM4MzNj
MmQ1NTM3NTljOTgzMGI4MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgpAQCAtNzUsNiArNzUsNyBAQCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
ICAgIFdhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKKyAgICBJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50
ZXJlZChTdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UgaW5pdERhdGEpCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGM5MWI0MGYzYjljNzViM2MxMTBiNjM2ZjY4Y2E1NzA1YTI1YjU0OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAt
MCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE0uaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJSZW1v
dGVDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUmVzdHJpY3Rpb25zLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPiBSZW1vdGVDRE06OmNy
ZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSWRlbnRp
ZmllciYmIGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4obmV3IFJlbW90ZUNETShXVEZNb3Zl
KGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitS
ZW1vdGVDRE06OlJlbW90ZUNETShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwg
UmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYgY29uZmln
dXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVu
dGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmln
dXJhdGlvbikpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0
aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBMb2NhbFN0b3Jh
Z2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJl
bW90ZUNETVByb3h5OjpHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJh
dGlvbiksIGFjY2VzcyksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCisK
K2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9u
V2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKK3sK
KyAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoKS4KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworQ0RNUmVxdWlyZW1lbnQgUmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVx
dWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwg
Y29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkOwor
fQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OnBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMm
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBDRE1SZXF1
aXJlbWVudDo6Tm90QWxsb3dlZDsKK30KKworYm9vbCBSZW1vdGVDRE06OmRpc3RpbmN0aXZlSWRl
bnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitSZWZQdHI8Q0RNSW5zdGFuY2U+IFJlbW90ZUNETTo6Y3JlYXRl
SW5zdGFuY2UoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZDsKKyAgICBSZW1vdGVDRE1J
bnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVD
RE1Qcm94eTo6Q3JlYXRlSW5zdGFuY2UoKSwgTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpDcmVh
dGVJbnN0YW5jZTo6UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24pLCBtX2lkZW50aWZpZXIpOworICAg
IGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1vdGVDRE1J
bnN0YW5jZTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQp
LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJ
bml0aWFsaXplKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVy
KTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjaGVj
ayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnVwZGF0ZUxpY2Vuc2UoKS4KKyAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOworfQorCitP
cHRpb25hbDxTdHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxh
dGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKCku
CisgICAgcmV0dXJuIHNlc3Npb25JZDsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2ZDZmMzY5
NzliMDQ1MmNmOTZhNTJkMThmNmFkMGI3ZjMzNDhlOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
Q0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1v
dGVDRE0gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJpdmF0ZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYsIFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE0oKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6Cisg
ICAgUmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSWRlbnRp
ZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOworCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRDb25maWd1cmF0aW9uKFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5k
aWRhdGVDb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3Vy
YXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9u
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3Ry
aWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29y
ZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGluY3Rp
dmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsK
KyAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChj
b25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6
Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CisgICAgdm9pZCBsb2FkQW5kSW5p
dGlhbGl6ZSgpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0
aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Cisg
ICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25z
dCBmaW5hbDsKKworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRh
VHlwZXM7IH0KKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZFJvYnVzdG5lc3Nl
czsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7IH0KKyAg
ICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3Vy
YXRpb24uc3VwcG9ydHNTZXNzaW9uczsgfQorCisgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5
PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAg
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjJjNDY0ZmRmZGNkOGMzNTc1NmIw
ZTM4ZGFkMGY4OTM5MDU4ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw4NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlw
ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24geworICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBw
b3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlczsK
KyAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnM7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBlbmNvZGVyIDw8IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGVuY29kZXIgPDwg
c3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRzU2VydmVy
Q2VydGlmaWNhdGVzOworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAg
fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPFJl
bW90ZUNETUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVz
OworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIGlm
ICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1
c3RuZXNzZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAg
ICAgICBpZiAoIXN1cHBvcnRlZFJvYnVzdG5lc3NlcykKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7Cisg
ICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzU2Vzc2lv
bnM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXNzaW9uczsKKyAgICAgICAgaWYgKCFz
dXBwb3J0c1Nlc3Npb25zKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUoKnN1cHBvcnRlZEluaXREYXRhVHlw
ZXMpLAorICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVkUm9idXN0bmVzc2VzKSwKKyAgICAg
ICAgICAgICpzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcywKKyAgICAgICAgICAgICpzdXBwb3J0
c1Nlc3Npb25zLAorICAgICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjJkM2Q1YzYxMGFmNTRhZDFk
M2VmNGZhNjFjNDU5NjY2NTI5N2MxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcApAQCAtMCwwICsxLDEwMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1G
YWN0b3J5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5OjpSZW1vdGVD
RE1GYWN0b3J5KFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykK
K3sKK30KKworUmVtb3RlQ0RNRmFjdG9yeTo6flJlbW90ZUNETUZhY3RvcnkoKSA9IGRlZmF1bHQ7
CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6cmVnaXN0ZXJGYWN0b3J5KFZlY3RvcjxDRE1GYWN0
b3J5Kj4mIGZhY3RvcmllcykKK3sKKyAgICBmYWN0b3JpZXMuYXBwZW5kKHRoaXMpOworfQorCitj
b25zdCBjaGFyKiBSZW1vdGVDRE1GYWN0b3J5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0
dXJuICJSZW1vdGVDRE1GYWN0b3J5IjsKK30KKworR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90
ZUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9wcm9j
ZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK2Jvb2wgUmVtb3RlQ0RNRmFj
dG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAg
Ym9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0
c0tleVN5c3RlbShrZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpT
dXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwgeyB9KTsKKyAgICByZXR1cm4gc3Vw
cG9ydGVkOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gUmVtb3RlQ0RNRmFjdG9y
eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIFJlbW90ZUNETUlk
ZW50aWZpZXIgaWQ7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwor
ICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETShrZXlTeXN0ZW0pLCBNZXNzYWdlczo6
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE06OlJlcGx5KGlkLCBjb25maWd1cmF0aW9u
KSwgeyB9KTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gUmVtb3RlQ0RNOjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUoaWQpLCBXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5OjphZGRTZXNz
aW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQsIFJlZjxSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbikKK3sKKyAgICBBU1NFUlQoIW1fc2Vzc2lvbnMuY29u
dGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwgV1RGTW92ZShzZXNzaW9uKSk7Cit9
CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5z
KGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCit2b2lkIFJlbW90ZUNETUZh
Y3Rvcnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1f
c2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBzZXNz
aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg5ZWQwNjAwMWM2NjNiYWYxODVkYjkzMTc0OTdl
OTJjZmJmYzA2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFNldHRpbmdzOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBSZW1vdGVDRE07CitjbGFzcyBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb247CitjbGFzcyBXZWJQcm9jZXNzOworCitjbGFzcyBSZW1vdGVD
RE1GYWN0b3J5IGZpbmFsCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNRmFjdG9yeQorICAgICwg
cHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIGV4cGxpY2l0IFJlbW90ZUNETUZhY3RvcnkoV2ViUHJvY2VzcyYpOworICAgIHZpcnR1
YWwgflJlbW90ZUNETUZhY3RvcnkoKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVt
ZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3By
b2Nlc3M7IH0KKworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlv
bigpOworCisgICAgdm9pZCByZWdpc3RlckZhY3RvcnkoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3Rv
cnkqPiYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4mJik7
CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIpOworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRl
PiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4+IG1fc2Vz
c2lvbnM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ0RNPj4gbV9jZG1zOworICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKK307CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlZTNhMzgxOWMxNzA3YjU1OGIz
ZmQ5YWFhODgxNjMxNTgzOTJmYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVDRE1JZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1v
dGVDRE1JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUxYTBlMGI1MmQyZGI1YjM2NmU4YWI2Njk2OGM1
NjE0NjJlZGQ5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgi
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisK
KyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxSZW1vdGVDRE1JbnN0YW5jZT4gUmVtb3Rl
Q0RNSW5zdGFuY2U6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwg
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaWQsIFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlQ0RNSW5zdGFuY2UoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCksIFdURk1vdmUoY29u
ZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2U6OlJlbW90ZUNETUluc3RhbmNl
KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYgY29uZmlndXJh
dGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlm
aWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJh
dGlvbikpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgZGlzdGluY3RpdmVJZGVudGlm
aWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFj
ayhGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mYWN0b3J5LT5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uLCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBj
ZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2Zh
Y3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZS5nZXQoKSksIFdURk1vdmUoY2FsbGJhY2spLCBt
X2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTdG9yYWdlRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQoreworICAgIGlmICghbV9mYWN0b3J5KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFN0
b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KSwgbV9pZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZVNlc3Np
b24oKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWQ7CisgICAgbV9mYWN0b3J5
LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lvbigpLCBNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lvbjo6UmVwbHkoaWQpLCBtX2lkZW50aWZpZXIp
OworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gc2Vzc2lv
biA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9y
eS5nZXQoKSksIFdURk1vdmUoaWQpKTsKKyAgICBtX2ZhY3RvcnktPmFkZFNlc3Npb24oaWQsIHNl
c3Npb24uY29weVJlZigpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTVmNDliOTczOWQyNDc5ZDU1NWRmOGZiMDI3ZWRmZWNh
OWMzNDA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZSBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpDRE1JbnN0YW5jZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5z
dGFuY2UoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxSZW1vdGVDRE1JbnN0YW5jZT4gY3Jl
YXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKTsKKworICAgIGNvbnN0IFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFJlbW90ZUNETUluc3RhbmNlKFdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYsIFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKTsKKworICAgIEltcGxlbWVudGF0aW9uVHlwZSBp
bXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5
cGU6OlJlbW90ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQorICAgIFJl
ZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsK
KworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19DRE1fSU5TVEFOQ0UoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZSwgV2ViQ29yZTo6
Q0RNSW5zdGFuY2U6OkltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlKQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MzJkNzJlN2NlNGI4
NTNmMmQzYjkzNDU1ZTE5MjgxYzQxOWZhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5o
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGVudFR5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRp
b24geworICAgIFN0cmluZyBrZXlTeXN0ZW07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBlbmNvZGVyIDw8IGtleVN5c3RlbTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVj
b2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPFN0cmlu
Zz4ga2V5U3lzdGVtOworICAgICAgICBkZWNvZGVyID4+IGtleVN5c3RlbTsKKyAgICAgICAgaWYg
KCFrZXlTeXN0ZW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqa2V5U3lzdGVtKSwKKyAgICAgICAgfX07
CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZmZGU2OTFjM2U4OTViODg1OWU2MjA1
YTcxZTExNWZhOWI0ZmUwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgPSBP
YmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTA1Y2NiZTIzOTZmOWIyZjg2YzljNmIyNmYzM2UxYmEyMzViMDE3OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwor
I2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRlKFdlYWtQdHI8
UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyJiYgaWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpKSk7Cit9CisKK1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
JiYgaWQpCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRp
ZmllcihXVEZNb3ZlKGlkKSkKK3sKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OlJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgV1RG
TW92ZShpbml0RGF0YSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCFtZXNzYWdlLmJ1ZmZlcigpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayhtZXNzYWdlLmJ1
ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlv
biwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBXVEZNb3ZlKHJlc3BvbnNlKSksIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25h
bDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFu
Z2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHNlc3Npb25XYXNDbG9zZWQsIFdURk1vdmUo
Y2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdl
KSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKKyAgICB9LCBtX2lkZW50aWZpZXIp
OworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24oTGljZW5z
ZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3Rvcnkp
IHsKKyAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVyKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6TG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklkLCBvcmlnaW4pLCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNz
YWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZh
aWx1cmUpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwg
V1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/
IFN1Y2NlZWRlZCA6IEZhaWxlZCwgbG9hZEZhaWx1cmUpOworICAgIH0sIG1faWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7Cisg
ICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6Q2xvc2VTZXNzaW9uKHNlc3Npb25JZCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9LCBtX2lkZW50
aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgewor
ICAgICAgICBjYWxsYmFjayh7IH0sIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgT3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGJvb2wgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJl
YWxNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdl
LnZhbHVlKCkuYnVmZmVyKCkpCisgICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFs
dWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBjYWxsYmFjayhXVEZNb3Zl
KGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRl
ZCA6IEZhaWxlZCk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6U3RvcmVSZWNvcmRPZktleVVzYWdlKHNl
c3Npb25JZCksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcykKK3sK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhX
VEZNb3ZlKGtleVN0YXR1c2VzKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQoreworICAgIGlmIChtX2NsaWVudCAmJiBtZXNz
YWdlLmJ1ZmZlcigpKQorICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UodHlwZSwgbWVzc2Fn
ZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7Cisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c2Vzc2lvbklkQ2hhbmdlZChzZXNz
aW9uSWQpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTYyZDA1ZjhiZjk2M2VjYzUxMjYzMmEzYWFjYzA5MDQ0OWViNWM3YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5oPgorCituYW1lc3BhY2UgSVBDIHsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gZmluYWwgOiBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllciYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oKSA9IGRlZmF1
bHQ7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3Rvcnk7CisgICAg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCB1cGRhdGVL
ZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJik7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJD
b3JlOjpDRE1NZXNzYWdlVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYpOwor
ICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0
Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmIGNsaWVu
dCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQorICAgIHZvaWQgY2xlYXJD
bGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQorICAgIHZvaWQgcmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9u
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVT
ZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVz
YWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM4YzIzOTJlN2VmODYyMDQ2MjFkMjg0MTQzOGI1ZWRmNGQzODE1MzYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24g
Tm90UmVmQ291bnRlZCB7CisgICAgVXBkYXRlS2V5U3RhdHVzZXMoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMpCisgICAgU2VuZE1lc3NhZ2Uo
ZW51bTp1aW50OF90IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlKQorICAgIFNlc3Npb25JZENoYW5nZWQoU3RyaW5nIHNl
c3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NmFjZDEyNjVhZjBjODQ2Mzg4ZTIzZjljY2ExNmQ5MDIz
MzhmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3Bw
CmluZGV4IDJhYWU1ZTU0NDUxMDg0NzliZDNjZDMzOWFmYTZiZjZkMmRkYWJjZjYuLjVkN2E4Yjhk
MTEyNGIyYTUyOGFkNzNiZGM5NmQ5YTk3ODBkYzIwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcApAQCAtMjgs
NiArMjgsOCBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0
b3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9E
ZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CkBAIC01MSw3ICs1MywxMyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gV2ViTWVkaWFTdHJhdGVneTo6Y3JlYXRl
QXVkaW9EZXN0aW5hdAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiB2b2lkIFdlYk1lZGlh
U3RyYXRlZ3k6OnJlZ2lzdGVyQ0RNRmFjdG9yaWVzKFZlY3RvcjxXZWJDb3JlOjpDRE1GYWN0b3J5
Kj4mIGZhY3RvcmllcykKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZv
cm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY2RtRmFjdG9yeSgpLnJlZ2lzdGVyRmFj
dG9yeShmYWN0b3JpZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgV2Vi
Q29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggOTcwYTliYjIzN2FjMzk4ZDZlMTgyZjllN2U5ZTM3NzQ2NDFjYjk4ZC4uNzczYTU5
Y2RhMWQ0OWI2ZDVjZGFlYWU1Yjc2YjJhMGRmYmE5ZTZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMyMiw2ICszMjIsOSBAQAogCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5o
IgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eS5oIgorI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWYwNGViOWFmY2I2NGZmNDk4ODQxYTQ2YTQ3
MTcxNDk3MmVjNjlhZC4uNTFjMmY1ZTUzYjM0MGMyMjA1Zjc4OWI0YjM3M2EyZTUwN2JiNmViYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTc0LDYgKzE3NCwx
MCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKKyNlbmRpZgor
CiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9u
SUQtPnRvVUludDY0KCkgOiAwKQogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5u
ZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
Y2hhbm5lbCwgIiVwIC0gW3Nlc3Npb25JRD0lIiBQUkl1NjQgIl0gV2ViUHJvY2Vzczo6IiBmbXQs
IHRoaXMsIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQsICMjX19WQV9BUkdTX18pCiAKQEAgLTI0MCw2
ICsyNDQsMTAgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgYWRkU3VwcGxlbWVudDxS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBhZGRTdXBwbGVtZW50PFJlbW90
ZUNETUZhY3Rvcnk+KCk7CisjZW5kaWYKKwogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQ
cmltaXRpdmVHaWdhY2FnZSgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392427</attachid>
            <date>2020-03-04 09:37:01 -0800</date>
            <delta_ts>2020-03-04 09:47:27 -0800</delta_ts>
            <desc>Patch for landing: Part 3: RemoteCDM</desc>
            <filename>bug-208090-20200304093700.patch</filename>
            <type>text/plain</type>
            <size>173098</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUxODRmODVlMzhkNjEx
ZGUxMDQ1ZGMzNThmMzY3MWYwMGYwYmI4Yy4uNDExZDkxNDJiNDFlZGMyMDQ1YjAxZDcxOGM2M2Yx
NDEwYTZjNDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGV4cG9ydCBtYWNyb3MgdG8gQ0RNRmFjdG9yeTo6
cmVnaXN0ZXJlZEZhY3RvcmllcygpLgorCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRmFjdG9yeS5oOgorCiAyMDIwLTAzLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAoQ29va2llQ2FjaGUpIFVuYWJsZSB0byBsb2cg
aW50byBIdWx1LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTc2Y2I0ODY4ZjhlYTBkNWM0ZjY2Nzc0YjBmNDk1
ZjY1ZWFkYzc2Li40NTBlN2UzNTJmM2VhYjhmMzU2MGUxNjViNzNhYmU5M2MwODQ2OTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGlu
IHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90
ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAg
b2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBl
eGlzdGluZyBDRE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5ICB3aGVuIHRoZSBH
UFUgcHJvY2VzcyBpcyBkaXNhYmxlZCwKKyAgICAgICAgYnkgbWFraW5nIGluaXRpYWxpemF0aW9u
IG9mIHRoZSBDRE0gZmFjdG9yaWVzIGNvbnRpbmdlbnQgdXBvbiB0aGUgInVzZSBHUFUiIHNldHRp
bmcuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2Rt
RmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6ZmFjdG9yeUZvcktleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkSW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojpjb25maWd1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5zdGFu
Y2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6On5SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNUHJveHk6OmZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpSZW1vdGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0luaXRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lvbklkIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1GYWN0b3J5Ojp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZh
Y3Rvcnk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5Ojpy
ZW1vdmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVj
ZWl2ZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9m
S2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTAzICBKaXRl
biBNZWh0YSAgPGptZWh0YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5h
dGl2ZSBTZXJ2aWNlcyBTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKaW5kZXggNTI1Yzg0ZWNiZTc5MWY0MGI1NDdmYjdm
YWZkZTlkMDNiYTgxMGJhZS4uZmIzNTBkNDg1NWExYWIzM2IxYjZkMWM0ZGNlNzNhN2U3MjZhNjUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUZhY3RvcnkuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
c3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3Rv
cmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShD
RE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5yZWdpc3RlckZh
Y3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggODZmMDFiMzlhMDQ3MjhjMmMwYmZmNjdlNWJkMzkzZjA5MWI3
N2Y5ZC4uOWY5NDZmODQ5N2FmMjNiNGFmYTUxYjc5MTg0MTg1MTg4NjBhYzViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTgsNiArMTgs
MTAgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTExMiw2ICsxMTYsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA2NDY0ZDgzODlmYjUzZjUy
NzUwNzA1MzljOTgxMGZiMmQ4Y2NiMzE5Li5hOTZjMmNmZGRkNDZiMzU5MjM4ZTk2MjM0M2E5OTIy
MTA0ZWVhNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKQEAgLTEzNyw2ICsxMzcsMjEgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNDM2ZTRiNDIyNGNiMDQ1
YzllYWIzYTZjNzA1NDMwYmQ1MjUzMzMzNC4uNDVlZTNkYjdlZDdlMTMzNzJjOGE3NWFkNTU1YTE2
NTg3ZjY3ZDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTUxLDYgKzE1MSwx
MSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyIFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVD
RE1Qcm94eSBcCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAorICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAog
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXll
clByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2YTJjODcwZjdhYWExYjBkYjAwMGVmODg4MjdjOWEw
ZjYxZGNmMjViLi42Y2YxYzMwYjNlMzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC02MCwxMCArNjAsMTggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VzLmgiCisjZW5kaWYKKworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTksNiArMjA3LDE2IEBAIExpYldlYlJUQ0NvZGVjc1By
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVDRE1GYWN0b3J5
UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSgpCit7Cisg
ICAgaWYgKCFtX2NkbUZhY3RvcnlQcm94eSkKKyAgICAgICAgbV9jZG1GYWN0b3J5UHJveHkgPSBt
YWtlVW5pcXVlPFJlbW90ZUNETUZhY3RvcnlQcm94eT4oKnRoaXMpOworCisgICAgcmV0dXJuICpt
X2NkbUZhY3RvcnlQcm94eTsKK30KKyNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcC5lbnN1cmUocmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIFsmXSgpIHsKQEAgLTI2OSw2ICsyODcsMjggQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHko
KS5kaWRSZWNlaXZlQ0RNTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKQEAgLTI5NCw2ICszMzQsMjggQEAgYm9vbCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICB9CiAjZW5kaWYKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2Rt
RmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQ
cm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1G
YWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCkBAIC0z
MDIsNyArMzY0LDcgQEAgY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpt
ZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKIH0KIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQogY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9n
cHVQcm9jZXNzLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDc0NzE1YzgwYzU0NWJlYWZlYzNmNmI3ZTA5ODRlY2E1MGNiYTI2NjkuLmEzZWNhNWM4
ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDgsNiArNDgs
NyBAQCBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CiBjbGFz
cyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsK
IGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKQEAgLTg1
LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciYgc2Vzc2lvbk1hbmFnZXIoKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEKTsKIApAQCAtMTM4LDYgKzE0MywxMCBAQCBwcml2YXRlOgogICAgIAogICAg
IHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcCA9IEhhc2hNYXA8UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNYXAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHlNYXA7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKaW5k
ZXggMTZhNThlZGE1NDA2YmViZTc2OTNiMTlmNjgxNjZmYzJmZjlmNzBjZi4uYTM2MWM0MjBhNjlh
MzgzNGVmMjg0MWY1ZDM2MGMwZjgzMDE5ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTM1LDYg
KzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1faWRlbnRpZmllcihp
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaAppbmRleCBkNGM3MDZhMmY3NDMzNjI1MDQ0YTQ0ZGIzNWYwNmFlNWY5ZWU4
NTEwLi5lODVmNTcyZTFhMDBhYTEwODZmNWZiZjIyZjFmN2JmMTAyYzRkMmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94
eS5oCkBAIC0zMiwxNSArMzIsMjAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVHJhY2tQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFja0Jhc2UuaD4KIAorbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OwogCiBjbGFzcyBSZW1vdGVBdWRpb1RyYWNrUHJveHkgZmluYWwKICAgICA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb1RyYWNrUHJveHksIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwcml2YXRlIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUF1ZGlvVHJhY2tQcm94eT4g
Y3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBBdWRpb1Ry
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9UcmFj
a1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb1RyYWNrUHJveHkocGxheWVyLCBpZCwg
V1RGTW92ZShjb25uZWN0aW9uKSwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQpAQCAtNTAsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RyYWNr
UHJpdmF0ZS0+c2V0RW5hYmxlZChlbmFibGVkKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZUF1
ZGlvVHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgQXVkaW9UcmFja1ByaXZhdGUmKTsK
KyAgICBSZW1vdGVBdWRpb1RyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlJik7CiAKICAgICAvLyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudAog
ICAgIHZvaWQgZW5hYmxlZENoYW5nZWQoYm9vbCkgZmluYWw7CkBAIC02Nyw3ICs3Miw3IEBAIHBy
aXZhdGU6CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgbV9wbGF5ZXI7CiAgICAgVHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGU+
IG1fdHJhY2tQcml2YXRlOworICAgIFJlZjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZT4gbV90
cmFja1ByaXZhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmNiYWY2YTU4NGI0ZjI3YjFkMmFhMjE3MmVhNWJjMWEzNDRlNTc0MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAi
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+Cisj
aW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDog
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZUNE
TUZhY3RvcnlQcm94eTo6flJlbW90ZUNETUZhY3RvcnlQcm94eSgpID0gZGVmYXVsdDsKKworc3Rh
dGljIENETUZhY3RvcnkqIGZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCit7CisgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3Rv
cmllcygpOworICAgIGF1dG8gZm91bmRJbmRleCA9IGZhY3Rvcmllcy5maW5kTWF0Y2hpbmcoWyZd
IChhdXRvJiBmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5LT5zdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0pOyB9KTsKKyAgICBpZiAoZm91bmRJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhY3Rvcmllc1tmb3VuZEluZGV4XTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWZhY3RvcnkpIHsK
KyAgICBhdXRvIGZhY3RvcnkgPSBmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSk7CisgICAg
ICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RNKGtleVN5c3RlbSk7CisgICAgaWYg
KCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcm94eSA9IFJlbW90ZUNETVByb3h5OjpjcmVhdGUo
bWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUocHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRp
ZmllciA9IFJlbW90ZUNETUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gcHJveHktPmNvbmZpZ3VyYXRpb24oKTsKKyAgICBh
ZGRQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgY29tcGxldGlvbihXVEZN
b3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAg
Y29tcGxldGlvbihmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSkpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHBy
b3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlm
aWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZh
Y3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5z
dGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAg
aW5zdGFuY2UtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
Cit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQor
eworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
ZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7
CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9u
cy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KGNvbnN0IFJlbW90ZUNETUlkZW50
aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHkpCit7Cisg
ICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlk
LCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiBpZCkKK3sKKyAgICBBU1NFUlQobV9w
cm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZShSZW1vdGVDRGNvbnN0IE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eT4mJiBpbnN0YW5jZSkKK3sKKyAgICBBU1NFUlQoIW1faW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9pbnN0YW5jZXMuc2V0KGlkLCBXVEZNb3ZlKGluc3RhbmNlKSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZShSZW1vdGVDRGNvbnN0IE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhp
ZCkpOworICAgIG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNl
UHJveHkqIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlk
KTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlQ0RN
SW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9z
ZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNl
c3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24o
UmVtb3RlQ0RNSW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQpCit7CisgICAgQVNT
RVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiOGEyOGY0YzNmNGRk
Mzc3MjgyM2NhNzA1MWNkMzY2ZDFkY2Y0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CitjbGFzcyBS
ZW1vdGVDRE1Qcm94eTsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0
b3J5UHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNv
ZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHko
Y29uc3QgUmVtb3RlQ0RNSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94
eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJik7
CisKKyAgICB2b2lkIGFkZEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmKTsKKyAgICB2b2lk
IHJlbW92ZUluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYpOworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKGNvbnN0IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXImLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisg
ICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisg
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETVByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4+IG1faW5zdGFu
Y2VzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNDdjNWU2ZTYxYzQyMDc4MzFkYTBiZDExOGE2YWFlYjQwZDMzMTM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4g
UmVtb3RlQ0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZUNETShTdHJp
bmcga2V5U3lzdGVtKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3Vz
CisgICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSkgLT4gKGJvb2wgcmVzdWx0
KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTI0OGZkZmM4MmQ5NGFlNmUwZWQxNzViMzUxYzFiMjZiNTVhMzEzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94
eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2KQoreworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiY+KHsKKyAg
ICAgICAgcHJpdi0+a2V5U3lzdGVtKCksCisgICAgfSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShX
VEZNb3ZlKGNkbSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30K
KworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRy
PFJlbW90ZUNETVByb3h5PiYmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6
IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKKyAg
ICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpID0gZGVmYXVsdDsK
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgYWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIG1faW5zdGFu
Y2UtPmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBhbGxvd0Rpc3Rp
bmN0aXZlSWRlbnRpZmllcnMsIGFsbG93UGVyc2lzdGVudFN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRp
b24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBjZXJ0aWZpY2F0ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYg
KCFjZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKENETUluc3RhbmNl
OjpGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0YW5jZS0+c2V0
U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShjb21wbGV0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBtX2lu
c3RhbmNlLT5zZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJiBjb21wbGV0aW9uKQor
eworICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7Cisg
ICAgaWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9jZG0gfHwgIW1fY2RtLT5mYWN0b3J5KCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8g
aWRlbnRpZmllciA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNy
ZWF0ZShtYWtlV2Vha1B0cihtX2NkbS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVhc2VOb25OdWxs
KCksIGlkZW50aWZpZXIpOworICAgIG1fY2RtLT5mYWN0b3J5KCktPmFkZFNlc3Npb24oaWRlbnRp
ZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MTEyZDVmODRiODg0NzMx
OWRjNDA0ZmVhMTUwNmM4YjFlZjMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUlu
c3RhbmNlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNSW5zdGFuY2U7CitzdHJ1Y3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciAgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+
JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJik7CisgICAgflJlbW90ZUNETUluc3RhbmNl
UHJveHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2U7IH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdl
YkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdXNpbmcg
U3VjY2Vzc1ZhbHVlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZTsKKyAgICB1
c2luZyBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzOworICAgIHVzaW5nIEFsbG93UGVyc2lzdGVudFN0
YXRlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOworCisgICAg
Ly8gTWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNj
ZXNzVmFsdWUpPiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1Y2Nlc3NWYWx1
ZSk+JiYpOworICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4gbV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNl
OworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmln
dXJhdGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lv
bnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NTBlODUzNDFjMmViMzViYjZlYzA4MDk1ZDVhMDA0ZWNjYTEzOWY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3Nh
Z2VzIC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRl
U2Vzc2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIg
aWQpIFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVjdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGVudW06Ym9v
bCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkFsbG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpIC0+IChlbnVtOmJv
b2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBBc3luYworICAg
IFNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0
aWZpY2F0ZSkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IHN1Y2Nlc3MpIEFzeW5jCisgICAgU2V0U3RvcmFnZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5
KQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0NmNmZDA1OWMzMTM5NGYxNmM2MWRlMTliMGZlM2MzNGJmYTRlNzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50aWZp
ZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHktPm1f
c2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Npb25Q
cm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAs
IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXRE
YXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFpbml0RGF0YS5idWZmZXIoKSkg
eworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUgQ0RNUHJpdmF0
ZTo6c3VwcG9ydHNJbml0RGF0YSgpIGNoZWNrIGhlcmU6CisgICAgaWYgKCFtX2NkbS0+c3VwcG9y
dHNJbml0RGF0YShpbml0RGF0YVR5cGUsICppbml0RGF0YS5idWZmZXIoKSkpIHsKKyAgICAgICAg
Y29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXRE
YXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24g
PSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9
KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5z
ZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxldGlv
bikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24o
dHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRlOjpzYW5pdGl6
ZVJlc3BvbnNlKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFJlc3BvbnNlID0gbV9j
ZG0tPnNhbml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKTsKKyAgICBpZiAoIXNhbml0
aXplZFJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UsIHsgfSwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0aXplZFJlc3Bv
bnNlLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0g
KGJvb2wgc2Vzc2lvbkNsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGlt
ZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUo
ZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vz
c2lvbklkLCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikK
K3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplU2Vzc2lvbklkKCkg
Y2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFNlc3Npb25JZCA9IG1fY2RtLT5zYW5pdGl6
ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgIGlmICghc2FuaXRpemVkU2Vzc2lvbklkKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRj
aGVkU2Vzc2lvblR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9u
LT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJh
dGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwg
V1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vl
ZGVkLCBmYWlsdXJlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5jbG9zZVNlc3Npb24o
c2Vzc2lvbklkLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUg
eyBjb21wbGV0aW9uKCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAg
bV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRT
ZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoZXhwaXJlZFNlc3Np
b25zRGF0YSkKKyAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7
CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJl
ZFNlc3Npb25EYXRhUmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorewor
ICAgIG1fc2Vzc2lvbi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0
YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdlKHR5cGUsIFdU
Rk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBm
YWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTgxNTM1NjZmNjQyZmM2OGEzNDU2NGU3NDY3NDUwZmI0NDlkYTk0MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
CisgICAgLy8gVHlwZXMKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I7CisgICAgdXNpbmcgTWVz
c2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAgICB1c2luZyBT
ZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZTsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgYm9vbCwgYm9vbCk+OworICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYm
LCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wpPjsKKyAgICB1
c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2Fn
ZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHVzaW5nIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3Rv
ciYmLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGJvb2wpPjsK
KyAgICB1c2luZyBTdG9yZVJlY29yZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PjsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJik7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4sIExv
YWRTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYpOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKKworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAor
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOworICAg
IHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4gbV9j
ZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gbV9zZXNzaW9uOworICAg
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41YjkzMTk2YzA5NWUwMzRiNjQyMWY4ZWU2MzhhZTA5ZWZjZTIwZTk0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBOb3RSZWZDb3Vu
dGVkIHsKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Okxp
Y2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9u
SWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNzaW9uV2FzQ2xv
c2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
cj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luKSAt
PiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+
IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25h
bDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3Vj
Y2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9u
TG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9uKFN0cmluZyBz
ZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3RyaW5nIHNlc3Np
b25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlKSAtPiAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXMs
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmluZyBzZXNzaW9u
SWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhYzkyZmQwOTdhZjFjZjliOGZmOGJiNDBk
YjFiZWE1ZTNhODBhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0
ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVm
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygp
LAorICAgICAgICBwcml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAgICAgcHJpdi0+
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXNz
aW9ucygpCisgICAgfSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Qcml2YXRlJ3Mg
cHJpdmF0ZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TVByb3h5PihuZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2
KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94eTo6UmVtb3Rl
Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rvcnkp
KQorICAgICwgbV9wcml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVD
RE1Qcm94eSgpID0gZGVmYXVsdDsKKworYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKK30K
KworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5z
YW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVD
RE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1Qcm94eTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV2ViQ29yZTo6Q0RNUHJp
dmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9wcml2YXRl
LT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbiksIGFjY2Vz
cywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpjcmVhdGVJ
bnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7Cisg
ICAgaWYgKCFwcml2YXRlSW5zdGFuY2UgfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0
aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluc3RhbmNl
ID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBwcml2
YXRlSW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZpZ3VyYXRpb24o
KTsKKyAgICBtX2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1vdmUoaW5zdGFu
Y2UpKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworfQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAg
bV9wcml2YXRlLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzlkNTU4ZGZmYTE1MmMwZGQ1YTBjMGIyYjVhODE3MzJhMWRiNWIxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAg
LTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsK
K2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Oworc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zOworfQorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Oworc3RydWN0IFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOwor
CitjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4geworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYp
OworICAgIH5SZW1vdGVDRE1Qcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQo
KTsgfQorCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9mYWN0b3J5LmdldCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJl
bW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZh
dGU+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBX
ZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OkNETVByaXZh
dGU6OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNyZWF0ZUlu
c3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZEFu
ZEluaXRpYWxpemUoKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2Zh
Y3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IG1fcHJpdmF0
ZTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9u
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTU1NTg0
ZWRmMTcxYTE2NWRjNTNmMGRhZTVmMWEzOTQ4Yzc1NWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1Qcm94eSBOb3RS
ZWZDb3VudGVkIHsKKyAgICBHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIGVudW06
Ym9vbCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKSAtPiAo
T3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gYWNjdW11bGF0ZWRD
b25maWd1cmF0aW9uKSBBc3luYworICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBMb2FkQW5k
SW5pdGlhbGl6ZSgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGM5ZDJlZTQ0
NWJkNWU2YTk0YWE0OGQ1OGI5ZTA0MjEzYmM1YWYyZTAuLjg3MWRlYTYwYmI3MjgyMWM2MTM1NDE4
ZjI4N2I5NTgzNjMwZmI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTGF5ZXJI
b3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3Nh
Z2VzLmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01MjMsOSArNTI4LDkgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcktleU5lZWRlZChVaW50OEFycmF5KikKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGlu
aXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC02OTUsNiArNzAw
LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlu
c3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGlu
c3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VBdHRhY2hlZChpbnN0YW5j
ZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNl
SWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNl
SWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0YW5jZVByb3h5
LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0
VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3Rh
bmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3Rh
bmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShp
bnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRpZgorCisKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29s
IHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxheWVyLT5iZWdpblNpbXVsYXRlZEhE
Q1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggZmFkYmUwOWE3ZDU0M2QxMWExODg2NjJhZmM3
OGFlYzRkMWU0ZjgwNy4uOGIzN2MwNDIwZGFhZjNhMjliMDc2MzA5NmZhMDA0MGFkZWRjY2IyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFz
cyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTQxLDYgKzE0NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7
CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYKKwogICAgIHZvaWQgYmVnaW5TaW11
bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDUwMzE4OTY3ZjI4MDZkYmMwNWZi
YTc1ZmI4ZTBjNTliMzQxZmQyYmMuLjM0ZDI0MThjY2Y4YWJiZmNjZjVkYzQxODIxNDA4YTY4MGVi
YTdjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC04Miw5ICs4Miwx
NiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICMgU2V0Q0RNU2Vzc2lvbgog
ICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0YWNoZWQKLSAgICAjIENkbUluc3Rh
bmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UKKyNlbmRpZgor
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBDZG1JbnN0YW5jZUF0dGFjaGVkKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisgICAgQ2RtSW5z
dGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5j
ZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgU2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKICNlbmRpZgogCiAgICAgQmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCAwYmUxNTQ1MWQ5YWI4NDliOWFh
NDliNTRjMzE1OTQ0Y2Q2ZjhmNzFiLi40ZjQ5ZjNhMzg3ZDBlYTEwZjE2MWU1YWQ3OWY4ZDc4NTUw
M2QxNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaApAQCAtNjEsOSArNjEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5kaWYKIAotICAgIHZp
cnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlJik7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYp
OwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAppbmRleCBmYjFkNDI5Y2QzYjk0ODQxZDI1Njdj
MzQzMjZmODU5ODcyZjZiMDE0Li4zODU2NzVjOTM4MWNkMTIwZDliMjQ2ZWI3YzhkZGIwNzNhZTEy
ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9UcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9UcmFja1Byb3h5LmNwcApAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIFJlbW90ZVZpZGVvVHJhY2tQcm94
eTo6UmVtb3RlVmlkZW9UcmFja1Byb3h5KFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwg
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIDogbV9wbGF5
ZXIocGxheWVyKQogICAgICwgbV9pZGVudGlmaWVyKGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oCmluZGV4IGJkYjBl
YjAwN2JkYWE0N2M1ZGY2NjZiYWFlMjE5MzJkYTc5OTM5YjcuLmM2ZTE5MzRmNWRmZmIwOWVmMjli
ZGU5MTExOWNjN2MwNDg4MzgxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmgKQEAgLTMyLDE1ICszMiwyMCBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvVHJhY2tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb1Ry
YWNrUHJpdmF0ZS5oPgogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclByb3h5Owogc3Ry
dWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CiAKIGNsYXNzIFJlbW90ZVZpZGVv
VHJhY2tQcm94eSBmaW5hbAogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90
ZVZpZGVvVHJhY2tQcm94eSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4KICAgICAsIHBy
aXZhdGUgV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVDbGllbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlVmlkZW9UcmFja1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUp
CisgICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb1RyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVNZWRp
YVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVZpZGVvVHJhY2tQcm94eShwbGF5ZXIsIGlkLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCB0cmFj
a1ByaXZhdGUpKTsKICAgICB9CkBAIC01MCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpIHsgbV90cmFja1ByaXZhdGUtPnNldFNlbGVjdGVkKHNl
bGVjdGVkKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZVZpZGVvVHJhY2tQcm94eShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiwgVmlkZW9UcmFja1ByaXZhdGUmKTsKKyAgICBSZW1vdGVWaWRlb1RyYWNr
UHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlJik7
CiAKICAgICAvLyBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudAogICAgIHZvaWQgc2VsZWN0ZWRDaGFu
Z2VkKGJvb2wpIGZpbmFsOwpAQCAtNjcsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkmIG1fcGxheWVyOwogICAgIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb247Ci0gICAgUmVmPFZpZGVvVHJhY2tQcml2YXRlPiBtX3RyYWNrUHJpdmF0ZTsKKyAg
ICBSZWY8V2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQppbmRleCAwZTc3NDdjMjJlOGY1OTg5MjU0Yzk0ZmViMTg3YjkwYjNiMzRjY2E4Li4yNTZk
Yzk5MDViZjQ0NjZkMGMyYWQ1NzRkOGMzNjhhMTRiZTY5NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIzNCw2ICsyMzQsOSBAQCBkZWYgdHlwZXNfdGhh
dF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNv
cmRlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXInLAorICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXInLAorICAgICAgICAnV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVu
dGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDVhZGIzN2Q4YjViZGVmMDBhNTY2ZjRhMDJkYjY0YmI5NWRhYjAwMjQuLjhiZjhk
M2Q1NWVhNTU0NjU0N2JjMTM3ZTQyNjg0MGE0YTExZjgxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzIxNyw0ICszMjE3LDU5IEBA
IE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2FnZSkKK3sKKyAgICBlbmNv
ZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
RGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2VE
YXRhOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+
ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZVR5cGUgdHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIG1ha2VPcHRpb25hbDxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+KHsgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkgfSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMp
Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oa2V5U3RhdHVzZXMuc2l6
ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGtleVN0YXR1cyA6IGtleVN0YXR1c2VzKSB7CisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleSA9IGtleVN0YXR1cy5maXJzdC5jb3B5UmVmKCk7Cisg
ICAgICAgIGVuY29kZXIgPDwga2V5IDw8IGtleVN0YXR1cy5zZWNvbmQ7CisgICAgfQorfQorCitP
cHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Ig
a2V5U3RhdHVzZXM7CisgICAga2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRh
U2l6ZSk7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7ICsraSkgewor
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXk7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoa2V5KSB8fCAha2V5KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1cyBzdGF0
dXM7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAga2V5U3RhdHVzZXMudW5jaGVja2VkQXBwZW5k
KHsga2V5LnJlbGVhc2VOb25OdWxsKCksIHN0YXR1cyB9KTsKKyAgICB9CisgICAgcmV0dXJuIGtl
eVN0YXR1c2VzOworfQorI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKIH0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA4OTg2MzU4M2YzYmMxNjY5MDk3NDZkZjYxODI2NDdkNjkyNTlhZWMzLi5kMDdm
MmJmNWIyMWI2MjBiOTE5ODEwMTk5NDBlMjc0NGVkMjUwMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTYsNiArNTYsMTEgQEAKICNpbmNs
dWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQWRkaXRpb25zLmg+CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSA8V2ViQ29yZS9D
RE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+Cisj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNo
U2VuZFJpZ2h0OwpAQCAtODM2LDYgKzg0MSwxOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIE9wdGlv
bmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4geworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpNZXNzYWdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3I+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJik7CisgICAgc3RhdGljIE9wdGlvbmFs
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC05ODQsNCArMTAwMSwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdU
RkxvZ0xldmVsPiB7CiAgICAgPjsKIH07CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
dGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpTZXNzaW9uTG9hZEZhaWx1cmU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSwKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9T
ZXNzaW9uRGF0YSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2Fk
RmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkLAorICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcgorICAgID47Cit9
OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
SERDUFN0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNv
cmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpI
RENQU3RhdHVzOjpVbmtub3duLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVz
OjpWYWxpZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0UmVz
dHJpY3RlZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0RG93
bnNjYWxlZAorICAgID47Cit9OworCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCBlZWRiN2U2ZGQ5YTllOWZhMjA3Y2U4YThkM2I2MjJjZDJmMGM5M2RmLi42ZDBl
OGM2OGEwMjM4ODczYjY4NjQyMzgzZTViN2JjNWFhMDYzN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI3
LDYgKzI3LDEwIEBAIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKK0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmNwcApAQCAtNDEsNiArNDUsNyBAQCBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiAKKwogTmV0d29ya1Byb2Nlc3MvQWRDbGlj
a0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRy
YWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
CkBAIC01NDEsNiArNTQ2LDEwIEBAIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAK
K1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUZhY3RvcnkuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgQG5v
LXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxNWM1MjRmMzYyMTc3ZGRjNzEyNzI3NjI1NTc4ODcwNGNlYjM5ZGEzLi41M2VkZTU2NmQzZGU4
ZTk5NzU0Yjk2NjI1NDY0YjYxZWIxNzQ4YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MDYsNiArMTcwNiw3IEBACiAJCUNEMTlE
MkVBMjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTlEMkU4MjA0NjQw
NkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDI4NjVFRTIyNTU1NjIwMDA2
MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJv
Y2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi87IH07CiAJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFD
NyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vz
c1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovOyB9OworCQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDY2MTgxMjQwMTA1NjQwMDQ3
Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQlDRDQ5MUIwODFFNzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjA2
MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovOyB9OwogCQlD
RDQ5MUIwRDFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q0OTFCMEIxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8qIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjBDMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CkBAIC0xNzI4LDYgKzE3MjksMjAgQEAK
IAkJQ0RBMjlBMkIxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
TWVzc2FnZXMuaCAqLzsgfTsKIAkJQ0RBOTNEQjAyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1
bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8q
IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovOyB9OworCQlDREFD
MjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjIyM0ZCNThGMjAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAqLzsgfTsKKwkJQ0RBQzIwQzMyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjYyM0ZDMkY3MzAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBDNDIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZS5oICovOyB9OworCQlDREFDMjBDNTIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZp
Z3VyYXRpb24uaCAqLzsgfTsKKwkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIw
QkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETS5oICovOyB9OworCQlDREFDMjBDOTIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkMyM0ZDMkY3
NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLzsgfTsK
KwkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkQy
M0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovOyB9OworCQlD
REFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzAyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLzsgfTsKKwkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDRjIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBGMjIzRkMzODNBMDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RB
QzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKKwkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCUNEQzI4MzFEMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5T
dGFja1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAqLzsg
fTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
Q0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgg
Ki87IH07CiAJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTExQ0JDNDgy
RjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi87IH07CkBAIC00OTk3LDYgKzUwMTIsMTAgQEAK
IAkJQ0QxOUQyRTkyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3Rp
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3Bw
OyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUMyMjU1NTYyMDAwNjA2QUM3IC8q
IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUQyMjU1
NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgwMjQwMTA1NjQwMDQ3
Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkx
QjA1MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkxQjA2MUU3MEQwNUYwMDAwOTA2
NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRDQ5MUIwQTFFNzMyRDEyMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDM4LDYgKzUwNTcsNDMgQEAKIAkJQ0RB
MjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUNEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91
Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3Vj
aFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpY1BhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVu
VG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnlQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlQ0RNUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEFEMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUUyM0ZCNTgy
QjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIxMjNGQjU4
RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEI2MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI3MjNGQzJGNzMwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUNETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFD
MjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUNETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBCQjIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEJFMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkYyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBD
MDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUlkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRTIzRkMzODM5MDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRjIzRkMzODM5MDAyMURF
RTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyog
UmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjEyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAv
KiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjMyM0ZDMzgzQTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1v
dGVDRE1Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmll
dy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaDsgcGF0aCA9IGlvcy9m
dWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREMyODMxQzIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBwYXRo
ID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREMzODJGNzE3MjExNTA2MDA4QTJGQzMgLyogQ0ZOZXR3b3JrLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ0ZOZXR3b3JrLmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGFic29sdXRlPiI7IH07CkBAIC01MzIyLDYgKzUzNzgsMjAgQEAKIAkJCQk5QjVCRUMyOTI0
MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLywKIAkJ
CQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmggKi8sCiAJCQkJOUI1QkVDMkUyNDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMg
LyogUmVtb3RlQ0RNLmNwcCAqLywKKwkJCQlDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNLmggKi8sCisJCQkJQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNv
bmZpZ3VyYXRpb24uaCAqLywKKwkJCQlDREFDMjBCOTIzRkMyRjczMDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeS5jcHAgKi8sCisJCQkJQ0RBQzIwQzAyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUZhY3RvcnkuaCAqLywKKwkJCQlDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZS5jcHAgKi8sCisJCQkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlLmggKi8sCisJCQkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovLAorCQkJCUNEQUMyMEI2MjNGQzJGNzMw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBC
RTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCAqLywKKwkJ
CQlDREFDMjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgg
Ki8sCisJCQkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovLAogCQkJCTA3QjkzRkY1MjNBRjBD
QjgwMDM2RjhFQSAvKiBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkw
NzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAq
LywKIAkJCQkwNzkyMzEzNDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmggKi8sCkBAIC01MzUyLDYgKzU0MjIsMTggQEAKIAkJCQk5QjEyMjlDRjIzRkYyODE0MDA4
Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJMDcxQkM1N0UyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAg
Ki8sCiAJCQkJMDcxQkM1N0YyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94
eS5oICovLAorCQkJCUNEQUMyMDc5MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHkuY3BwICovLAorCQkJCUNEQUMyMDc4MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCAqLywKKwkJCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEIzMjNGQjU4RjIwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjBCMjIzRkI1
OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovLAorCQkJCUNEQUMyMEIx
MjNGQjU4RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICov
LAorCQkJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwQUUyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8sCisJCQkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNE
QUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8sCisJCQkJQ0RB
QzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8sCisJCQkJQ0RBQzIw
ODYyM0ZCMjE1ODAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJ
CTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAgKi8sCiAJCQkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmggKi8sCiAJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtOTc0OSw2ICs5
ODMxLDIxIEBACiAJCQkJMUEwNDNCNUMxMjRENUU5RDAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUE4RUZBNkUxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdp
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2
N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYyMjNGQzM4M0EwMDIx
REVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJ
CUNEQUMyMEYzMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdl
cy5oICovLAorCQkJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFDMjBGNTIzRkMzODNCMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RB
QzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5o
ICovLAorCQkJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0Q0
NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2Vz
LmggKi8sCisJCQkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVDMjNGQzM4MzgwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CisJCQkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFD
MjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAorCQkJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJQ0RBQzIwRjAyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJ
CTBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXMuaCAqLywKIAkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTEwNjU1LDYgKzEw
NzUyLDE2IEBACiAJCQkJOUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlDRDIzRkYyNUYy
MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCNUJFQzJBMjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM3MjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE0uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRDIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Q0RBQzIwQ0YyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEQUMyMEM0MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzMy
M0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0RBQzIwQjQyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM5MjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2
NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTEyMzU0LDYgKzEyNDYxLDExIEBACiAJCQkJMkQ1NEMzMUIyMTJG
NERBNjAwNDlDMTc0IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUIxMjI5Q0UyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY3MjNGQzcy
NkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q0NjYx
ODMyNDAxMEE2NzAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENzJBMUZBMjEyQkY0NkUwMDUx
N0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQzE4RkI0MjE4QTZF
OUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCBkZmI5YjlhOTM4Yjk4NWQyODBhY2RlZGEwNDhiYzVhNjZmNzdlNjFiLi5mOWI5
NzAxODE3MmRhNTJiMWM3MDU0OTM5NTkzYzIxMWRmZWQwMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzMs
NiArMzMsOCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgogI2luY2x1ZGUgIkxpYldl
YlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC00NCw2ICs0NiwxMCBAQAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25NZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc1LDYgKzgxLDEzIEBAIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXImIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpzYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVD
RE1GYWN0b3J5JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y2RtRmFjdG9yeSgpCit7CisgICAgcmV0
dXJuICpXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+
KCk7Cit9CisjZW5kaWYKKwogYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTEwMCw2
ICsxMTMsMTIgQEAgYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWMKICAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNlbmRpZgorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJl
bW90ZUNETUZhY3Rvcnk+KCktPmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogI2VuZGlmCiAgICAgcmV0dXJu
IG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaAppbmRleCA2YWNkY2JmMzk1NDUxYjZiNGM5NThlY2M5MmI1MjAxNmI2Nzc3Mjg5
Li4yYjU3MmMxYmFjYmZhNmI2YjI2ZjM1NjBjMjYyYTlhNDFiMGM3NWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0z
OSw2ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5OworCiBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+
IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
CkBAIC01OCw2ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUNETUZhY3RvcnkmIGNkbUZhY3Rv
cnkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApp
bmRleCBkODA5MDEwZDFiNWU0Mzc2OTFjNDI4MGQ2YTQ3MjM5MDg0ZjNmZTczLi45NWU3M2E2NTA5
YTJhMzI5MzBlYzk0Zjk1YWMxMzZjNmYwODBmNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwCkBAIC00OSw2ICs0OSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVk
aWE7CkBAIC05MTIsMTkgKzkxNiwyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
a2V5QWRkZWQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2Um
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RN
SW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlz
PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZUF0dGFjaGVkKGRv
d25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7
CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVk
KENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5j
ZURldGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFu
Y2VEZXRhY2hlZChkb3duY2FzdDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZp
ZXIoKSksIG1faWQpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1w
dFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5z
dGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5z
dGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OkF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoZG93bmNh
c3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkK
QEAgLTkzMiw2ICs5MzksMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRp
bmdGb3JLZXlDaGFuZ2VkKCkKICAgICBtX3BsYXllci0+d2FpdGluZ0ZvcktleUNoYW5nZWQoKTsK
IH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2Um
JiBpbml0RGF0YSkKK3sKKyAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSk7CisgICAgbV9wbGF5ZXItPmlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0
YUJ1ZmZlcikpOworfQorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0Zv
cktleSgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTkzOSw2ICs5NTIsMTMg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXkoKSBjb25zdAog
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91
bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRTaG91bGRDb250aW51
ZUFmdGVyS2V5TmVlZGVkKHNob3VsZCksIG1faWQpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApp
bmRleCA1NTlmZDY1MDIwODhlYmIzN2Q3NmVhN2Q2OTM1NTcyNjM4ZjIxMDIzLi43YWI2NjUyOWE1
MTk3MzU4MzFjZmJjYzg5OTE4YmJhNzc3YWM1Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogICAgIHZvaWQgd2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKKyAgICB2b2lkIGluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYsIElQQzo6RGF0YVJlZmVyZW5jZSYm
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTMx
NSw2ICszMTYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBm
aW5hbDsKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5
TmVlZGVkKGJvb2wpIGZpbmFsOworI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbiopIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbgppbmRleCBhNTA3NzZkZGFhNDI3NmMxYzZkZGU3ZTVkYjA3YmY5OGE2N2FlOGY1Li45
NDQ4ZGUwMmYxYWM5ZTQ2NDM4MzNjMmQ1NTM3NTljOTgzMGI4MTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAtNzUsNiArNzUsNyBAQCBtZXNzYWdl
cyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogICAgIFdhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKKyAgICBJbml0
aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChTdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgaW5pdERhdGEpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5MWI0MGYzYjljNzViM2MxMTBiNjM2ZjY4Y2E1NzA1YTI1
YjU0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmNwcApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE0uaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUmVzdHJpY3Rp
b25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNPiBSZW1vdGVDRE06OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFj
dG9yeSwgUmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYg
Y29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4o
bmV3IFJlbW90ZUNETShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25m
aWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE06OlJlbW90ZUNETShXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZh
Y3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1
cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNOjpn
ZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25m
aWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAg
ICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpHZXRTdXBwb3J0ZWRDb25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbiksIGFjY2VzcyksIFdURk1vdmUoY2FsbGJhY2spLCBt
X2lkZW50aWZpZXIpOworfQorCisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbW90ZUNETTo6
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RN
OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5
cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RN
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0
ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2Uo
KS4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ0RNUmVxdWlyZW1lbnQgUmVtb3RlQ0RNOjpkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENETVJlcXVp
cmVtZW50OjpOb3RBbGxvd2VkOworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OnBlcnNp
c3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZDsKK30KKworYm9vbCBSZW1v
dGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFi
bGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZWZQdHI8Q0RNSW5zdGFu
Y2U+IFJlbW90ZUNETTo6Y3JlYXRlSW5zdGFuY2UoKQoreworICAgIGlmICghbV9mYWN0b3J5KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciBpZDsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6Q3JlYXRlSW5zdGFuY2UoKSwgTWVzc2FnZXM6
OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5jZTo6UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24p
LCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9y
eS5nZXQoKSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9p
ZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRp
YWxpemUoKSwgbV9pZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3Rl
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
Cit7CisgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4KKyAgICByZXR1cm4gcmVz
cG9uc2UuY29weSgpOworfQorCitPcHRpb25hbDxTdHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBj
aGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OmxvYWRTZXNzaW9uKCkuCisgICAgcmV0dXJuIHNlc3Npb25JZDsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI2ZDZmMzY5NzliMDQ1MmNmOTZhNTJkMThmNmFkMGI3ZjMzNDhlOGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE0gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJp
dmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IGNy
ZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUlkZW50aWZpZXImJiwg
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE0oKSA9IGRl
ZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOwor
CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nl
c3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKworICAgIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhS
ZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Np
b25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6Q0RN
UmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmlj
dGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0
ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7
CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0
aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3Vw
cG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LnN1cHBvcnRlZFJvYnVzdG5lc3NlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXM7IH0KKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNTZXNzaW9uczsgfQorCisgICAgV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRp
b247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NjJjNDY0ZmRmZGNkOGMzNTc1NmIwZTM4ZGFkMGY4OTM5MDU4ODY3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0
aW9uLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24g
eworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgIFZl
Y3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgYm9vbCBzdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnM7CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7
CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAgICBlbmNv
ZGVyIDw8IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgICAgICBlbmNvZGVyIDw8IHN1
cHBvcnRzU2Vzc2lvbnM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Cisg
ICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZEluaXRE
YXRhVHlwZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcykKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21T
dHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9y
dGVkUm9idXN0bmVzc2VzOworICAgICAgICBpZiAoIXN1cHBvcnRlZFJvYnVzdG5lc3NlcykKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNT
ZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFs
PGJvb2w+IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXNz
aW9uczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1Nlc3Npb25zKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUo
KnN1cHBvcnRlZEluaXREYXRhVHlwZXMpLAorICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVk
Um9idXN0bmVzc2VzKSwKKyAgICAgICAgICAgICpzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcywK
KyAgICAgICAgICAgICpzdXBwb3J0c1Nlc3Npb25zLAorICAgICAgICB9fTsKKyAgICB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZjJkM2Q1YzYxMGFmNTRhZDFkM2VmNGZhNjFjNDU5NjY2NTI5N2MxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
LmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1v
dGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1GYWN0b3J5KFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAg
OiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKworUmVtb3RlQ0RNRmFjdG9yeTo6flJlbW90ZUNE
TUZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6cmVnaXN0ZXJG
YWN0b3J5KFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGZhY3RvcmllcykKK3sKKyAgICBmYWN0b3JpZXMu
YXBwZW5kKHRoaXMpOworfQorCitjb25zdCBjaGFyKiBSZW1vdGVDRE1GYWN0b3J5OjpzdXBwbGVt
ZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVDRE1GYWN0b3J5IjsKK30KKworR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkK
K3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9
CisKK2Jvb2wgUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCit7CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwg
eyB9KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJp
dmF0ZT4gUmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KQoreworICAgIFJlbW90ZUNETUlkZW50aWZpZXIgaWQ7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETShr
ZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE06OlJl
cGx5KGlkLCBjb25maWd1cmF0aW9uKSwgeyB9KTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gUmVtb3RlQ0RNOjpjcmVhdGUobWFrZVdlYWtQdHIodGhp
cyksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1v
dGVDRE1GYWN0b3J5OjphZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIgaWQsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbikKK3sKKyAgICBB
U1NFUlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwg
V1RGTW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6cmVtb3ZlU2Vz
c2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VS
VChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOwor
fQorCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg5ZWQwNjAw
MWM2NjNiYWYxODVkYjkzMTc0OTdlOTJjZmJmYzA2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCkBAIC0wLDAg
KzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNldHRpbmdzOworfQorCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBS
ZW1vdGVDRE07CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb247CitjbGFzcyBXZWJQcm9j
ZXNzOworCitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5IGZpbmFsCisgICAgOiBwdWJsaWMgV2ViQ29y
ZTo6Q0RNRmFjdG9yeQorICAgICwgcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZUNETUZhY3RvcnkoV2Vi
UHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnkoKTsKKworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9u
JiBncHVQcm9jZXNzQ29ubmVjdGlvbigpOworCisgICAgdm9pZCByZWdpc3RlckZhY3RvcnkoVmVj
dG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlU2Vzc2lv
bk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB2b2lkIGFk
ZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbj4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIEhh
c2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPj4gbV9jZG1zOworICAgIFdlYlByb2Nlc3Mm
IG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJlZTNhMzgxOWMxNzA3YjU1OGIzZmQ5YWFhODgxNjMxNTgzOTJmYWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBS
ZW1vdGVDRE1JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUxYTBlMGI1
MmQyZGI1YjM2NmU4YWI2Njk2OGM1NjE0NjJlZGQ5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC0w
LDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxSZW1v
dGVDRE1JbnN0YW5jZT4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaWQsIFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2UoV1RGTW92ZShmYWN0b3J5KSwgV1RG
TW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFu
Y2U6OlJlbW90ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5
LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rv
cnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmll
cnMgZGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVu
dFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9y
eSkgeworICAgICAgICBjYWxsYmFjayhGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
LCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVByb3h5OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZS5nZXQoKSks
IFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQorewor
ICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OlNldFN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KSwgbV9pZGVudGlm
aWVyKTsKK30KKworUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RN
SW5zdGFuY2U6OmNyZWF0ZVNlc3Npb24oKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIgaWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lv
bigpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lvbjo6UmVw
bHkoaWQpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRl
KG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQpKTsKKyAgICBtX2ZhY3Rv
cnktPmFkZFNlc3Npb24oaWQsIHNlc3Npb24uY29weVJlZigpKTsKKyAgICByZXR1cm4gc2Vzc2lv
bjsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTVmNDliOTczOWQy
NDc5ZDU1NWRmOGZiMDI3ZWRmZWNhOWMzNDA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NE
TUluc3RhbmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0
YW5jZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5jZSB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2UoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxS
ZW1vdGVDRE1JbnN0YW5jZT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
biYmKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFJlbW90
ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKTsKKworICAg
IEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LmtleVN5c3RlbTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9m
YWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cisg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisK
K30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DRE1fSU5TVEFOQ0UoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZSwgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkltcGxlbWVudGF0aW9uVHlwZTo6UmVt
b3RlKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY1MzJkNzJlN2NlNGI4NTNmMmQzYjkzNDU1ZTE5MjgxYzQxOWZhNDMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24geworICAgIFN0cmluZyBrZXlTeXN0ZW07CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGtleVN5c3RlbTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7Cisg
ICAgICAgIE9wdGlvbmFsPFN0cmluZz4ga2V5U3lzdGVtOworICAgICAgICBkZWNvZGVyID4+IGtl
eVN5c3RlbTsKKyAgICAgICAgaWYgKCFrZXlTeXN0ZW0pCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqa2V5
U3lzdGVtKSwKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZm
ZGU2OTFjM2U4OTViODg1OWU2MjA1YTcxZTExNWZhOWI0ZmUwYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5j
bHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA1Y2NiZTIzOTZmOWIyZjg2YzljNmIy
NmYzM2UxYmEyMzViMDE3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtMCwwICsxLDE0
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK1JlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUo
aWQpKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0
b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKK3sKK30KKwordm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsK
KyAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwg
ZmFsc2UsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlcXVlc3RMaWNlbnNlKHR5
cGUsIGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkpLCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtZXNzYWdlLmJ1ZmZlcigpKSB7Cisg
ICAgICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygp
LCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBjYWxsYmFjayhtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHNlc3Npb25JZCwg
bmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsK
KyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFs
c2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBXVEZN
b3ZlKHJlc3BvbnNlKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNz
aW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBt
ZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHNlc3Np
b25XYXNDbG9zZWQsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0
aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsK
KyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok90
aGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklk
LCBvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE9wdGlvbmFsPEtleVN0
YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBp
cmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNz
aW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUo
bWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCwgbG9hZEZhaWx1cmUpOwor
ICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Q2xvc2VTZXNzaW9uKHNlc3Npb25JZCksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayh7IH0sIFdURjo6bnVsbG9wdCwg
RmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lv
bklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0
b3ImJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICBp
ZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCisgICAgICAgICAgICByZWFs
TWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSks
IHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2Fn
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6U3Rv
cmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJiBrZXlTdGF0dXNlcykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT51cGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSk7Cit9CisKK3ZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQoreworICAg
IGlmIChtX2NsaWVudCAmJiBtZXNzYWdlLmJ1ZmZlcigpKQorICAgICAgICBtX2NsaWVudC0+c2Vu
ZE1lc3NhZ2UodHlwZSwgbWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
c2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYyZDA1ZjhiZjk2M2VjYzUxMjYzMmEzYWFjYzA5
MDQ0OWViNWM3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTAsMCArMSw3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5o
PgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24g
ZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24oKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJl
bW90ZUNETUZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVt
b3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsK
KworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3Nh
Z2VzCisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJik7CisgICAg
dm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiYpOworICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJp
bmcmKTsKKworICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsgfQorICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsg
fQorICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBmaW5hbDsK
KworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YzIzOTJlN2VmODYyMDQ2MjFkMjg0MTQzOGI1ZWRm
NGQzODE1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMy
IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24gTm90UmVmQ291bnRlZCB7CisgICAgVXBkYXRlS2V5U3RhdHVz
ZXMoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVz
ZXMpCisgICAgU2VuZE1lc3NhZ2UoZW51bTp1aW50OF90IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBl
IHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlKQorICAgIFNlc3Np
b25JZENoYW5nZWQoU3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NmFjZDEyNjVhZjBj
ODQ2Mzg4ZTIzZjljY2ExNmQ5MDIzMzhmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IDJhYWU1ZTU0NDUxMDg0NzliZDNjZDMzOWFmYTZi
ZjZkMmRkYWJjZjYuLjVkN2E4YjhkMTEyNGIyYTUyOGFkNzNiZGM5NmQ5YTk3ODBkYzIwNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJh
dGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRp
YVN0cmF0ZWd5LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVk
aW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CkBAIC01MSw3
ICs1MywxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gV2Vi
TWVkaWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdAogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCiB2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyQ0RNRmFjdG9yaWVzKFZlY3Rv
cjxXZWJDb3JlOjpDRE1GYWN0b3J5Kj4mIGZhY3RvcmllcykKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY2Rt
RmFjdG9yeSgpLnJlZ2lzdGVyRmFjdG9yeShmYWN0b3JpZXMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisgICAgV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZh
Y3RvcmllcyhmYWN0b3JpZXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTcwYTliYjIzN2FjMzk4ZDZlMTgyZjllN2U5
ZTM3NzQ2NDFjYjk4ZC4uNzczYTU5Y2RhMWQ0OWI2ZDVjZGFlYWU1Yjc2YjJhMGRmYmE5ZTZmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMy
Miw2ICszMjIsOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWYwNGVi
OWFmY2I2NGZmNDk4ODQxYTQ2YTQ3MTcxNDk3MmVjNjlhZC4uNTFjMmY1ZTUzYjM0MGMyMjA1Zjc4
OWI0YjM3M2EyZTUwN2JiNmViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtMTc0LDYgKzE3NCwxMCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnkuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1f
c2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2RlZmluZSBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nlc3Npb25JRD0lIiBQUkl1NjQg
Il0gV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQsICMjX19W
QV9BUkdTX18pCiAKQEAgLTI0MCw2ICsyNDQsMTAgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vzcygp
CiAgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAg
ICBhZGRTdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCk7CisjZW5kaWYKKwogICAgIEdpZ2Fj
YWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392428</attachid>
            <date>2020-03-04 09:47:36 -0800</date>
            <delta_ts>2020-03-04 09:49:47 -0800</delta_ts>
            <desc>Patch for landing: Part 3: RemoteCDM</desc>
            <filename>bug-208090-20200304094735.patch</filename>
            <type>text/plain</type>
            <size>173098</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUxODRmODVlMzhkNjEx
ZGUxMDQ1ZGMzNThmMzY3MWYwMGYwYmI4Yy4uNDExZDkxNDJiNDFlZGMyMDQ1YjAxZDcxOGM2M2Yx
NDEwYTZjNDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGV4cG9ydCBtYWNyb3MgdG8gQ0RNRmFjdG9yeTo6
cmVnaXN0ZXJlZEZhY3RvcmllcygpLgorCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRmFjdG9yeS5oOgorCiAyMDIwLTAzLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAoQ29va2llQ2FjaGUpIFVuYWJsZSB0byBsb2cg
aW50byBIdWx1LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTc2Y2I0ODY4ZjhlYTBkNWM0ZjY2Nzc0YjBmNDk1
ZjY1ZWFkYzc2Li40NTBlN2UzNTJmM2VhYjhmMzU2MGUxNjViNzNhYmU5M2MwODQ2OTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGlu
IHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90
ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAg
b2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBl
eGlzdGluZyBDRE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5ICB3aGVuIHRoZSBH
UFUgcHJvY2VzcyBpcyBkaXNhYmxlZCwKKyAgICAgICAgYnkgbWFraW5nIGluaXRpYWxpemF0aW9u
IG9mIHRoZSBDRE0gZmFjdG9yaWVzIGNvbnRpbmdlbnQgdXBvbiB0aGUgInVzZSBHUFUiIHNldHRp
bmcuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2Rt
RmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6ZmFjdG9yeUZvcktleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkSW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojpjb25maWd1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5zdGFu
Y2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6On5SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNUHJveHk6OmZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpSZW1vdGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0luaXRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lvbklkIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1GYWN0b3J5Ojp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZh
Y3Rvcnk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5Ojpy
ZW1vdmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVj
ZWl2ZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9m
S2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTAzICBKaXRl
biBNZWh0YSAgPGptZWh0YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5h
dGl2ZSBTZXJ2aWNlcyBTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKaW5kZXggNTI1Yzg0ZWNiZTc5MWY0MGI1NDdmYjdm
YWZkZTlkMDNiYTgxMGJhZS4uZmIzNTBkNDg1NWExYWIzM2IxYjZkMWM0ZGNlNzNhN2U3MjZhNjUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUZhY3RvcnkuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
c3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3Rv
cmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShD
RE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5yZWdpc3RlckZh
Y3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggODZmMDFiMzlhMDQ3MjhjMmMwYmZmNjdlNWJkMzkzZjA5MWI3
N2Y5ZC4uOWY5NDZmODQ5N2FmMjNiNGFmYTUxYjc5MTg0MTg1MTg4NjBhYzViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTgsNiArMTgs
MTAgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTExMiw2ICsxMTYsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA2NDY0ZDgzODlmYjUzZjUy
NzUwNzA1MzljOTgxMGZiMmQ4Y2NiMzE5Li5hOTZjMmNmZGRkNDZiMzU5MjM4ZTk2MjM0M2E5OTIy
MTA0ZWVhNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKQEAgLTEzNyw2ICsxMzcsMjEgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNDM2ZTRiNDIyNGNiMDQ1
YzllYWIzYTZjNzA1NDMwYmQ1MjUzMzMzNC4uNDVlZTNkYjdlZDdlMTMzNzJjOGE3NWFkNTU1YTE2
NTg3ZjY3ZDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTUxLDYgKzE1MSwx
MSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyIFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVD
RE1Qcm94eSBcCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAorICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAog
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXll
clByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2YTJjODcwZjdhYWExYjBkYjAwMGVmODg4MjdjOWEw
ZjYxZGNmMjViLi42Y2YxYzMwYjNlMzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC02MCwxMCArNjAsMTggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VzLmgiCisjZW5kaWYKKworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTksNiArMjA3LDE2IEBAIExpYldlYlJUQ0NvZGVjc1By
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVDRE1GYWN0b3J5
UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSgpCit7Cisg
ICAgaWYgKCFtX2NkbUZhY3RvcnlQcm94eSkKKyAgICAgICAgbV9jZG1GYWN0b3J5UHJveHkgPSBt
YWtlVW5pcXVlPFJlbW90ZUNETUZhY3RvcnlQcm94eT4oKnRoaXMpOworCisgICAgcmV0dXJuICpt
X2NkbUZhY3RvcnlQcm94eTsKK30KKyNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcC5lbnN1cmUocmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIFsmXSgpIHsKQEAgLTI2OSw2ICsyODcsMjggQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHko
KS5kaWRSZWNlaXZlQ0RNTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKQEAgLTI5NCw2ICszMzQsMjggQEAgYm9vbCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICB9CiAjZW5kaWYKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2Rt
RmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQ
cm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1G
YWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCkBAIC0z
MDIsNyArMzY0LDcgQEAgY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpt
ZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKIH0KIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQogY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9n
cHVQcm9jZXNzLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDc0NzE1YzgwYzU0NWJlYWZlYzNmNmI3ZTA5ODRlY2E1MGNiYTI2NjkuLmEzZWNhNWM4
ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDgsNiArNDgs
NyBAQCBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CiBjbGFz
cyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsK
IGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKQEAgLTg1
LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciYgc2Vzc2lvbk1hbmFnZXIoKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEKTsKIApAQCAtMTM4LDYgKzE0MywxMCBAQCBwcml2YXRlOgogICAgIAogICAg
IHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcCA9IEhhc2hNYXA8UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNYXAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHlNYXA7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKaW5k
ZXggMTZhNThlZGE1NDA2YmViZTc2OTNiMTlmNjgxNjZmYzJmZjlmNzBjZi4uYTM2MWM0MjBhNjlh
MzgzNGVmMjg0MWY1ZDM2MGMwZjgzMDE5ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTM1LDYg
KzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1faWRlbnRpZmllcihp
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaAppbmRleCBkNGM3MDZhMmY3NDMzNjI1MDQ0YTQ0ZGIzNWYwNmFlNWY5ZWU4
NTEwLi5lODVmNTcyZTFhMDBhYTEwODZmNWZiZjIyZjFmN2JmMTAyYzRkMmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94
eS5oCkBAIC0zMiwxNSArMzIsMjAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVHJhY2tQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFja0Jhc2UuaD4KIAorbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OwogCiBjbGFzcyBSZW1vdGVBdWRpb1RyYWNrUHJveHkgZmluYWwKICAgICA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb1RyYWNrUHJveHksIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwcml2YXRlIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUF1ZGlvVHJhY2tQcm94eT4g
Y3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBBdWRpb1Ry
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9UcmFj
a1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb1RyYWNrUHJveHkocGxheWVyLCBpZCwg
V1RGTW92ZShjb25uZWN0aW9uKSwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQpAQCAtNTAsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RyYWNr
UHJpdmF0ZS0+c2V0RW5hYmxlZChlbmFibGVkKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZUF1
ZGlvVHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgQXVkaW9UcmFja1ByaXZhdGUmKTsK
KyAgICBSZW1vdGVBdWRpb1RyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlJik7CiAKICAgICAvLyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudAog
ICAgIHZvaWQgZW5hYmxlZENoYW5nZWQoYm9vbCkgZmluYWw7CkBAIC02Nyw3ICs3Miw3IEBAIHBy
aXZhdGU6CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgbV9wbGF5ZXI7CiAgICAgVHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGU+
IG1fdHJhY2tQcml2YXRlOworICAgIFJlZjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZT4gbV90
cmFja1ByaXZhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2ExMzgyNDQ5OTY0NTIzNmFhZjVkMTU1NDEzM2FhNjFiZjczZTk1ZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAi
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+Cisj
aW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDog
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZUNE
TUZhY3RvcnlQcm94eTo6flJlbW90ZUNETUZhY3RvcnlQcm94eSgpID0gZGVmYXVsdDsKKworc3Rh
dGljIENETUZhY3RvcnkqIGZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCit7CisgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3Rv
cmllcygpOworICAgIGF1dG8gZm91bmRJbmRleCA9IGZhY3Rvcmllcy5maW5kTWF0Y2hpbmcoWyZd
IChhdXRvJiBmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5LT5zdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0pOyB9KTsKKyAgICBpZiAoZm91bmRJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhY3Rvcmllc1tmb3VuZEluZGV4XTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIGZhY3RvcnkgPSBm
YWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSk7CisgICAgaWYgKCFmYWN0b3J5KSB7CisgICAg
ICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RNKGtleVN5c3RlbSk7CisgICAgaWYg
KCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcm94eSA9IFJlbW90ZUNETVByb3h5OjpjcmVhdGUo
bWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUocHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRp
ZmllciA9IFJlbW90ZUNETUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gcHJveHktPmNvbmZpZ3VyYXRpb24oKTsKKyAgICBh
ZGRQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgY29tcGxldGlvbihXVEZN
b3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAg
Y29tcGxldGlvbihmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSkpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHBy
b3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlm
aWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZh
Y3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5z
dGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAg
aW5zdGFuY2UtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
Cit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQor
eworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
ZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7
CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9u
cy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KGNvbnN0IFJlbW90ZUNETUlkZW50
aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHkpCit7Cisg
ICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlk
LCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiBpZCkKK3sKKyAgICBBU1NFUlQobV9w
cm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eT4mJiBpbnN0YW5jZSkKK3sKKyAgICBBU1NFUlQoIW1faW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9pbnN0YW5jZXMuc2V0KGlkLCBXVEZNb3ZlKGluc3RhbmNlKSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhp
ZCkpOworICAgIG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNl
UHJveHkqIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlk
KTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlQ0RN
SW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9z
ZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNl
c3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24o
UmVtb3RlQ0RNSW5zdGFuY29uc3QgY2VTZXNzaW9uSWRlbnRpZmllciYgaWQpCit7CisgICAgQVNT
RVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiOGEyOGY0YzNmNGRk
Mzc3MjgyM2NhNzA1MWNkMzY2ZDFkY2Y0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CitjbGFzcyBS
ZW1vdGVDRE1Qcm94eTsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0
b3J5UHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNv
ZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHko
Y29uc3QgUmVtb3RlQ0RNSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94
eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJik7
CisKKyAgICB2b2lkIGFkZEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmKTsKKyAgICB2b2lk
IHJlbW92ZUluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYpOworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKGNvbnN0IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXImLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisg
ICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisg
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETVByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4+IG1faW5zdGFu
Y2VzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNDdjNWU2ZTYxYzQyMDc4MzFkYTBiZDExOGE2YWFlYjQwZDMzMTM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4g
UmVtb3RlQ0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZUNETShTdHJp
bmcga2V5U3lzdGVtKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3Vz
CisgICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSkgLT4gKGJvb2wgcmVzdWx0
KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTI0OGZkZmM4MmQ5NGFlNmUwZWQxNzViMzUxYzFiMjZiNTVhMzEzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94
eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2KQoreworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiY+KHsKKyAg
ICAgICAgcHJpdi0+a2V5U3lzdGVtKCksCisgICAgfSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShX
VEZNb3ZlKGNkbSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30K
KworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRy
PFJlbW90ZUNETVByb3h5PiYmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6
IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKKyAg
ICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpID0gZGVmYXVsdDsK
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgYWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIG1faW5zdGFu
Y2UtPmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBhbGxvd0Rpc3Rp
bmN0aXZlSWRlbnRpZmllcnMsIGFsbG93UGVyc2lzdGVudFN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRp
b24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBjZXJ0aWZpY2F0ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYg
KCFjZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKENETUluc3RhbmNl
OjpGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0YW5jZS0+c2V0
U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShjb21wbGV0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBtX2lu
c3RhbmNlLT5zZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJiBjb21wbGV0aW9uKQor
eworICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7Cisg
ICAgaWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9jZG0gfHwgIW1fY2RtLT5mYWN0b3J5KCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8g
aWRlbnRpZmllciA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNy
ZWF0ZShtYWtlV2Vha1B0cihtX2NkbS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVhc2VOb25OdWxs
KCksIGlkZW50aWZpZXIpOworICAgIG1fY2RtLT5mYWN0b3J5KCktPmFkZFNlc3Npb24oaWRlbnRp
ZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MTEyZDVmODRiODg0NzMx
OWRjNDA0ZmVhMTUwNmM4YjFlZjMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUlu
c3RhbmNlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNSW5zdGFuY2U7CitzdHJ1Y3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciAgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+
JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJik7CisgICAgflJlbW90ZUNETUluc3RhbmNl
UHJveHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2U7IH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdl
YkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdXNpbmcg
U3VjY2Vzc1ZhbHVlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZTsKKyAgICB1
c2luZyBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzOworICAgIHVzaW5nIEFsbG93UGVyc2lzdGVudFN0
YXRlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOworCisgICAg
Ly8gTWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNj
ZXNzVmFsdWUpPiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1Y2Nlc3NWYWx1
ZSk+JiYpOworICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4gbV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNl
OworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmln
dXJhdGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lv
bnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NTBlODUzNDFjMmViMzViYjZlYzA4MDk1ZDVhMDA0ZWNjYTEzOWY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3Nh
Z2VzIC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRl
U2Vzc2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIg
aWQpIFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVjdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGVudW06Ym9v
bCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkFsbG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpIC0+IChlbnVtOmJv
b2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBBc3luYworICAg
IFNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0
aWZpY2F0ZSkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IHN1Y2Nlc3MpIEFzeW5jCisgICAgU2V0U3RvcmFnZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5
KQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0NmNmZDA1OWMzMTM5NGYxNmM2MWRlMTliMGZlM2MzNGJmYTRlNzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50aWZp
ZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHktPm1f
c2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Npb25Q
cm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAs
IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXRE
YXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFpbml0RGF0YS5idWZmZXIoKSkg
eworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUgQ0RNUHJpdmF0
ZTo6c3VwcG9ydHNJbml0RGF0YSgpIGNoZWNrIGhlcmU6CisgICAgaWYgKCFtX2NkbS0+c3VwcG9y
dHNJbml0RGF0YShpbml0RGF0YVR5cGUsICppbml0RGF0YS5idWZmZXIoKSkpIHsKKyAgICAgICAg
Y29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXRE
YXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24g
PSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9
KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5z
ZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxldGlv
bikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24o
dHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRlOjpzYW5pdGl6
ZVJlc3BvbnNlKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFJlc3BvbnNlID0gbV9j
ZG0tPnNhbml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKTsKKyAgICBpZiAoIXNhbml0
aXplZFJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UsIHsgfSwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0aXplZFJlc3Bv
bnNlLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0g
KGJvb2wgc2Vzc2lvbkNsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGlt
ZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUo
ZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vz
c2lvbklkLCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikK
K3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplU2Vzc2lvbklkKCkg
Y2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFNlc3Npb25JZCA9IG1fY2RtLT5zYW5pdGl6
ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgIGlmICghc2FuaXRpemVkU2Vzc2lvbklkKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRj
aGVkU2Vzc2lvblR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9u
LT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJh
dGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwg
V1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vl
ZGVkLCBmYWlsdXJlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5jbG9zZVNlc3Npb24o
c2Vzc2lvbklkLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUg
eyBjb21wbGV0aW9uKCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAg
bV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRT
ZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoZXhwaXJlZFNlc3Np
b25zRGF0YSkKKyAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7
CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJl
ZFNlc3Npb25EYXRhUmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorewor
ICAgIG1fc2Vzc2lvbi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0
YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdlKHR5cGUsIFdU
Rk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBm
YWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTgxNTM1NjZmNjQyZmM2OGEzNDU2NGU3NDY3NDUwZmI0NDlkYTk0MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
CisgICAgLy8gVHlwZXMKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I7CisgICAgdXNpbmcgTWVz
c2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAgICB1c2luZyBT
ZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZTsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgYm9vbCwgYm9vbCk+OworICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYm
LCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wpPjsKKyAgICB1
c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2Fn
ZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHVzaW5nIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3Rv
ciYmLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGJvb2wpPjsK
KyAgICB1c2luZyBTdG9yZVJlY29yZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PjsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJik7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4sIExv
YWRTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYpOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKKworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAor
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOworICAg
IHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4gbV9j
ZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gbV9zZXNzaW9uOworICAg
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41YjkzMTk2YzA5NWUwMzRiNjQyMWY4ZWU2MzhhZTA5ZWZjZTIwZTk0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBOb3RSZWZDb3Vu
dGVkIHsKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Okxp
Y2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9u
SWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNzaW9uV2FzQ2xv
c2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
cj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luKSAt
PiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+
IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25h
bDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3Vj
Y2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9u
TG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9uKFN0cmluZyBz
ZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3RyaW5nIHNlc3Np
b25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlKSAtPiAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXMs
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmluZyBzZXNzaW9u
SWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhYzkyZmQwOTdhZjFjZjliOGZmOGJiNDBk
YjFiZWE1ZTNhODBhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0
ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVm
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygp
LAorICAgICAgICBwcml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAgICAgcHJpdi0+
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXNz
aW9ucygpCisgICAgfSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Qcml2YXRlJ3Mg
cHJpdmF0ZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TVByb3h5PihuZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2
KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94eTo6UmVtb3Rl
Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rvcnkp
KQorICAgICwgbV9wcml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVD
RE1Qcm94eSgpID0gZGVmYXVsdDsKKworYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKK30K
KworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5z
YW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVD
RE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1Qcm94eTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV2ViQ29yZTo6Q0RNUHJp
dmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9wcml2YXRl
LT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbiksIGFjY2Vz
cywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpjcmVhdGVJ
bnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7Cisg
ICAgaWYgKCFwcml2YXRlSW5zdGFuY2UgfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0
aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluc3RhbmNl
ID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBwcml2
YXRlSW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZpZ3VyYXRpb24o
KTsKKyAgICBtX2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1vdmUoaW5zdGFu
Y2UpKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworfQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAg
bV9wcml2YXRlLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzlkNTU4ZGZmYTE1MmMwZGQ1YTBjMGIyYjVhODE3MzJhMWRiNWIxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAg
LTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsK
K2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Oworc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zOworfQorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Oworc3RydWN0IFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOwor
CitjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4geworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYp
OworICAgIH5SZW1vdGVDRE1Qcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQo
KTsgfQorCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9mYWN0b3J5LmdldCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJl
bW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZh
dGU+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBX
ZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OkNETVByaXZh
dGU6OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNyZWF0ZUlu
c3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZEFu
ZEluaXRpYWxpemUoKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2Zh
Y3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IG1fcHJpdmF0
ZTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9u
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTU1NTg0
ZWRmMTcxYTE2NWRjNTNmMGRhZTVmMWEzOTQ4Yzc1NWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1Qcm94eSBOb3RS
ZWZDb3VudGVkIHsKKyAgICBHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIGVudW06
Ym9vbCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKSAtPiAo
T3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gYWNjdW11bGF0ZWRD
b25maWd1cmF0aW9uKSBBc3luYworICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBMb2FkQW5k
SW5pdGlhbGl6ZSgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGM5ZDJlZTQ0
NWJkNWU2YTk0YWE0OGQ1OGI5ZTA0MjEzYmM1YWYyZTAuLjg3MWRlYTYwYmI3MjgyMWM2MTM1NDE4
ZjI4N2I5NTgzNjMwZmI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTGF5ZXJI
b3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3Nh
Z2VzLmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01MjMsOSArNTI4LDkgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcktleU5lZWRlZChVaW50OEFycmF5KikKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGlu
aXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC02OTUsNiArNzAw
LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlu
c3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGlu
c3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VBdHRhY2hlZChpbnN0YW5j
ZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNl
SWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNl
SWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0YW5jZVByb3h5
LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0
VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3Rh
bmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3Rh
bmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShp
bnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRpZgorCisKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29s
IHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxheWVyLT5iZWdpblNpbXVsYXRlZEhE
Q1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggZmFkYmUwOWE3ZDU0M2QxMWExODg2NjJhZmM3
OGFlYzRkMWU0ZjgwNy4uOGIzN2MwNDIwZGFhZjNhMjliMDc2MzA5NmZhMDA0MGFkZWRjY2IyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFz
cyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTQxLDYgKzE0NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7
CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYKKwogICAgIHZvaWQgYmVnaW5TaW11
bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDUwMzE4OTY3ZjI4MDZkYmMwNWZi
YTc1ZmI4ZTBjNTliMzQxZmQyYmMuLjM0ZDI0MThjY2Y4YWJiZmNjZjVkYzQxODIxNDA4YTY4MGVi
YTdjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC04Miw5ICs4Miwx
NiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICMgU2V0Q0RNU2Vzc2lvbgog
ICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0YWNoZWQKLSAgICAjIENkbUluc3Rh
bmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UKKyNlbmRpZgor
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBDZG1JbnN0YW5jZUF0dGFjaGVkKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisgICAgQ2RtSW5z
dGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5j
ZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgU2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKICNlbmRpZgogCiAgICAgQmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCAwYmUxNTQ1MWQ5YWI4NDliOWFh
NDliNTRjMzE1OTQ0Y2Q2ZjhmNzFiLi40ZjQ5ZjNhMzg3ZDBlYTEwZjE2MWU1YWQ3OWY4ZDc4NTUw
M2QxNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaApAQCAtNjEsOSArNjEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5kaWYKIAotICAgIHZp
cnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlJik7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYp
OwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAppbmRleCBmYjFkNDI5Y2QzYjk0ODQxZDI1Njdj
MzQzMjZmODU5ODcyZjZiMDE0Li4zODU2NzVjOTM4MWNkMTIwZDliMjQ2ZWI3YzhkZGIwNzNhZTEy
ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9UcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9UcmFja1Byb3h5LmNwcApAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIFJlbW90ZVZpZGVvVHJhY2tQcm94
eTo6UmVtb3RlVmlkZW9UcmFja1Byb3h5KFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwg
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIDogbV9wbGF5
ZXIocGxheWVyKQogICAgICwgbV9pZGVudGlmaWVyKGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oCmluZGV4IGJkYjBl
YjAwN2JkYWE0N2M1ZGY2NjZiYWFlMjE5MzJkYTc5OTM5YjcuLmM2ZTE5MzRmNWRmZmIwOWVmMjli
ZGU5MTExOWNjN2MwNDg4MzgxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmgKQEAgLTMyLDE1ICszMiwyMCBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvVHJhY2tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb1Ry
YWNrUHJpdmF0ZS5oPgogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclByb3h5Owogc3Ry
dWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CiAKIGNsYXNzIFJlbW90ZVZpZGVv
VHJhY2tQcm94eSBmaW5hbAogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90
ZVZpZGVvVHJhY2tQcm94eSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4KICAgICAsIHBy
aXZhdGUgV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVDbGllbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlVmlkZW9UcmFja1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUp
CisgICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb1RyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVNZWRp
YVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVZpZGVvVHJhY2tQcm94eShwbGF5ZXIsIGlkLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCB0cmFj
a1ByaXZhdGUpKTsKICAgICB9CkBAIC01MCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpIHsgbV90cmFja1ByaXZhdGUtPnNldFNlbGVjdGVkKHNl
bGVjdGVkKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZVZpZGVvVHJhY2tQcm94eShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiwgVmlkZW9UcmFja1ByaXZhdGUmKTsKKyAgICBSZW1vdGVWaWRlb1RyYWNr
UHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlJik7
CiAKICAgICAvLyBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudAogICAgIHZvaWQgc2VsZWN0ZWRDaGFu
Z2VkKGJvb2wpIGZpbmFsOwpAQCAtNjcsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkmIG1fcGxheWVyOwogICAgIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb247Ci0gICAgUmVmPFZpZGVvVHJhY2tQcml2YXRlPiBtX3RyYWNrUHJpdmF0ZTsKKyAg
ICBSZWY8V2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQppbmRleCAwZTc3NDdjMjJlOGY1OTg5MjU0Yzk0ZmViMTg3YjkwYjNiMzRjY2E4Li4yNTZk
Yzk5MDViZjQ0NjZkMGMyYWQ1NzRkOGMzNjhhMTRiZTY5NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIzNCw2ICsyMzQsOSBAQCBkZWYgdHlwZXNfdGhh
dF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNv
cmRlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXInLAorICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXInLAorICAgICAgICAnV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVu
dGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDVhZGIzN2Q4YjViZGVmMDBhNTY2ZjRhMDJkYjY0YmI5NWRhYjAwMjQuLjhiZjhk
M2Q1NWVhNTU0NjU0N2JjMTM3ZTQyNjg0MGE0YTExZjgxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzIxNyw0ICszMjE3LDU5IEBA
IE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2FnZSkKK3sKKyAgICBlbmNv
ZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
RGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2VE
YXRhOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+
ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZVR5cGUgdHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIG1ha2VPcHRpb25hbDxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+KHsgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkgfSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMp
Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oa2V5U3RhdHVzZXMuc2l6
ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGtleVN0YXR1cyA6IGtleVN0YXR1c2VzKSB7CisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleSA9IGtleVN0YXR1cy5maXJzdC5jb3B5UmVmKCk7Cisg
ICAgICAgIGVuY29kZXIgPDwga2V5IDw8IGtleVN0YXR1cy5zZWNvbmQ7CisgICAgfQorfQorCitP
cHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Ig
a2V5U3RhdHVzZXM7CisgICAga2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRh
U2l6ZSk7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7ICsraSkgewor
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXk7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoa2V5KSB8fCAha2V5KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1cyBzdGF0
dXM7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAga2V5U3RhdHVzZXMudW5jaGVja2VkQXBwZW5k
KHsga2V5LnJlbGVhc2VOb25OdWxsKCksIHN0YXR1cyB9KTsKKyAgICB9CisgICAgcmV0dXJuIGtl
eVN0YXR1c2VzOworfQorI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKIH0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA4OTg2MzU4M2YzYmMxNjY5MDk3NDZkZjYxODI2NDdkNjkyNTlhZWMzLi5kMDdm
MmJmNWIyMWI2MjBiOTE5ODEwMTk5NDBlMjc0NGVkMjUwMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTYsNiArNTYsMTEgQEAKICNpbmNs
dWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQWRkaXRpb25zLmg+CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSA8V2ViQ29yZS9D
RE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+Cisj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNo
U2VuZFJpZ2h0OwpAQCAtODM2LDYgKzg0MSwxOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIE9wdGlv
bmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4geworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpNZXNzYWdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3I+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJik7CisgICAgc3RhdGljIE9wdGlvbmFs
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC05ODQsNCArMTAwMSwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdU
RkxvZ0xldmVsPiB7CiAgICAgPjsKIH07CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
dGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpTZXNzaW9uTG9hZEZhaWx1cmU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSwKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9T
ZXNzaW9uRGF0YSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2Fk
RmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkLAorICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcgorICAgID47Cit9
OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
SERDUFN0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNv
cmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpI
RENQU3RhdHVzOjpVbmtub3duLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVz
OjpWYWxpZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0UmVz
dHJpY3RlZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0RG93
bnNjYWxlZAorICAgID47Cit9OworCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCBlZWRiN2U2ZGQ5YTllOWZhMjA3Y2U4YThkM2I2MjJjZDJmMGM5M2RmLi42ZDBl
OGM2OGEwMjM4ODczYjY4NjQyMzgzZTViN2JjNWFhMDYzN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI3
LDYgKzI3LDEwIEBAIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKK0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmNwcApAQCAtNDEsNiArNDUsNyBAQCBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiAKKwogTmV0d29ya1Byb2Nlc3MvQWRDbGlj
a0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRy
YWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
CkBAIC01NDEsNiArNTQ2LDEwIEBAIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAK
K1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUZhY3RvcnkuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgQG5v
LXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxNWM1MjRmMzYyMTc3ZGRjNzEyNzI3NjI1NTc4ODcwNGNlYjM5ZGEzLi41M2VkZTU2NmQzZGU4
ZTk5NzU0Yjk2NjI1NDY0YjYxZWIxNzQ4YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MDYsNiArMTcwNiw3IEBACiAJCUNEMTlE
MkVBMjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTlEMkU4MjA0NjQw
NkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDI4NjVFRTIyNTU1NjIwMDA2
MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJv
Y2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi87IH07CiAJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFD
NyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vz
c1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovOyB9OworCQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDY2MTgxMjQwMTA1NjQwMDQ3
Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQlDRDQ5MUIwODFFNzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjA2
MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovOyB9OwogCQlD
RDQ5MUIwRDFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q0OTFCMEIxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8qIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjBDMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CkBAIC0xNzI4LDYgKzE3MjksMjAgQEAK
IAkJQ0RBMjlBMkIxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
TWVzc2FnZXMuaCAqLzsgfTsKIAkJQ0RBOTNEQjAyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1
bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8q
IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovOyB9OworCQlDREFD
MjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjIyM0ZCNThGMjAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAqLzsgfTsKKwkJQ0RBQzIwQzMyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjYyM0ZDMkY3MzAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBDNDIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZS5oICovOyB9OworCQlDREFDMjBDNTIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZp
Z3VyYXRpb24uaCAqLzsgfTsKKwkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIw
QkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETS5oICovOyB9OworCQlDREFDMjBDOTIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkMyM0ZDMkY3
NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLzsgfTsK
KwkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkQy
M0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovOyB9OworCQlD
REFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzAyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLzsgfTsKKwkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDRjIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBGMjIzRkMzODNBMDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RB
QzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKKwkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCUNEQzI4MzFEMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5T
dGFja1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAqLzsg
fTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
Q0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgg
Ki87IH07CiAJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTExQ0JDNDgy
RjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi87IH07CkBAIC00OTk3LDYgKzUwMTIsMTAgQEAK
IAkJQ0QxOUQyRTkyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3Rp
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3Bw
OyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUMyMjU1NTYyMDAwNjA2QUM3IC8q
IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUQyMjU1
NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgwMjQwMTA1NjQwMDQ3
Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkx
QjA1MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkxQjA2MUU3MEQwNUYwMDAwOTA2
NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRDQ5MUIwQTFFNzMyRDEyMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDM4LDYgKzUwNTcsNDMgQEAKIAkJQ0RB
MjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUNEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91
Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3Vj
aFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpY1BhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVu
VG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnlQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlQ0RNUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEFEMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUUyM0ZCNTgy
QjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIxMjNGQjU4
RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEI2MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI3MjNGQzJGNzMwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUNETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFD
MjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUNETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBCQjIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEJFMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkYyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBD
MDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUlkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRTIzRkMzODM5MDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRjIzRkMzODM5MDAyMURF
RTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyog
UmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjEyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAv
KiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjMyM0ZDMzgzQTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1v
dGVDRE1Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmll
dy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaDsgcGF0aCA9IGlvcy9m
dWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREMyODMxQzIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBwYXRo
ID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREMzODJGNzE3MjExNTA2MDA4QTJGQzMgLyogQ0ZOZXR3b3JrLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ0ZOZXR3b3JrLmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGFic29sdXRlPiI7IH07CkBAIC01MzIyLDYgKzUzNzgsMjAgQEAKIAkJCQk5QjVCRUMyOTI0
MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLywKIAkJ
CQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmggKi8sCiAJCQkJOUI1QkVDMkUyNDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMg
LyogUmVtb3RlQ0RNLmNwcCAqLywKKwkJCQlDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNLmggKi8sCisJCQkJQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNv
bmZpZ3VyYXRpb24uaCAqLywKKwkJCQlDREFDMjBCOTIzRkMyRjczMDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeS5jcHAgKi8sCisJCQkJQ0RBQzIwQzAyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUZhY3RvcnkuaCAqLywKKwkJCQlDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZS5jcHAgKi8sCisJCQkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlLmggKi8sCisJCQkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovLAorCQkJCUNEQUMyMEI2MjNGQzJGNzMw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBC
RTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCAqLywKKwkJ
CQlDREFDMjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgg
Ki8sCisJCQkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovLAogCQkJCTA3QjkzRkY1MjNBRjBD
QjgwMDM2RjhFQSAvKiBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkw
NzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAq
LywKIAkJCQkwNzkyMzEzNDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmggKi8sCkBAIC01MzUyLDYgKzU0MjIsMTggQEAKIAkJCQk5QjEyMjlDRjIzRkYyODE0MDA4
Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJMDcxQkM1N0UyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAg
Ki8sCiAJCQkJMDcxQkM1N0YyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94
eS5oICovLAorCQkJCUNEQUMyMDc5MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHkuY3BwICovLAorCQkJCUNEQUMyMDc4MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCAqLywKKwkJCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEIzMjNGQjU4RjIwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjBCMjIzRkI1
OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovLAorCQkJCUNEQUMyMEIx
MjNGQjU4RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICov
LAorCQkJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwQUUyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8sCisJCQkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNE
QUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8sCisJCQkJQ0RB
QzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8sCisJCQkJQ0RBQzIw
ODYyM0ZCMjE1ODAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJ
CTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAgKi8sCiAJCQkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmggKi8sCiAJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtOTc0OSw2ICs5
ODMxLDIxIEBACiAJCQkJMUEwNDNCNUMxMjRENUU5RDAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUE4RUZBNkUxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdp
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2
N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYyMjNGQzM4M0EwMDIx
REVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJ
CUNEQUMyMEYzMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdl
cy5oICovLAorCQkJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFDMjBGNTIzRkMzODNCMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RB
QzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5o
ICovLAorCQkJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0Q0
NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2Vz
LmggKi8sCisJCQkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVDMjNGQzM4MzgwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CisJCQkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFD
MjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAorCQkJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJQ0RBQzIwRjAyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJ
CTBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXMuaCAqLywKIAkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTEwNjU1LDYgKzEw
NzUyLDE2IEBACiAJCQkJOUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlDRDIzRkYyNUYy
MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCNUJFQzJBMjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM3MjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE0uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRDIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Q0RBQzIwQ0YyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEQUMyMEM0MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzMy
M0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0RBQzIwQjQyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM5MjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2
NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTEyMzU0LDYgKzEyNDYxLDExIEBACiAJCQkJMkQ1NEMzMUIyMTJG
NERBNjAwNDlDMTc0IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUIxMjI5Q0UyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY3MjNGQzcy
NkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q0NjYx
ODMyNDAxMEE2NzAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENzJBMUZBMjEyQkY0NkUwMDUx
N0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQzE4RkI0MjE4QTZF
OUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCBkZmI5YjlhOTM4Yjk4NWQyODBhY2RlZGEwNDhiYzVhNjZmNzdlNjFiLi5mOWI5
NzAxODE3MmRhNTJiMWM3MDU0OTM5NTkzYzIxMWRmZWQwMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzMs
NiArMzMsOCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgogI2luY2x1ZGUgIkxpYldl
YlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC00NCw2ICs0NiwxMCBAQAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25NZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc1LDYgKzgxLDEzIEBAIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXImIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpzYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVD
RE1GYWN0b3J5JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y2RtRmFjdG9yeSgpCit7CisgICAgcmV0
dXJuICpXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+
KCk7Cit9CisjZW5kaWYKKwogYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTEwMCw2
ICsxMTMsMTIgQEAgYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWMKICAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNlbmRpZgorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJl
bW90ZUNETUZhY3Rvcnk+KCktPmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogI2VuZGlmCiAgICAgcmV0dXJu
IG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaAppbmRleCA2YWNkY2JmMzk1NDUxYjZiNGM5NThlY2M5MmI1MjAxNmI2Nzc3Mjg5
Li4yYjU3MmMxYmFjYmZhNmI2YjI2ZjM1NjBjMjYyYTlhNDFiMGM3NWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0z
OSw2ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5OworCiBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+
IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
CkBAIC01OCw2ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUNETUZhY3RvcnkmIGNkbUZhY3Rv
cnkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApp
bmRleCBkODA5MDEwZDFiNWU0Mzc2OTFjNDI4MGQ2YTQ3MjM5MDg0ZjNmZTczLi45NWU3M2E2NTA5
YTJhMzI5MzBlYzk0Zjk1YWMxMzZjNmYwODBmNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwCkBAIC00OSw2ICs0OSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVk
aWE7CkBAIC05MTIsMTkgKzkxNiwyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
a2V5QWRkZWQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2Um
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RN
SW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlz
PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZUF0dGFjaGVkKGRv
d25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7
CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVk
KENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5j
ZURldGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFu
Y2VEZXRhY2hlZChkb3duY2FzdDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZp
ZXIoKSksIG1faWQpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1w
dFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5z
dGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5z
dGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OkF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoZG93bmNh
c3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkK
QEAgLTkzMiw2ICs5MzksMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRp
bmdGb3JLZXlDaGFuZ2VkKCkKICAgICBtX3BsYXllci0+d2FpdGluZ0ZvcktleUNoYW5nZWQoKTsK
IH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2Um
JiBpbml0RGF0YSkKK3sKKyAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSk7CisgICAgbV9wbGF5ZXItPmlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0
YUJ1ZmZlcikpOworfQorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0Zv
cktleSgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTkzOSw2ICs5NTIsMTMg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXkoKSBjb25zdAog
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91
bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRTaG91bGRDb250aW51
ZUFmdGVyS2V5TmVlZGVkKHNob3VsZCksIG1faWQpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApp
bmRleCA1NTlmZDY1MDIwODhlYmIzN2Q3NmVhN2Q2OTM1NTcyNjM4ZjIxMDIzLi43YWI2NjUyOWE1
MTk3MzU4MzFjZmJjYzg5OTE4YmJhNzc3YWM1Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogICAgIHZvaWQgd2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKKyAgICB2b2lkIGluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYsIElQQzo6RGF0YVJlZmVyZW5jZSYm
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTMx
NSw2ICszMTYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBm
aW5hbDsKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5
TmVlZGVkKGJvb2wpIGZpbmFsOworI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbiopIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbgppbmRleCBhNTA3NzZkZGFhNDI3NmMxYzZkZGU3ZTVkYjA3YmY5OGE2N2FlOGY1Li45
NDQ4ZGUwMmYxYWM5ZTQ2NDM4MzNjMmQ1NTM3NTljOTgzMGI4MTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAtNzUsNiArNzUsNyBAQCBtZXNzYWdl
cyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogICAgIFdhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKKyAgICBJbml0
aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChTdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgaW5pdERhdGEpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5MWI0MGYzYjljNzViM2MxMTBiNjM2ZjY4Y2E1NzA1YTI1
YjU0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmNwcApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE0uaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUmVzdHJpY3Rp
b25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNPiBSZW1vdGVDRE06OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFj
dG9yeSwgUmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYg
Y29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4o
bmV3IFJlbW90ZUNETShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25m
aWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE06OlJlbW90ZUNETShXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZh
Y3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1
cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNOjpn
ZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25m
aWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAg
ICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpHZXRTdXBwb3J0ZWRDb25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbiksIGFjY2VzcyksIFdURk1vdmUoY2FsbGJhY2spLCBt
X2lkZW50aWZpZXIpOworfQorCisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbW90ZUNETTo6
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RN
OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5
cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RN
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0
ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2Uo
KS4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ0RNUmVxdWlyZW1lbnQgUmVtb3RlQ0RNOjpkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENETVJlcXVp
cmVtZW50OjpOb3RBbGxvd2VkOworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OnBlcnNp
c3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZDsKK30KKworYm9vbCBSZW1v
dGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFi
bGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZWZQdHI8Q0RNSW5zdGFu
Y2U+IFJlbW90ZUNETTo6Y3JlYXRlSW5zdGFuY2UoKQoreworICAgIGlmICghbV9mYWN0b3J5KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciBpZDsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6Q3JlYXRlSW5zdGFuY2UoKSwgTWVzc2FnZXM6
OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5jZTo6UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24p
LCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9y
eS5nZXQoKSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9p
ZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRp
YWxpemUoKSwgbV9pZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3Rl
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
Cit7CisgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4KKyAgICByZXR1cm4gcmVz
cG9uc2UuY29weSgpOworfQorCitPcHRpb25hbDxTdHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBj
aGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OmxvYWRTZXNzaW9uKCkuCisgICAgcmV0dXJuIHNlc3Npb25JZDsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI2ZDZmMzY5NzliMDQ1MmNmOTZhNTJkMThmNmFkMGI3ZjMzNDhlOGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE0gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJp
dmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IGNy
ZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUlkZW50aWZpZXImJiwg
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE0oKSA9IGRl
ZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOwor
CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nl
c3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKworICAgIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhS
ZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Np
b25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6Q0RN
UmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmlj
dGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0
ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7
CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0
aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3Vw
cG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LnN1cHBvcnRlZFJvYnVzdG5lc3NlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXM7IH0KKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNTZXNzaW9uczsgfQorCisgICAgV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRp
b247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NjJjNDY0ZmRmZGNkOGMzNTc1NmIwZTM4ZGFkMGY4OTM5MDU4ODY3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0
aW9uLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24g
eworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgIFZl
Y3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgYm9vbCBzdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnM7CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7
CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAgICBlbmNv
ZGVyIDw8IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgICAgICBlbmNvZGVyIDw8IHN1
cHBvcnRzU2Vzc2lvbnM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Cisg
ICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZEluaXRE
YXRhVHlwZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcykKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21T
dHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9y
dGVkUm9idXN0bmVzc2VzOworICAgICAgICBpZiAoIXN1cHBvcnRlZFJvYnVzdG5lc3NlcykKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNT
ZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFs
PGJvb2w+IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXNz
aW9uczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1Nlc3Npb25zKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUo
KnN1cHBvcnRlZEluaXREYXRhVHlwZXMpLAorICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVk
Um9idXN0bmVzc2VzKSwKKyAgICAgICAgICAgICpzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcywK
KyAgICAgICAgICAgICpzdXBwb3J0c1Nlc3Npb25zLAorICAgICAgICB9fTsKKyAgICB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZjJkM2Q1YzYxMGFmNTRhZDFkM2VmNGZhNjFjNDU5NjY2NTI5N2MxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
LmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1v
dGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1GYWN0b3J5KFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAg
OiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKworUmVtb3RlQ0RNRmFjdG9yeTo6flJlbW90ZUNE
TUZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6cmVnaXN0ZXJG
YWN0b3J5KFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGZhY3RvcmllcykKK3sKKyAgICBmYWN0b3JpZXMu
YXBwZW5kKHRoaXMpOworfQorCitjb25zdCBjaGFyKiBSZW1vdGVDRE1GYWN0b3J5OjpzdXBwbGVt
ZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVDRE1GYWN0b3J5IjsKK30KKworR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkK
K3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9
CisKK2Jvb2wgUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCit7CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwg
eyB9KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJp
dmF0ZT4gUmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KQoreworICAgIFJlbW90ZUNETUlkZW50aWZpZXIgaWQ7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETShr
ZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE06OlJl
cGx5KGlkLCBjb25maWd1cmF0aW9uKSwgeyB9KTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gUmVtb3RlQ0RNOjpjcmVhdGUobWFrZVdlYWtQdHIodGhp
cyksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1v
dGVDRE1GYWN0b3J5OjphZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIgaWQsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbikKK3sKKyAgICBB
U1NFUlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwg
V1RGTW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6cmVtb3ZlU2Vz
c2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VS
VChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOwor
fQorCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg5ZWQwNjAw
MWM2NjNiYWYxODVkYjkzMTc0OTdlOTJjZmJmYzA2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCkBAIC0wLDAg
KzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNldHRpbmdzOworfQorCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBS
ZW1vdGVDRE07CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb247CitjbGFzcyBXZWJQcm9j
ZXNzOworCitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5IGZpbmFsCisgICAgOiBwdWJsaWMgV2ViQ29y
ZTo6Q0RNRmFjdG9yeQorICAgICwgcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZUNETUZhY3RvcnkoV2Vi
UHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnkoKTsKKworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9u
JiBncHVQcm9jZXNzQ29ubmVjdGlvbigpOworCisgICAgdm9pZCByZWdpc3RlckZhY3RvcnkoVmVj
dG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlU2Vzc2lv
bk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB2b2lkIGFk
ZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbj4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIEhh
c2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPj4gbV9jZG1zOworICAgIFdlYlByb2Nlc3Mm
IG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJlZTNhMzgxOWMxNzA3YjU1OGIzZmQ5YWFhODgxNjMxNTgzOTJmYWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBS
ZW1vdGVDRE1JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUxYTBlMGI1
MmQyZGI1YjM2NmU4YWI2Njk2OGM1NjE0NjJlZGQ5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC0w
LDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxSZW1v
dGVDRE1JbnN0YW5jZT4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaWQsIFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2UoV1RGTW92ZShmYWN0b3J5KSwgV1RG
TW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFu
Y2U6OlJlbW90ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5
LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rv
cnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmll
cnMgZGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVu
dFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9y
eSkgeworICAgICAgICBjYWxsYmFjayhGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
LCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVByb3h5OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZS5nZXQoKSks
IFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQorewor
ICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OlNldFN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KSwgbV9pZGVudGlm
aWVyKTsKK30KKworUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RN
SW5zdGFuY2U6OmNyZWF0ZVNlc3Npb24oKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIgaWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lv
bigpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lvbjo6UmVw
bHkoaWQpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRl
KG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQpKTsKKyAgICBtX2ZhY3Rv
cnktPmFkZFNlc3Npb24oaWQsIHNlc3Npb24uY29weVJlZigpKTsKKyAgICByZXR1cm4gc2Vzc2lv
bjsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTVmNDliOTczOWQy
NDc5ZDU1NWRmOGZiMDI3ZWRmZWNhOWMzNDA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NE
TUluc3RhbmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0
YW5jZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5jZSB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2UoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxS
ZW1vdGVDRE1JbnN0YW5jZT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
biYmKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFJlbW90
ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKTsKKworICAg
IEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LmtleVN5c3RlbTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9m
YWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cisg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisK
K30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DRE1fSU5TVEFOQ0UoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZSwgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkltcGxlbWVudGF0aW9uVHlwZTo6UmVt
b3RlKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY1MzJkNzJlN2NlNGI4NTNmMmQzYjkzNDU1ZTE5MjgxYzQxOWZhNDMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24geworICAgIFN0cmluZyBrZXlTeXN0ZW07CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGtleVN5c3RlbTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7Cisg
ICAgICAgIE9wdGlvbmFsPFN0cmluZz4ga2V5U3lzdGVtOworICAgICAgICBkZWNvZGVyID4+IGtl
eVN5c3RlbTsKKyAgICAgICAgaWYgKCFrZXlTeXN0ZW0pCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqa2V5
U3lzdGVtKSwKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZm
ZGU2OTFjM2U4OTViODg1OWU2MjA1YTcxZTExNWZhOWI0ZmUwYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5j
bHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA1Y2NiZTIzOTZmOWIyZjg2YzljNmIy
NmYzM2UxYmEyMzViMDE3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtMCwwICsxLDE0
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK1JlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUo
aWQpKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0
b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKK3sKK30KKwordm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsK
KyAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwg
ZmFsc2UsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlcXVlc3RMaWNlbnNlKHR5
cGUsIGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkpLCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtZXNzYWdlLmJ1ZmZlcigpKSB7Cisg
ICAgICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygp
LCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBjYWxsYmFjayhtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHNlc3Npb25JZCwg
bmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsK
KyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFs
c2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBXVEZN
b3ZlKHJlc3BvbnNlKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNz
aW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBt
ZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHNlc3Np
b25XYXNDbG9zZWQsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0
aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsK
KyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok90
aGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklk
LCBvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE9wdGlvbmFsPEtleVN0
YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBp
cmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNz
aW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUo
bWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCwgbG9hZEZhaWx1cmUpOwor
ICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Q2xvc2VTZXNzaW9uKHNlc3Npb25JZCksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayh7IH0sIFdURjo6bnVsbG9wdCwg
RmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lv
bklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0
b3ImJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICBp
ZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCisgICAgICAgICAgICByZWFs
TWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSks
IHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2Fn
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6U3Rv
cmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJiBrZXlTdGF0dXNlcykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT51cGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSk7Cit9CisKK3ZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQoreworICAg
IGlmIChtX2NsaWVudCAmJiBtZXNzYWdlLmJ1ZmZlcigpKQorICAgICAgICBtX2NsaWVudC0+c2Vu
ZE1lc3NhZ2UodHlwZSwgbWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
c2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYyZDA1ZjhiZjk2M2VjYzUxMjYzMmEzYWFjYzA5
MDQ0OWViNWM3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTAsMCArMSw3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5o
PgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24g
ZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24oKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJl
bW90ZUNETUZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVt
b3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsK
KworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3Nh
Z2VzCisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJik7CisgICAg
dm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiYpOworICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJp
bmcmKTsKKworICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsgfQorICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsg
fQorICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBmaW5hbDsK
KworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YzIzOTJlN2VmODYyMDQ2MjFkMjg0MTQzOGI1ZWRm
NGQzODE1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMy
IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24gTm90UmVmQ291bnRlZCB7CisgICAgVXBkYXRlS2V5U3RhdHVz
ZXMoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVz
ZXMpCisgICAgU2VuZE1lc3NhZ2UoZW51bTp1aW50OF90IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBl
IHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlKQorICAgIFNlc3Np
b25JZENoYW5nZWQoU3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NmFjZDEyNjVhZjBj
ODQ2Mzg4ZTIzZjljY2ExNmQ5MDIzMzhmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IDJhYWU1ZTU0NDUxMDg0NzliZDNjZDMzOWFmYTZi
ZjZkMmRkYWJjZjYuLjVkN2E4YjhkMTEyNGIyYTUyOGFkNzNiZGM5NmQ5YTk3ODBkYzIwNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJh
dGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRp
YVN0cmF0ZWd5LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVk
aW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CkBAIC01MSw3
ICs1MywxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gV2Vi
TWVkaWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdAogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCiB2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyQ0RNRmFjdG9yaWVzKFZlY3Rv
cjxXZWJDb3JlOjpDRE1GYWN0b3J5Kj4mIGZhY3RvcmllcykKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY2Rt
RmFjdG9yeSgpLnJlZ2lzdGVyRmFjdG9yeShmYWN0b3JpZXMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisgICAgV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZh
Y3RvcmllcyhmYWN0b3JpZXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTcwYTliYjIzN2FjMzk4ZDZlMTgyZjllN2U5
ZTM3NzQ2NDFjYjk4ZC4uNzczYTU5Y2RhMWQ0OWI2ZDVjZGFlYWU1Yjc2YjJhMGRmYmE5ZTZmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMy
Miw2ICszMjIsOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWYwNGVi
OWFmY2I2NGZmNDk4ODQxYTQ2YTQ3MTcxNDk3MmVjNjlhZC4uNTFjMmY1ZTUzYjM0MGMyMjA1Zjc4
OWI0YjM3M2EyZTUwN2JiNmViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtMTc0LDYgKzE3NCwxMCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnkuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1f
c2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2RlZmluZSBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nlc3Npb25JRD0lIiBQUkl1NjQg
Il0gV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQsICMjX19W
QV9BUkdTX18pCiAKQEAgLTI0MCw2ICsyNDQsMTAgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vzcygp
CiAgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAg
ICBhZGRTdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCk7CisjZW5kaWYKKwogICAgIEdpZ2Fj
YWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392429</attachid>
            <date>2020-03-04 09:50:18 -0800</date>
            <delta_ts>2020-03-04 11:42:33 -0800</delta_ts>
            <desc>Patch for landing: Part 3: RemoteCDM</desc>
            <filename>bug-208090-20200304095016.patch</filename>
            <type>text/plain</type>
            <size>173098</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUxODRmODVlMzhkNjEx
ZGUxMDQ1ZGMzNThmMzY3MWYwMGYwYmI4Yy4uNDExZDkxNDJiNDFlZGMyMDQ1YjAxZDcxOGM2M2Yx
NDEwYTZjNDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TW9kZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGV4cG9ydCBtYWNyb3MgdG8gQ0RNRmFjdG9yeTo6
cmVnaXN0ZXJlZEZhY3RvcmllcygpLgorCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRmFjdG9yeS5oOgorCiAyMDIwLTAzLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAoQ29va2llQ2FjaGUpIFVuYWJsZSB0byBsb2cg
aW50byBIdWx1LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYTc2Y2I0ODY4ZjhlYTBkNWM0ZjY2Nzc0YjBmNDk1
ZjY1ZWFkYzc2Li40NTBlN2UzNTJmM2VhYjhmMzU2MGUxNjViNzNhYmU5M2MwODQ2OTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMC0wMi0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGlu
IHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBSZW1vdGVDRE1GYWN0b3J5LCBSZW1hdGVDRE0sIFJlbW90
ZUNETUluc3RhbmNlLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24sIGFuZCBhbGwKKyAgICAgICAg
b2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgIEFsbG93IHRoZSBl
eGlzdGluZyBDRE1GYWN0b3J5IG1hY2hpbmVyeSB0byB3b3JrIG5vcm1hbGx5ICB3aGVuIHRoZSBH
UFUgcHJvY2VzcyBpcyBkaXNhYmxlZCwKKyAgICAgICAgYnkgbWFraW5nIGluaXRpYWxpemF0aW9u
IG9mIHRoZSBDRE0gZmFjdG9yaWVzIGNvbnRpbmdlbnQgdXBvbiB0aGUgInVzZSBHUFUiIHNldHRp
bmcuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2Rt
RmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3RvcnlQcm94eTo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6ZmFjdG9yeUZvcktleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkSW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWRkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaDogQWRkZWQu
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojpjb25maWd1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6aW5zdGFu
Y2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6On5SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNz
aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETVByb3h5Ojpjb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNUHJveHk6OmZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVl
ZGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpSZW1vdGVDRE0pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE06OnN1cHBvcnRzQ29uZmlndXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1
cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0luaXRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnBl
cnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpjcmVhdGVJbnN0YW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lvbklkIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ0RNQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUZhY3Rvcnk6OlJlbW90ZUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1GYWN0b3J5Ojp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZh
Y3Rvcnk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5Ojpy
ZW1vdmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeTo6ZGlkUmVj
ZWl2ZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1GYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
OjpSZW1vdGVDRE1JbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9m
S2V5VXNhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6c2Vzc2lvbklkQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTAzICBKaXRl
biBNZWh0YSAgPGptZWh0YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5h
dGl2ZSBTZXJ2aWNlcyBTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKaW5kZXggNTI1Yzg0ZWNiZTc5MWY0MGI1NDdmYjdm
YWZkZTlkMDNiYTgxMGJhZS4uZmIzNTBkNDg1NWExYWIzM2IxYjZkMWM0ZGNlNzNhN2U3MjZhNjUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUZhY3RvcnkuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
c3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIHJlZ2lzdGVyZWRGYWN0b3JpZXMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgcmVnaXN0ZXJlZEZhY3Rv
cmllcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShD
RE1GYWN0b3J5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5yZWdpc3RlckZh
Y3RvcnkoQ0RNRmFjdG9yeSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggODZmMDFiMzlhMDQ3MjhjMmMwYmZmNjdlNWJkMzkzZjA5MWI3
N2Y5ZC4uOWY5NDZmODQ5N2FmMjNiNGFmYTUxYjc5MTg0MTg1MTg4NjBhYzViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTgsNiArMTgs
MTAgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxl
LldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTExMiw2ICsxMTYsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA2NDY0ZDgzODlmYjUzZjUy
NzUwNzA1MzljOTgxMGZiMmQ4Y2NiMzE5Li5hOTZjMmNmZGRkNDZiMzU5MjM4ZTk2MjM0M2E5OTIy
MTA0ZWVhNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKQEAgLTEzNyw2ICsxMzcsMjEgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1GYWN0
b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUNETVByb3h5TWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNDM2ZTRiNDIyNGNiMDQ1
YzllYWIzYTZjNzA1NDMwYmQ1MjUzMzMzNC4uNDVlZTNkYjdlZDdlMTMzNzJjOGE3NWFkNTU1YTE2
NTg3ZjY3ZDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTUxLDYgKzE1MSwx
MSBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyIFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVD
RE1Qcm94eSBcCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5IFwKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAorICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAog
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXll
clByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2YTJjODcwZjdhYWExYjBkYjAwMGVmODg4MjdjOWEw
ZjYxZGNmMjViLi42Y2YxYzMwYjNlMzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC02MCwxMCArNjAsMTggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1Q
cm94eU1lc3NhZ2VzLmgiCisjZW5kaWYKKworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTksNiArMjA3LDE2IEBAIExpYldlYlJUQ0NvZGVjc1By
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NQcm94eSgpCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVDRE1GYWN0b3J5
UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNkbUZhY3RvcnlQcm94eSgpCit7Cisg
ICAgaWYgKCFtX2NkbUZhY3RvcnlQcm94eSkKKyAgICAgICAgbV9jZG1GYWN0b3J5UHJveHkgPSBt
YWtlVW5pcXVlPFJlbW90ZUNETUZhY3RvcnlQcm94eT4oKnRoaXMpOworCisgICAgcmV0dXJuICpt
X2NkbUZhY3RvcnlQcm94eTsKK30KKyNlbmRpZgorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcC5lbnN1cmUocmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIFsmXSgpIHsKQEAgLTI2OSw2ICsyODcsMjggQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1GYWN0b3J5UHJveHko
KS5kaWRSZWNlaXZlQ0RNTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgY2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKQEAgLTI5NCw2ICszMzQsMjggQEAgYm9vbCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICB9CiAjZW5kaWYKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBjZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgY2Rt
RmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGNkbUZhY3RvcnlQ
cm94eSgpLmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBjZG1G
YWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCkBAIC0z
MDIsNyArMzY0LDcgQEAgY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpt
ZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gbV9ncHVQcm9jZXNzLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKIH0KIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQogY29uc3QgU3RyaW5nJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9n
cHVQcm9jZXNzLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KG1fc2Vzc2lvbklEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDc0NzE1YzgwYzU0NWJlYWZlYzNmNmI3ZTA5ODRlY2E1MGNiYTI2NjkuLmEzZWNhNWM4
ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDgsNiArNDgs
NyBAQCBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CiBjbGFz
cyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKK2NsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsK
IGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKQEAgLTg1
LDYgKzg2LDEwIEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciYgc2Vzc2lvbk1hbmFnZXIoKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEKTsKIApAQCAtMTM4LDYgKzE0MywxMCBAQCBwcml2YXRlOgogICAgIAogICAg
IHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1hcCA9IEhhc2hNYXA8UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNYXAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHlNYXA7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fY2RtRmFjdG9yeVByb3h5
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKaW5k
ZXggMTZhNThlZGE1NDA2YmViZTc2OTNiMTlmNjgxNjZmYzJmZjlmNzBjZi4uYTM2MWM0MjBhNjlh
MzgzNGVmMjg0MWY1ZDM2MGMwZjgzMDE5ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTM1LDYg
KzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1faWRlbnRpZmllcihp
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuaAppbmRleCBkNGM3MDZhMmY3NDMzNjI1MDQ0YTQ0ZGIzNWYwNmFlNWY5ZWU4
NTEwLi5lODVmNTcyZTFhMDBhYTEwODZmNWZiZjIyZjFmN2JmMTAyYzRkMmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94
eS5oCkBAIC0zMiwxNSArMzIsMjAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVHJhY2tQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFja0Jhc2UuaD4KIAorbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OwogCiBjbGFzcyBSZW1vdGVBdWRpb1RyYWNrUHJveHkgZmluYWwKICAgICA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb1RyYWNrUHJveHksIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwcml2YXRlIFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUF1ZGlvVHJhY2tQcm94eT4g
Y3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBBdWRpb1Ry
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9UcmFj
a1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb1RyYWNrUHJveHkocGxheWVyLCBpZCwg
V1RGTW92ZShjb25uZWN0aW9uKSwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQpAQCAtNTAsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RyYWNr
UHJpdmF0ZS0+c2V0RW5hYmxlZChlbmFibGVkKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZUF1
ZGlvVHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgQXVkaW9UcmFja1ByaXZhdGUmKTsK
KyAgICBSZW1vdGVBdWRpb1RyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlJik7CiAKICAgICAvLyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudAog
ICAgIHZvaWQgZW5hYmxlZENoYW5nZWQoYm9vbCkgZmluYWw7CkBAIC02Nyw3ICs3Miw3IEBAIHBy
aXZhdGU6CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgbV9wbGF5ZXI7CiAgICAgVHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKLSAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGU+
IG1fdHJhY2tQcml2YXRlOworICAgIFJlZjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZT4gbV90
cmFja1ByaXZhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDFlM2Y3YTE3ZWM0NTZmZjYxYWU1ODdiODc5NjRjNmY1MTQ4NmM4ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94eS5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAi
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+Cisj
aW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZh
Y3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDog
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZUNE
TUZhY3RvcnlQcm94eTo6flJlbW90ZUNETUZhY3RvcnlQcm94eSgpID0gZGVmYXVsdDsKKworc3Rh
dGljIENETUZhY3RvcnkqIGZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCit7CisgICAgYXV0byYgZmFjdG9yaWVzID0gQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3Rv
cmllcygpOworICAgIGF1dG8gZm91bmRJbmRleCA9IGZhY3Rvcmllcy5maW5kTWF0Y2hpbmcoWyZd
IChhdXRvJiBmYWN0b3J5KSB7IHJldHVybiBmYWN0b3J5LT5zdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0pOyB9KTsKKyAgICBpZiAoZm91bmRJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhY3Rvcmllc1tmb3VuZEluZGV4XTsKK30KKwordm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIGZhY3RvcnkgPSBm
YWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSk7CisgICAgaWYgKCFmYWN0b3J5KSB7CisgICAg
ICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RNKGtleVN5c3RlbSk7CisgICAgaWYg
KCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBwcm94eSA9IFJlbW90ZUNETVByb3h5OjpjcmVhdGUo
bWFrZVdlYWtQdHIodGhpcyksIFdURk1vdmUocHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRp
ZmllciA9IFJlbW90ZUNETUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gcHJveHktPmNvbmZpZ3VyYXRpb24oKTsKKyAgICBh
ZGRQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5KSk7CisgICAgY29tcGxldGlvbihXVEZN
b3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1v
dGVDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb24pCit7CisgICAg
Y29tcGxldGlvbihmYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSkpOworfQorCit2b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHBy
b3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlm
aWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUNETUZh
Y3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogaW5z
dGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAg
aW5zdGFuY2UtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2
b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
Cit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQor
eworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8UmVtb3RlQ0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
ZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7
CisgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gbV9pbnN0YW5jZXMuZ2V0KG1ha2VPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCisgICAgICAgIGluc3RhbmNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9u
cy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KGNvbnN0IFJlbW90ZUNETUlkZW50
aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHkpCit7Cisg
ICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlk
LCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1v
dmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiBpZCkKK3sKKyAgICBBU1NFUlQobV9w
cm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eT4mJiBpbnN0YW5jZSkKK3sKKyAgICBBU1NFUlQoIW1faW5zdGFuY2VzLmNvbnRhaW5zKGlkKSk7
CisgICAgbV9pbnN0YW5jZXMuc2V0KGlkLCBXVEZNb3ZlKGluc3RhbmNlKSk7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkKQoreworICAgIEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhp
ZCkpOworICAgIG1faW5zdGFuY2VzLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNl
UHJveHkqIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyJiBpZCkKK3sKKyAgICByZXR1cm4gbV9pbnN0YW5jZXMuZ2V0KGlk
KTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24oY29uc3QgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9z
ZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNl
c3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24o
Y29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYgaWQpCit7CisgICAgQVNT
RVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiOGEyOGY0YzNmNGRk
Mzc3MjgyM2NhNzA1MWNkMzY2ZDFkY2Y0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OworY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CitjbGFzcyBS
ZW1vdGVDRE1Qcm94eTsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1GYWN0
b3J5UHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNv
ZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHko
Y29uc3QgUmVtb3RlQ0RNSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94
eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJik7
CisKKyAgICB2b2lkIGFkZEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiYmKTsKKyAgICB2b2lk
IHJlbW92ZUluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYpOworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkqIGdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBhZGRTZXNzaW9uKGNvbnN0IFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXImLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisg
ICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JZGVudGlmaWVyJiYsIFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisg
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETVByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4+IG1faW5zdGFu
Y2VzOworICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNDdjNWU2ZTYxYzQyMDc4MzFkYTBiZDExOGE2YWFlYjQwZDMzMTM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4g
UmVtb3RlQ0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZUNETShTdHJp
bmcga2V5U3lzdGVtKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JZGVudGlmaWVyIGlkLCBzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3Vz
CisgICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSkgLT4gKGJvb2wgcmVzdWx0
KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTI0OGZkZmM4MmQ5NGFlNmUwZWQxNzViMzUxYzFiMjZiNTVhMzEzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1JbnN0YW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94
eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2KQoreworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiY+KHsKKyAg
ICAgICAgcHJpdi0+a2V5U3lzdGVtKCksCisgICAgfSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShX
VEZNb3ZlKGNkbSksIFdURk1vdmUocHJpdiksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30K
KworUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRy
PFJlbW90ZUNETVByb3h5PiYmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6
IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKKyAg
ICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQoreworfQorCitSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpID0gZGVmYXVsdDsK
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgYWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3VjY2Vzc1ZhbHVlKT4mJiBjb21wbGV0aW9uKQoreworICAgIG1faW5zdGFu
Y2UtPmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBhbGxvd0Rpc3Rp
bmN0aXZlSWRlbnRpZmllcnMsIGFsbG93UGVyc2lzdGVudFN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRp
b24pKTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBjZXJ0aWZpY2F0ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYg
KCFjZXJ0aWZpY2F0ZS5idWZmZXIoKSkgeworICAgICAgICBjb21wbGV0aW9uKENETUluc3RhbmNl
OjpGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnN0YW5jZS0+c2V0
U2VydmVyQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShjb21wbGV0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBtX2lu
c3RhbmNlLT5zZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7Cit9CisKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJiBjb21wbGV0aW9uKQor
eworICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7Cisg
ICAgaWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9jZG0gfHwgIW1fY2RtLT5mYWN0b3J5KCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8g
aWRlbnRpZmllciA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNy
ZWF0ZShtYWtlV2Vha1B0cihtX2NkbS5nZXQoKSksIHByaXZTZXNzaW9uLnJlbGVhc2VOb25OdWxs
KCksIGlkZW50aWZpZXIpOworICAgIG1fY2RtLT5mYWN0b3J5KCktPmFkZFNlc3Npb24oaWRlbnRp
ZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY29tcGxldGlvbihpZGVudGlmaWVyKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MTEyZDVmODRiODg0NzMx
OWRjNDA0ZmVhMTUwNmM4YjFlZjMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUlu
c3RhbmNlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNSW5zdGFuY2U7CitzdHJ1Y3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciAgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+
JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJik7CisgICAgflJlbW90ZUNETUluc3RhbmNl
UHJveHkoKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorICAg
IFdlYkNvcmU6OkNETUluc3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2U7IH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdl
YkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdXNpbmcg
U3VjY2Vzc1ZhbHVlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZTsKKyAgICB1
c2luZyBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzOworICAgIHVzaW5nIEFsbG93UGVyc2lzdGVudFN0
YXRlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOworCisgICAg
Ly8gTWVzc2FnZXMKKyAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNj
ZXNzVmFsdWUpPiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1Y2Nlc3NWYWx1
ZSk+JiYpOworICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGNyZWF0ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJik+JiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4gbV9jZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNl
OworICAgIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmln
dXJhdGlvbjsKKyAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lv
bnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NTBlODUzNDFjMmViMzViYjZlYzA4MDk1ZDVhMDA0ZWNjYTEzOWY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKK21lc3Nh
Z2VzIC0+IFJlbW90ZUNETUluc3RhbmNlUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRl
U2Vzc2lvbigpIC0+IChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIg
aWQpIFN5bmNocm9ub3VzCisgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVjdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGVudW06Ym9v
bCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkFsbG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpIC0+IChlbnVtOmJv
b2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBBc3luYworICAg
IFNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjZXJ0
aWZpY2F0ZSkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IHN1Y2Nlc3MpIEFzeW5jCisgICAgU2V0U3RvcmFnZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5
KQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0NmNmZDA1OWMzMTM5NGYxNmM2MWRlMTliMGZlM2MzNGJmYTRlNzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lvbiksIGlkZW50aWZp
ZXIpKTsKKyAgICBhdXRvIGNsaWVudCA9IG1ha2VXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkNsaWVudD4oc2Vzc2lvblByb3h5LmdldCgpKTsKKyAgICBzZXNzaW9uUHJveHktPm1f
c2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIHNlc3Npb25Q
cm94eTsKK30KKworUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY2RtKFdURk1vdmUoY2RtKSkKKyAgICAs
IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCit7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp+UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXRE
YXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFpbml0RGF0YS5idWZmZXIoKSkg
eworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcGxlbWVudCB0aGUgQ0RNUHJpdmF0
ZTo6c3VwcG9ydHNJbml0RGF0YSgpIGNoZWNrIGhlcmU6CisgICAgaWYgKCFtX2NkbS0+c3VwcG9y
dHNJbml0RGF0YShpbml0RGF0YVR5cGUsICppbml0RGF0YS5idWZmZXIoKSkpIHsKKyAgICAgICAg
Y29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXRE
YXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24g
PSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKKyAgICB9
KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5z
ZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY29tcGxldGlv
bikKK3sKKyAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7CisgICAgICAgIGNvbXBsZXRpb24o
dHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRlOjpzYW5pdGl6
ZVJlc3BvbnNlKCkgY2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFJlc3BvbnNlID0gbV9j
ZG0tPnNhbml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKTsKKyAgICBpZiAoIXNhbml0
aXplZFJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb24oZmFsc2UsIHsgfSwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0aXplZFJlc3Bv
bnNlLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0g
KGJvb2wgc2Vzc2lvbkNsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGlt
ZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUo
ZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpTdWNjZWVkZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vz
c2lvbklkLCBTdHJpbmcgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY29tcGxldGlvbikK
K3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplU2Vzc2lvbklkKCkg
Y2hlY2sgaGVyZToKKyAgICBhdXRvIHNhbml0aXplZFNlc3Npb25JZCA9IG1fY2RtLT5zYW5pdGl6
ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgIGlmICghc2FuaXRpemVkU2Vzc2lvbklkKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRj
aGVkU2Vzc2lvblR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zZXNzaW9u
LT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJh
dGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwg
V1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vl
ZGVkLCBmYWlsdXJlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgbV9zZXNzaW9uLT5jbG9zZVNlc3Npb24o
c2Vzc2lvbklkLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUg
eyBjb21wbGV0aW9uKCk7IH0pOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAg
bV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRT
ZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoZXhwaXJlZFNlc3Np
b25zRGF0YSkKKyAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7
CisgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJl
ZFNlc3Npb25EYXRhUmVmZXJlbmNlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2VlZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorewor
ICAgIG1fc2Vzc2lvbi0+c3RvcmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCk7Cit9CisKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0
YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAg
ICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdlKHR5cGUsIFdU
Rk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KQoreworICAgIGlmICghbV9jZG0pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBm
YWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKKyAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25JZENoYW5nZWQoc2Vzc2lvbklkKSwgbV9pZGVudGlmaWVyKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTgxNTM1NjZmNjQyZmM2OGEzNDU2NGU3NDY3NDUwZmI0NDlkYTk0MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRE1JbnN0YW5jZVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoKTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworICAgIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
CisgICAgLy8gVHlwZXMKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TGljZW5zZVR5cGU7CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I7CisgICAgdXNpbmcgTWVz
c2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKKyAgICB1c2luZyBT
ZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZTsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgYm9vbCwgYm9vbCk+OworICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYm
LCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wpPjsKKyAgICB1
c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2Fn
ZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHVzaW5nIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3Rv
ciYmLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGJvb2wpPjsK
KyAgICB1c2luZyBTdG9yZVJlY29yZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PjsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgQXRvbVN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJik7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4sIExv
YWRTZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYpOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKKworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAor
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOworICAg
IHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4gbV9j
ZG07CisgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gbV9zZXNzaW9uOworICAg
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41YjkzMTk2YzA5NWUwMzRiNjQyMWY4ZWU2MzhhZTA5ZWZjZTIwZTk0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBOb3RSZWZDb3Vu
dGVkIHsKKyAgICBSZXF1ZXN0TGljZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Okxp
Y2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBVcGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9u
SWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNzaW9uV2FzQ2xv
c2VkLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
cj4gY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgTG9hZFNlc3Npb24oV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luKSAt
PiAoT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+
IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25h
bDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3Vj
Y2VlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9u
TG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIEFzeW5jCisgICAgQ2xvc2VTZXNzaW9uKFN0cmluZyBz
ZXNzaW9uSWQpIC0+ICgpIEFzeW5jCisgICAgUmVtb3ZlU2Vzc2lvbkRhdGEoU3RyaW5nIHNlc3Np
b25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlKSAtPiAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXMs
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQpIEFzeW5jCisgICAgU3RvcmVSZWNvcmRPZktleVVzYWdlKFN0cmluZyBzZXNzaW9u
SWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhYzkyZmQwOTdhZjFjZjliOGZmOGJiNDBk
YjFiZWE1ZTNhODBhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0
ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBtYWtlVW5pcXVlUmVm
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZW1vdGVDRE1Db25maWd1cmF0aW9uLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiY+KHsKKyAgICAgICAgcHJpdi0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygp
LAorICAgICAgICBwcml2LT5zdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSwKKyAgICAgICAgcHJpdi0+
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSwKKyAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXNz
aW9ucygpCisgICAgfSk7CisgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Qcml2YXRlJ3Mg
cHJpdmF0ZSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TVByb3h5PihuZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2
KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE1Qcm94eTo6UmVtb3Rl
Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+JiYgcHJpdiwgVW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3Vy
YXRpb24+JiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rvcnkp
KQorICAgICwgbV9wcml2YXRlKFdURk1vdmUocHJpdikpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSkKK3sKK30KKworUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVD
RE1Qcm94eSgpID0gZGVmYXVsdDsKKworYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKK30K
KworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5z
YW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKworT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVD
RE1Qcm94eTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1Qcm94eTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV2ViQ29yZTo6Q0RNUHJp
dmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcywgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9wcml2YXRl
LT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbiksIGFjY2Vz
cywgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFJlbW90ZUNETVByb3h5OjpjcmVhdGVJ
bnN0YW5jZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciwgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb24pCit7Cisg
ICAgYXV0byBwcml2YXRlSW5zdGFuY2UgPSBtX3ByaXZhdGUtPmNyZWF0ZUluc3RhbmNlKCk7Cisg
ICAgaWYgKCFwcml2YXRlSW5zdGFuY2UgfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjb21wbGV0
aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluc3RhbmNl
ID0gUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBwcml2
YXRlSW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gaW5zdGFuY2UtPmNvbmZpZ3VyYXRpb24o
KTsKKyAgICBtX2ZhY3RvcnktPmFkZEluc3RhbmNlKGlkZW50aWZpZXIsIFdURk1vdmUoaW5zdGFu
Y2UpKTsKKyAgICBjb21wbGV0aW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworfQorCit2b2lkIFJlbW90ZUNETVByb3h5Ojpsb2FkQW5kSW5pdGlhbGl6ZSgpCit7CisgICAg
bV9wcml2YXRlLT5sb2FkQW5kSW5pdGlhbGl6ZSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzlkNTU4ZGZmYTE1MmMwZGQ1YTBjMGIyYjVhODE3MzJhMWRiNWIxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAg
LTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsK
K2VudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Oworc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zOworfQorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Oworc3RydWN0IFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOwor
CitjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4geworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYp
OworICAgIH5SZW1vdGVDRE1Qcm94eSgpOworCisgICAgY29uc3QgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQo
KTsgfQorCisgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9mYWN0b3J5LmdldCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJl
bW90ZUNETUZhY3RvcnlQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZh
dGU+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGdldFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBX
ZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OkNETVByaXZh
dGU6OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNyZWF0ZUlu
c3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
LCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZEFu
ZEluaXRpYWxpemUoKTsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2Zh
Y3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+IG1fcHJpdmF0
ZTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9u
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTU1NTg0
ZWRmMTcxYTE2NWRjNTNmMGRhZTVmMWEzOTQ4Yzc1NWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVDRE1Qcm94eSBOb3RS
ZWZDb3VudGVkIHsKKyAgICBHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKHN0cnVjdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIGVudW06
Ym9vbCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKSAtPiAo
T3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gYWNjdW11bGF0ZWRD
b25maWd1cmF0aW9uKSBBc3luYworICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hyb25vdXMKKyAgICBMb2FkQW5k
SW5pdGlhbGl6ZSgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGM5ZDJlZTQ0
NWJkNWU2YTk0YWE0OGQ1OGI5ZTA0MjEzYmM1YWYyZTAuLjg3MWRlYTYwYmI3MjgyMWM2MTM1NDE4
ZjI4N2I5NTgzNjMwZmI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTGF5ZXJI
b3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3Nh
Z2VzLmgiCkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01MjMsOSArNTI4LDkgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllcktleU5lZWRlZChVaW50OEFycmF5KikKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGlu
aXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC02OTUsNiArNzAw
LDM0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGlu
c3RhbmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGlu
c3RhbmNlSWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VBdHRhY2hlZChpbnN0YW5j
ZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNl
SWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNl
SWQpKQorICAgICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0YW5jZVByb3h5
LT5pbnN0YW5jZSgpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0
VG9EZWNyeXB0V2l0aEluc3RhbmNlKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3Rh
bmNlSWQpCit7CisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3Rh
bmNlSWQpKQorICAgICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShp
bnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKK30KKyNlbmRpZgorCisKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29s
IHNob3VsZCkKK3sKKyAgICBtX3BsYXllci0+c2V0U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRl
ZChzaG91bGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6YmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQogewogICAgIG1fcGxheWVyLT5iZWdpblNpbXVsYXRlZEhE
Q1BFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggZmFkYmUwOWE3ZDU0M2QxMWExODg2NjJhZmM3
OGFlYzRkMWU0ZjgwNy4uOGIzN2MwNDIwZGFhZjNhMjliMDc2MzA5NmZhMDA0MGFkZWRjY2IyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCkBAIC00Niw2ICs0NiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFz
cyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTQxLDYgKzE0NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAg
IHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJik7
CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYmKTsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyJiYpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldFNob3VsZENv
bnRpbnVlQWZ0ZXJLZXlOZWVkZWQoYm9vbCk7CisjZW5kaWYKKwogICAgIHZvaWQgYmVnaW5TaW11
bGF0ZWRIRENQRXJyb3IoKTsKICAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDUwMzE4OTY3ZjI4MDZkYmMwNWZi
YTc1ZmI4ZTBjNTliMzQxZmQyYmMuLjM0ZDI0MThjY2Y4YWJiZmNjZjVkYzQxODIxNDA4YTY4MGVi
YTdjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC04Miw5ICs4Miwx
NiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICMgU2V0Q0RNU2Vzc2lvbgog
ICAgIEtleUFkZGVkKCkKLSAgICAjIENkbUluc3RhbmNlQXR0YWNoZWQKLSAgICAjIENkbUluc3Rh
bmNlRGV0YWNoZWQKLSAgICAjIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UKKyNlbmRpZgor
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBDZG1JbnN0YW5jZUF0dGFjaGVkKFdl
YktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGluc3RhbmNlSWQpCisgICAgQ2RtSW5z
dGFuY2VEZXRhY2hlZChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpbnN0YW5j
ZUlkKQorICAgIEF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIgaW5zdGFuY2VJZCkKKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgU2V0U2hv
dWxkQ29udGludWVBZnRlcktleU5lZWRlZChib29sIHNob3VsZCkKICNlbmRpZgogCiAgICAgQmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCAwYmUxNTQ1MWQ5YWI4NDliOWFh
NDliNTRjMzE1OTQ0Y2Q2ZjhmNzFiLi40ZjQ5ZjNhMzg3ZDBlYTEwZjE2MWU1YWQ3OWY4ZDc4NTUw
M2QxNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaApAQCAtNjEsOSArNjEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5kaWYKIAotICAgIHZp
cnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlJik7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYp
OwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAppbmRleCBmYjFkNDI5Y2QzYjk0ODQxZDI1Njdj
MzQzMjZmODU5ODcyZjZiMDE0Li4zODU2NzVjOTM4MWNkMTIwZDliMjQ2ZWI3YzhkZGIwNzNhZTEy
ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9UcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9UcmFja1Byb3h5LmNwcApAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIFJlbW90ZVZpZGVvVHJhY2tQcm94
eTo6UmVtb3RlVmlkZW9UcmFja1Byb3h5KFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwg
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIDogbV9wbGF5
ZXIocGxheWVyKQogICAgICwgbV9pZGVudGlmaWVyKGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oCmluZGV4IGJkYjBl
YjAwN2JkYWE0N2M1ZGY2NjZiYWFlMjE5MzJkYTc5OTM5YjcuLmM2ZTE5MzRmNWRmZmIwOWVmMjli
ZGU5MTExOWNjN2MwNDg4MzgxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmgKQEAgLTMyLDE1ICszMiwyMCBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvVHJhY2tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb1Ry
YWNrUHJpdmF0ZS5oPgogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclByb3h5Owogc3Ry
dWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CiAKIGNsYXNzIFJlbW90ZVZpZGVv
VHJhY2tQcm94eSBmaW5hbAogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90
ZVZpZGVvVHJhY2tQcm94eSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4KICAgICAsIHBy
aXZhdGUgV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVDbGllbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlVmlkZW9UcmFja1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUp
CisgICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb1RyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVNZWRp
YVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVZpZGVvVHJhY2tQcm94eShwbGF5ZXIsIGlkLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCB0cmFj
a1ByaXZhdGUpKTsKICAgICB9CkBAIC01MCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpIHsgbV90cmFja1ByaXZhdGUtPnNldFNlbGVjdGVkKHNl
bGVjdGVkKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZVZpZGVvVHJhY2tQcm94eShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiwgVmlkZW9UcmFja1ByaXZhdGUmKTsKKyAgICBSZW1vdGVWaWRlb1RyYWNr
UHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlJik7
CiAKICAgICAvLyBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudAogICAgIHZvaWQgc2VsZWN0ZWRDaGFu
Z2VkKGJvb2wpIGZpbmFsOwpAQCAtNjcsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkmIG1fcGxheWVyOwogICAgIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb247Ci0gICAgUmVmPFZpZGVvVHJhY2tQcml2YXRlPiBtX3RyYWNrUHJpdmF0ZTsKKyAg
ICBSZWY8V2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQppbmRleCAwZTc3NDdjMjJlOGY1OTg5MjU0Yzk0ZmViMTg3YjkwYjNiMzRjY2E4Li4yNTZk
Yzk5MDViZjQ0NjZkMGMyYWQ1NzRkOGMzNjhhMTRiZTY5NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIzNCw2ICsyMzQsOSBAQCBkZWYgdHlwZXNfdGhh
dF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNv
cmRlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXInLAorICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXInLAorICAgICAgICAnV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVu
dGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDVhZGIzN2Q4YjViZGVmMDBhNTY2ZjRhMDJkYjY0YmI5NWRhYjAwMjQuLjhiZjhk
M2Q1NWVhNTU0NjU0N2JjMTM3ZTQyNjg0MGE0YTExZjgxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzIxNyw0ICszMjE3LDU5IEBA
IE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYgbWVzc2FnZSkKK3sKKyAgICBlbmNv
ZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
RGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBlbmNvZGVyIDw8IG1lc3NhZ2VE
YXRhOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+
ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZVR5cGUgdHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIG1ha2VPcHRpb25hbDxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+KHsgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkgfSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3Rvcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYga2V5U3RhdHVzZXMp
Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oa2V5U3RhdHVzZXMuc2l6
ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGtleVN0YXR1cyA6IGtleVN0YXR1c2VzKSB7CisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleSA9IGtleVN0YXR1cy5maXJzdC5jb3B5UmVmKCk7Cisg
ICAgICAgIGVuY29kZXIgPDwga2V5IDw8IGtleVN0YXR1cy5zZWNvbmQ7CisgICAgfQorfQorCitP
cHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Ig
a2V5U3RhdHVzZXM7CisgICAga2V5U3RhdHVzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRh
U2l6ZSk7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7ICsraSkgewor
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXk7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoa2V5KSB8fCAha2V5KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1cyBzdGF0
dXM7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAga2V5U3RhdHVzZXMudW5jaGVja2VkQXBwZW5k
KHsga2V5LnJlbGVhc2VOb25OdWxsKCksIHN0YXR1cyB9KTsKKyAgICB9CisgICAgcmV0dXJuIGtl
eVN0YXR1c2VzOworfQorI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKIH0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA4OTg2MzU4M2YzYmMxNjY5MDk3NDZkZjYxODI2NDdkNjkyNTlhZWMzLi5kMDdm
MmJmNWIyMWI2MjBiOTE5ODEwMTk5NDBlMjc0NGVkMjUwMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNTYsNiArNTYsMTEgQEAKICNpbmNs
dWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQWRkaXRpb25zLmg+CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSA8V2ViQ29yZS9D
RE1JbnN0YW5jZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNSW5zdGFuY2VTZXNzaW9uLmg+Cisj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNo
U2VuZFJpZ2h0OwpAQCAtODM2LDYgKzg0MSwxOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIE9wdGlv
bmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4geworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpNZXNzYWdlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3I+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJik7CisgICAgc3RhdGljIE9wdGlvbmFs
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC05ODQsNCArMTAwMSwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdU
RkxvZ0xldmVsPiB7CiAgICAgPjsKIH07CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
dGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpTZXNzaW9uTG9hZEZhaWx1cmU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzIDwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSwKKyAg
ICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSwK
KyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9T
ZXNzaW9uRGF0YSwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2Fk
RmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkLAorICAgIFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcgorICAgID47Cit9
OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
SERDUFN0YXR1cz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXMgPAorICAgIFdlYkNv
cmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVzLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpI
RENQU3RhdHVzOjpVbmtub3duLAorICAgIFdlYkNvcmU6OkNETUluc3RhbmNlOjpIRENQU3RhdHVz
OjpWYWxpZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0UmVz
dHJpY3RlZCwKKyAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0RG93
bnNjYWxlZAorICAgID47Cit9OworCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCBlZWRiN2U2ZGQ5YTllOWZhMjA3Y2U4YThkM2I2MjJjZDJmMGM5M2RmLi42ZDBl
OGM2OGEwMjM4ODczYjY4NjQyMzgzZTViN2JjNWFhMDYzN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI3
LDYgKzI3LDEwIEBAIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKK0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmNwcApAQCAtNDEsNiArNDUsNyBAQCBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiAKKwogTmV0d29ya1Byb2Nlc3MvQWRDbGlj
a0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRy
YWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
CkBAIC01NDEsNiArNTQ2LDEwIEBAIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAK
K1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUZhY3RvcnkuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgQG5v
LXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxNWM1MjRmMzYyMTc3ZGRjNzEyNzI3NjI1NTc4ODcwNGNlYjM5ZGEzLi41M2VkZTU2NmQzZGU4
ZTk5NzU0Yjk2NjI1NDY0YjYxZWIxNzQ4YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MDYsNiArMTcwNiw3IEBACiAJCUNEMTlE
MkVBMjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTlEMkU4MjA0NjQw
NkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDI4NjVFRTIyNTU1NjIwMDA2
MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFQzIyNTU1NjIwMDA2MDZBQzcgLyogUHJv
Y2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmggKi87IH07CiAJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFD
NyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI4NjVFRDIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vz
c1Rhc2tTdGF0ZU9ic2VydmVyLm1tICovOyB9OworCQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NBMzUg
LyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDY2MTgxMjQwMTA1NjQwMDQ3
Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQlDRDQ5MUIwODFFNzBEMDVGMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjA2
MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovOyB9OwogCQlD
RDQ5MUIwRDFFNzMyRTREMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q0OTFCMEIxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0Q0OTFCMEUxRTczMkU0RDAwMDA5MDY2IC8qIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDkxQjBDMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CkBAIC0xNzI4LDYgKzE3MjksMjAgQEAK
IAkJQ0RBMjlBMkIxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
TWVzc2FnZXMuaCAqLzsgfTsKIAkJQ0RBOTNEQjAyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1
bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8q
IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovOyB9OworCQlDREFD
MjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjIyM0ZCNThGMjAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCAqLzsgfTsKKwkJQ0RBQzIwQzMyM0ZD
MkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQjYyM0ZDMkY3MzAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oICovOyB9OworCQlDREFDMjBDNDIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEI3MjNGQzJGNzMwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZS5oICovOyB9OworCQlDREFDMjBDNTIzRkMyRjc1MDAyMURFRTMgLyog
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNvbmZp
Z3VyYXRpb24uaCAqLzsgfTsKKwkJQ0RBQzIwQzcyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIw
QkEyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETS5oICovOyB9OworCQlDREFDMjBDOTIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkMyM0ZDMkY3
NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLzsgfTsK
KwkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQkQy
M0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oICovOyB9OworCQlD
REFDMjBDRDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzAyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUZhY3RvcnkuaCAqLzsgfTsKKwkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8q
IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovOyB9OworCQlDREFDMjBDRjIzRkMy
Rjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwQzIyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUlkZW50aWZpZXIuaCAqLzsgfTsKKwkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8q
IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFDMjBGMjIzRkMzODNBMDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RB
QzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBQzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OworCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKKwkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCUNEQzI4MzFEMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5T
dGFja1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAqLzsg
fTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
Q0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgg
Ki87IH07CiAJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTExQ0JDNDgy
RjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi87IH07CkBAIC00OTk3LDYgKzUwMTIsMTAgQEAK
IAkJQ0QxOUQyRTkyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3Rp
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuY3Bw
OyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUMyMjU1NTYyMDAwNjA2QUM3IC8q
IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyODY1RUQyMjU1
NTYyMDAwNjA2QUM3IC8qIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgwMjQwMTA1NjQwMDQ3
Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDY2MTgxMjQwMTA1NjQwMDQ3Q0EzNSAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkx
QjA1MUU3MEQwNUYwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDkxQjA2MUU3MEQwNUYwMDAwOTA2
NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRDQ5MUIwQTFFNzMyRDEyMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDM4LDYgKzUwNTcsNDMgQEAKIAkJQ0RB
MjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUNEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91
Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3Vj
aFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3Jl
ZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpY1BhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVu
VG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnlQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMg
LyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDRE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlQ0RNUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREFDMjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEFEMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQUUyM0ZCNTgy
QjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIxMjNGQjU4
RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEIyMjNGQjU4RjIwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQjMyM0ZCNThGMjAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEI2MjNGQzJGNzMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI3MjNGQzJGNzMwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVDRE1JbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBCODIzRkMyRjczMDAyMURFRTMgLyogUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEI5MjNGQzJGNzMwMDIxREVFMyAvKiBS
ZW1vdGVDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUNETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFD
MjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUNETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REFDMjBCQjIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEJFMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwQkYyM0ZDMkY3NTAw
MjFERUUzIC8qIFJlbW90ZUNETS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBD
MDIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQUMyMEMxMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QUMyMEMyMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUlkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBQzIwRUMyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRTIzRkMzODM5MDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBFRjIzRkMzODM5MDAyMURF
RTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyog
UmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjEyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEYyMjNGQzM4M0EwMDIxREVFMyAv
KiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBQzIwRjMyM0ZDMzgzQTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1v
dGVDRE1Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUNETVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
QzIwRjUyM0ZDMzgzQjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmll
dy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaDsgcGF0aCA9IGlvcy9m
dWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREMyODMxQzIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBwYXRo
ID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREMzODJGNzE3MjExNTA2MDA4QTJGQzMgLyogQ0ZOZXR3b3JrLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ0ZOZXR3b3JrLmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGFic29sdXRlPiI7IH07CkBAIC01MzIyLDYgKzUzNzgsMjAgQEAKIAkJCQk5QjVCRUMyOTI0
MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLywKIAkJ
CQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmggKi8sCiAJCQkJOUI1QkVDMkUyNDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCRjIzRkMyRjc1MDAyMURFRTMg
LyogUmVtb3RlQ0RNLmNwcCAqLywKKwkJCQlDREFDMjBCQTIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNLmggKi8sCisJCQkJQ0RBQzIwQjgyM0ZDMkY3MzAwMjFERUUzIC8qIFJlbW90ZUNETUNv
bmZpZ3VyYXRpb24uaCAqLywKKwkJCQlDREFDMjBCOTIzRkMyRjczMDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeS5jcHAgKi8sCisJCQkJQ0RBQzIwQzAyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUZhY3RvcnkuaCAqLywKKwkJCQlDREFDMjBDMjIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSWRlbnRpZmllci5oICovLAorCQkJCUNEQUMyMEJCMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1v
dGVDRE1JbnN0YW5jZS5jcHAgKi8sCisJCQkJQ0RBQzIwQjcyM0ZDMkY3MzAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlLmggKi8sCisJCQkJQ0RBQzIwQzEyM0ZDMkY3NTAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oICovLAorCQkJCUNEQUMyMEI2MjNGQzJGNzMw
MDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCAqLywKKwkJCQlDREFDMjBC
RTIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCAqLywKKwkJ
CQlDREFDMjBCRDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgg
Ki8sCisJCQkJQ0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovLAogCQkJCTA3QjkzRkY1MjNBRjBD
QjgwMDM2RjhFQSAvKiBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkw
NzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAq
LywKIAkJCQkwNzkyMzEzNDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmggKi8sCkBAIC01MzUyLDYgKzU0MjIsMTggQEAKIAkJCQk5QjEyMjlDRjIzRkYyODE0MDA4
Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJMDcxQkM1N0UyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAg
Ki8sCiAJCQkJMDcxQkM1N0YyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94
eS5oICovLAorCQkJCUNEQUMyMDc5MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHkuY3BwICovLAorCQkJCUNEQUMyMDc4MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCAqLywKKwkJCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMgLyogUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNEQUMyMEIzMjNGQjU4RjIwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCAqLywKKwkJCQlDREFDMjBCMjIzRkI1
OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oICovLAorCQkJCUNEQUMyMEIx
MjNGQjU4RTIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluICov
LAorCQkJCUNEQUMyMEFGMjNGQjU4MkIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHAgKi8sCisJCQkJQ0RBQzIwQUUyM0ZCNTgyQjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmggKi8sCisJCQkJQ0RBQzIwQUQyM0ZCNTgyQjAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNE
QUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8sCisJCQkJQ0RB
QzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8sCisJCQkJQ0RBQzIw
ODYyM0ZCMjE1ODAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJ
CTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAgKi8sCiAJCQkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmggKi8sCiAJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtOTc0OSw2ICs5
ODMxLDIxIEBACiAJCQkJMUEwNDNCNUMxMjRENUU5RDAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUE4RUZBNkUxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdp
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2
N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNEQUMyMEYyMjNGQzM4M0EwMDIx
REVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJ
CUNEQUMyMEYzMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdl
cy5oICovLAorCQkJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFDMjBGNTIzRkMzODNCMDAyMURFRTMg
LyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RB
QzIwRUIyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5o
ICovLAorCQkJCUNEQUMyMEY2MjNGQzM4M0IwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0Q0NjYxODEyNDAxMDU2NDAwNDdDQTM1IC8q
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0Q0
NjYxODIyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2Vz
LmggKi8sCisJCQkJQ0Q0NjYxODAyNDAxMDU2NDAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNEQUMyMEVDMjNGQzM4MzgwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CisJCQkJQ0RBQzIwRUQyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREFD
MjBFRjIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAorCQkJCUNEQUMyMEY0MjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJQ0RBQzIwRjAyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5
TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJ
CTBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXMuaCAqLywKIAkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTEwNjU1LDYgKzEw
NzUyLDE2IEBACiAJCQkJOUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlDRDIzRkYyNUYy
MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCNUJFQzJBMjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM3MjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE0uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM1MjNGQzJGNzUwMDIxREVFMyAv
KiBSZW1vdGVDRE1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMjBDRDIz
RkMyRjc1MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Q0RBQzIwQ0YyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEQUMyMEM0MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5j
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQ0UyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBQzIwQzMy
M0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0RBQzIwQjQyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNl
UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMyMEM5MjNG
QzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2
NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTEyMzU0LDYgKzEyNDYxLDExIEBACiAJCQkJMkQ1NEMzMUIyMTJG
NERBNjAwNDlDMTc0IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RDI4NjVFRjIyNTU1NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUIxMjI5Q0UyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQUMyMEY3MjNGQzcy
NkMwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q0NjYx
ODMyNDAxMEE2NzAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREFDMjBGOTIzRkM3MjZDMDAyMURFRTMgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENzJBMUZBMjEyQkY0NkUwMDUx
N0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQzE4RkI0MjE4QTZF
OUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCBkZmI5YjlhOTM4Yjk4NWQyODBhY2RlZGEwNDhiYzVhNjZmNzdlNjFiLi5mOWI5
NzAxODE3MmRhNTJiMWM3MDU0OTM5NTkzYzIxMWRmZWQwMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzMs
NiArMzMsOCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgogI2luY2x1ZGUgIkxpYldl
YlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVt
b3RlQ0RNUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC00NCw2ICs0NiwxMCBAQAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25NZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc1LDYgKzgxLDEzIEBAIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXImIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpzYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitSZW1vdGVD
RE1GYWN0b3J5JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y2RtRmFjdG9yeSgpCit7CisgICAgcmV0
dXJuICpXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+
KCk7Cit9CisjZW5kaWYKKwogYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKQEAgLTEwMCw2
ICsxMTMsMTIgQEAgYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWMKICAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNlbmRpZgorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJl
bW90ZUNETUZhY3Rvcnk+KCktPmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogI2VuZGlmCiAgICAgcmV0dXJu
IG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaAppbmRleCA2YWNkY2JmMzk1NDUxYjZiNGM5NThlY2M5MmI1MjAxNmI2Nzc3Mjg5
Li4yYjU3MmMxYmFjYmZhNmI2YjI2ZjM1NjBjMjYyYTlhNDFiMGM3NWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0z
OSw2ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5OworCiBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+
IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
CkBAIC01OCw2ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUNETUZhY3RvcnkmIGNkbUZhY3Rv
cnkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApp
bmRleCBkODA5MDEwZDFiNWU0Mzc2OTFjNDI4MGQ2YTQ3MjM5MDg0ZjNmZTczLi45NWU3M2E2NTA5
YTJhMzI5MzBlYzk0Zjk1YWMxMzZjNmYwODBmNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwCkBAIC00OSw2ICs0OSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lu
Y2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVk
aWE7CkBAIC05MTIsMTkgKzkxNiwyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
a2V5QWRkZWQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2Um
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RN
SW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGlz
PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDZG1JbnN0YW5jZUF0dGFjaGVkKGRv
d25jYXN0PFJlbW90ZUNETUluc3RhbmNlPihpbnN0YW5jZSkuaWRlbnRpZmllcigpKSwgbV9pZCk7
CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVk
KENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5j
ZURldGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmIChpczxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpKQorICAgICAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Q2RtSW5zdGFu
Y2VEZXRhY2hlZChkb3duY2FzdDxSZW1vdGVDRE1JbnN0YW5jZT4oaW5zdGFuY2UpLmlkZW50aWZp
ZXIoKSksIG1faWQpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1w
dFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5z
dGFuY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoaXM8UmVtb3RlQ0RNSW5z
dGFuY2U+KGluc3RhbmNlKSkKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OkF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoZG93bmNh
c3Q8UmVtb3RlQ0RNSW5zdGFuY2U+KGluc3RhbmNlKS5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkK
QEAgLTkzMiw2ICs5MzksMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRp
bmdGb3JLZXlDaGFuZ2VkKCkKICAgICBtX3BsYXllci0+d2FpdGluZ0ZvcktleUNoYW5nZWQoKTsK
IH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2Um
JiBpbml0RGF0YSkKK3sKKyAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSk7CisgICAgbV9wbGF5ZXItPmlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0
YUJ1ZmZlcikpOworfQorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0Zv
cktleSgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTkzOSw2ICs5NTIsMTMg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXkoKSBjb25zdAog
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91
bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKGJvb2wgc2hvdWxkKQoreworICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRTaG91bGRDb250aW51
ZUFmdGVyS2V5TmVlZGVkKHNob3VsZCksIG1faWQpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApp
bmRleCA1NTlmZDY1MDIwODhlYmIzN2Q3NmVhN2Q2OTM1NTcyNjM4ZjIxMDIzLi43YWI2NjUyOWE1
MTk3MzU4MzFjZmJjYzg5OTE4YmJhNzc3YWM1Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogICAgIHZvaWQgd2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKKyAgICB2b2lkIGluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYsIElQQzo6RGF0YVJlZmVyZW5jZSYm
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTMx
NSw2ICszMTYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBm
aW5hbDsKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBzZXRTaG91bGRDb250aW51ZUFmdGVyS2V5
TmVlZGVkKGJvb2wpIGZpbmFsOworI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbiopIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbgppbmRleCBhNTA3NzZkZGFhNDI3NmMxYzZkZGU3ZTVkYjA3YmY5OGE2N2FlOGY1Li45
NDQ4ZGUwMmYxYWM5ZTQ2NDM4MzNjMmQ1NTM3NTljOTgzMGI4MTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAtNzUsNiArNzUsNyBAQCBtZXNzYWdl
cyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogICAgIFdhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKKyAgICBJbml0
aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChTdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgaW5pdERhdGEpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5MWI0MGYzYjljNzViM2MxMTBiNjM2ZjY4Y2E1NzA1YTI1
YjU0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmNwcApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE0uaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIlJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNUmVzdHJpY3Rp
b25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNPiBSZW1vdGVDRE06OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZmFj
dG9yeSwgUmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYg
Y29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETT4o
bmV3IFJlbW90ZUNETShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSwgV1RGTW92ZShjb25m
aWd1cmF0aW9uKSkpOworfQorCitSZW1vdGVDRE06OlJlbW90ZUNETShXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSWRlbnRpZmllciYmIGlkLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZh
Y3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1
cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNOjpn
ZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25m
aWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAg
ICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpHZXRTdXBwb3J0ZWRDb25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbiksIGFjY2VzcyksIFdURk1vdmUoY2FsbGJhY2spLCBt
X2lkZW50aWZpZXIpOworfQorCisKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbW90ZUNETTo6
c3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RN
OjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5
cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVtb3RlQ0RN
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0
ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2Uo
KS4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ0RNUmVxdWlyZW1lbnQgUmVtb3RlQ0RNOjpkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENETVJlcXVp
cmVtZW50OjpOb3RBbGxvd2VkOworfQorCitDRE1SZXF1aXJlbWVudCBSZW1vdGVDRE06OnBlcnNp
c3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZDsKK30KKworYm9vbCBSZW1v
dGVDRE06OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFi
bGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZWZQdHI8Q0RNSW5zdGFu
Y2U+IFJlbW90ZUNETTo6Y3JlYXRlSW5zdGFuY2UoKQoreworICAgIGlmICghbV9mYWN0b3J5KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciBpZDsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6Q3JlYXRlSW5zdGFuY2UoKSwgTWVzc2FnZXM6
OlJlbW90ZUNETVByb3h5OjpDcmVhdGVJbnN0YW5jZTo6UmVwbHkoaWQsIGNvbmZpZ3VyYXRpb24p
LCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBSZW1vdGVDRE1JbnN0YW5jZTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9y
eS5nZXQoKSksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9p
ZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRp
YWxpemUoKSwgbV9pZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3Rl
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
Cit7CisgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4KKyAgICByZXR1cm4gcmVz
cG9uc2UuY29weSgpOworfQorCitPcHRpb25hbDxTdHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBj
aGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OmxvYWRTZXNzaW9uKCkuCisgICAgcmV0dXJuIHNlc3Npb25JZDsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI2ZDZmMzY5NzliMDQ1MmNmOTZhNTJkMThmNmFkMGI3ZjMzNDhlOGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5
LmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE0gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJp
dmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE0+IGNy
ZWF0ZShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUlkZW50aWZpZXImJiwg
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE0oKSA9IGRl
ZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4mJiwgUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOwor
CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nl
c3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKworICAgIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhS
ZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Np
b25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6Q0RN
UmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmlj
dGlvbnMmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0
ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7
CisgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0
aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3Vw
cG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LnN1cHBvcnRlZFJvYnVzdG5lc3NlczsgfQorICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXM7IH0KKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNTZXNzaW9uczsgfQorCisgICAgV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRp
b247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NjJjNDY0ZmRmZGNkOGMzNTc1NmIwZTM4ZGFkMGY4OTM5MDU4ODY3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0
aW9uLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24g
eworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgIFZl
Y3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgYm9vbCBzdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlczsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnM7CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7
CisgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydGVkUm9idXN0bmVzc2VzOworICAgICAgICBlbmNv
ZGVyIDw8IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOworICAgICAgICBlbmNvZGVyIDw8IHN1
cHBvcnRzU2Vzc2lvbnM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Cisg
ICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzOworICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZEluaXRE
YXRhVHlwZXM7CisgICAgICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcykKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21T
dHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9y
dGVkUm9idXN0bmVzc2VzOworICAgICAgICBpZiAoIXN1cHBvcnRlZFJvYnVzdG5lc3NlcykKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNT
ZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFs
PGJvb2w+IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXNz
aW9uczsKKyAgICAgICAgaWYgKCFzdXBwb3J0c1Nlc3Npb25zKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUo
KnN1cHBvcnRlZEluaXREYXRhVHlwZXMpLAorICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVk
Um9idXN0bmVzc2VzKSwKKyAgICAgICAgICAgICpzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcywK
KyAgICAgICAgICAgICpzdXBwb3J0c1Nlc3Npb25zLAorICAgICAgICB9fTsKKyAgICB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZjJkM2Q1YzYxMGFmNTRhZDFkM2VmNGZhNjFjNDU5NjY2NTI5N2MxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
LmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1v
dGVDRE1GYWN0b3J5OjpSZW1vdGVDRE1GYWN0b3J5KFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAg
OiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKworUmVtb3RlQ0RNRmFjdG9yeTo6flJlbW90ZUNE
TUZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6cmVnaXN0ZXJG
YWN0b3J5KFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGZhY3RvcmllcykKK3sKKyAgICBmYWN0b3JpZXMu
YXBwZW5kKHRoaXMpOworfQorCitjb25zdCBjaGFyKiBSZW1vdGVDRE1GYWN0b3J5OjpzdXBwbGVt
ZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVDRE1GYWN0b3J5IjsKK30KKworR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkK
K3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9
CisKK2Jvb2wgUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCit7CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RN
RmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVt
b3RlQ0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwg
eyB9KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJp
dmF0ZT4gUmVtb3RlQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KQoreworICAgIFJlbW90ZUNETUlkZW50aWZpZXIgaWQ7CisgICAgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETShr
ZXlTeXN0ZW0pLCBNZXNzYWdlczo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE06OlJl
cGx5KGlkLCBjb25maWd1cmF0aW9uKSwgeyB9KTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gUmVtb3RlQ0RNOjpjcmVhdGUobWFrZVdlYWtQdHIodGhp
cyksIFdURk1vdmUoaWQpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKK30KKwordm9pZCBSZW1v
dGVDRE1GYWN0b3J5OjphZGRTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIgaWQsIFJlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbikKK3sKKyAgICBB
U1NFUlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwg
V1RGTW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNRmFjdG9yeTo6cmVtb3ZlU2Vz
c2lvbihSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VS
VChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOwor
fQorCit2b2lkIFJlbW90ZUNETUZhY3Rvcnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQorICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg5ZWQwNjAw
MWM2NjNiYWYxODVkYjkzMTc0OTdlOTJjZmJmYzA2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCkBAIC0wLDAg
KzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNldHRpbmdzOworfQorCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBS
ZW1vdGVDRE07CitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb247CitjbGFzcyBXZWJQcm9j
ZXNzOworCitjbGFzcyBSZW1vdGVDRE1GYWN0b3J5IGZpbmFsCisgICAgOiBwdWJsaWMgV2ViQ29y
ZTo6Q0RNRmFjdG9yeQorICAgICwgcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZUNETUZhY3RvcnkoV2Vi
UHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnkoKTsKKworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9u
JiBncHVQcm9jZXNzQ29ubmVjdGlvbigpOworCisgICAgdm9pZCByZWdpc3RlckZhY3RvcnkoVmVj
dG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlU2Vzc2lv
bk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB2b2lkIGFk
ZFNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbj4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgZmluYWw7Cisg
ICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIEhh
c2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNPj4gbV9jZG1zOworICAgIFdlYlByb2Nlc3Mm
IG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJlZTNhMzgxOWMxNzA3YjU1OGIzZmQ5YWFhODgxNjMxNTgzOTJmYWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBS
ZW1vdGVDRE1JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1JZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUxYTBlMGI1
MmQyZGI1YjM2NmU4YWI2Njk2OGM1NjE0NjJlZGQ5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC0w
LDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUNETUluc3RhbmNlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxSZW1v
dGVDRE1JbnN0YW5jZT4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUNE
TUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaWQsIFJl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2UoV1RGTW92ZShmYWN0b3J5KSwgV1RG
TW92ZShpZCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKK30KKworUmVtb3RlQ0RNSW5zdGFu
Y2U6OlJlbW90ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5
LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpZCwgUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rv
cnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQorICAgICwgbV9jb25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCit7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmll
cnMgZGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUgcGVyc2lzdGVu
dFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZmFjdG9y
eSkgeworICAgICAgICBjYWxsYmFjayhGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
LCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKK30K
Kwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVByb3h5OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZS5nZXQoKSks
IFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQorewor
ICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OlNldFN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KSwgbV9pZGVudGlm
aWVyKTsKK30KKworUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gUmVtb3RlQ0RN
SW5zdGFuY2U6OmNyZWF0ZVNlc3Npb24oKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIgaWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lv
bigpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lvbjo6UmVw
bHkoaWQpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y3JlYXRl
KG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIFdURk1vdmUoaWQpKTsKKyAgICBtX2ZhY3Rv
cnktPmFkZFNlc3Npb24oaWQsIHNlc3Npb24uY29weVJlZigpKTsKKyAgICByZXR1cm4gc2Vzc2lv
bjsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTVmNDliOTczOWQy
NDc5ZDU1NWRmOGZiMDI3ZWRmZWNhOWMzNDA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnkuaCIKKyNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNs
dWRlICJSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NE
TUluc3RhbmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0
YW5jZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDRE1JbnN0YW5jZSB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFuY2UoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxS
ZW1vdGVDRE1JbnN0YW5jZT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVt
b3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
biYmKTsKKworICAgIGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFJlbW90
ZUNETUluc3RhbmNlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyJiYsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKTsKKworICAg
IEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LmtleVN5c3RlbTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBmaW5hbDsKKworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9m
YWN0b3J5OworICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cisg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKK307CisK
K30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DRE1fSU5TVEFOQ0UoV2ViS2l0OjpSZW1vdGVD
RE1JbnN0YW5jZSwgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkltcGxlbWVudGF0aW9uVHlwZTo6UmVt
b3RlKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY1MzJkNzJlN2NlNGI4NTNmMmQzYjkzNDU1ZTE5MjgxYzQxOWZhNDMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24geworICAgIFN0cmluZyBrZXlTeXN0ZW07CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGtleVN5c3RlbTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7Cisg
ICAgICAgIE9wdGlvbmFsPFN0cmluZz4ga2V5U3lzdGVtOworICAgICAgICBkZWNvZGVyID4+IGtl
eVN5c3RlbTsKKyAgICAgICAgaWYgKCFrZXlTeXN0ZW0pCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqa2V5
U3lzdGVtKSwKKyAgICAgICAgfX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZm
ZGU2OTFjM2U4OTViODg1OWU2MjA1YTcxZTExNWZhOWI0ZmUwYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5j
bHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVDRE1J
bnN0YW5jZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA1Y2NiZTIzOTZmOWIyZjg2YzljNmIy
NmYzM2UxYmEyMzViMDE3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtMCwwICsxLDE0
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK1JlZjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24+IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUo
aWQpKSk7Cit9CisKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0
b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKK3sKK30KKwordm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsK
KyAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwg
ZmFsc2UsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlcXVlc3RMaWNlbnNlKHR5
cGUsIGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkpLCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtZXNzYWdlLmJ1ZmZlcigpKSB7Cisg
ICAgICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygp
LCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBjYWxsYmFjayhtZXNzYWdlLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHNlc3Npb25JZCwg
bmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsK
KyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFs
c2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBXVEZN
b3ZlKHJlc3BvbnNlKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNz
aW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBt
ZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHNlc3Np
b25XYXNDbG9zZWQsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKGNoYW5nZWRFeHBpcmF0
aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsK
KyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok90
aGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklk
LCBvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE9wdGlvbmFsPEtleVN0
YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBp
cmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNz
aW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUo
bWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCwgbG9hZEZhaWx1cmUpOwor
ICAgIH0sIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Q2xvc2VTZXNzaW9uKHNlc3Npb25JZCksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICB9LCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBpZiAoIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayh7IH0sIFdURjo6bnVsbG9wdCwg
RmFpbGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lv
bklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0
b3ImJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgT3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICBp
ZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCisgICAgICAgICAgICByZWFs
TWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSks
IHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CisgICAgfSwgbV9pZGVudGlmaWVyKTsK
K30KKwordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2Fn
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6U3Rv
cmVSZWNvcmRPZktleVVzYWdlKHNlc3Npb25JZCksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJiBrZXlTdGF0dXNlcykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT51cGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSk7Cit9CisKK3ZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQoreworICAg
IGlmIChtX2NsaWVudCAmJiBtZXNzYWdlLmJ1ZmZlcigpKQorICAgICAgICBtX2NsaWVudC0+c2Vu
ZE1lc3NhZ2UodHlwZSwgbWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKwor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
c2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYyZDA1ZjhiZjk2M2VjYzUxMjYzMmEzYWFjYzA5
MDQ0OWViNWM3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTAsMCArMSw3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NETUluc3RhbmNlU2Vzc2lvbi5o
PgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24g
ZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24oKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJl
bW90ZUNETUZhY3Rvcnk7CisgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVt
b3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsK
KworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3Nh
Z2VzCisgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJik7CisgICAg
dm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJiYpOworICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJp
bmcmKTsKKworICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsgfQorICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsg
fQorICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBmaW5hbDsK
KworICAgIFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YzIzOTJlN2VmODYyMDQ2MjFkMjg0MTQzOGI1ZWRm
NGQzODE1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMy
IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24gTm90UmVmQ291bnRlZCB7CisgICAgVXBkYXRlS2V5U3RhdHVz
ZXMoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVz
ZXMpCisgICAgU2VuZE1lc3NhZ2UoZW51bTp1aW50OF90IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBl
IHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBtZXNzYWdlKQorICAgIFNlc3Np
b25JZENoYW5nZWQoU3RyaW5nIHNlc3Npb25JZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NmFjZDEyNjVhZjBj
ODQ2Mzg4ZTIzZjljY2ExNmQ5MDIzMzhmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IDJhYWU1ZTU0NDUxMDg0NzliZDNjZDMzOWFmYTZi
ZjZkMmRkYWJjZjYuLjVkN2E4YjhkMTEyNGIyYTUyOGFkNzNiZGM5NmQ5YTk3ODBkYzIwNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJh
dGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRp
YVN0cmF0ZWd5LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCIKKyNp
bmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVk
aW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CkBAIC01MSw3
ICs1MywxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4gV2Vi
TWVkaWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdAogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCiB2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyQ0RNRmFjdG9yaWVzKFZlY3Rv
cjxXZWJDb3JlOjpDRE1GYWN0b3J5Kj4mIGZhY3RvcmllcykKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY2Rt
RmFjdG9yeSgpLnJlZ2lzdGVyRmFjdG9yeShmYWN0b3JpZXMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisgICAgV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZh
Y3RvcmllcyhmYWN0b3JpZXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTcwYTliYjIzN2FjMzk4ZDZlMTgyZjllN2U5
ZTM3NzQ2NDFjYjk4ZC4uNzczYTU5Y2RhMWQ0OWI2ZDVjZGFlYWU1Yjc2YjJhMGRmYmE5ZTZmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMy
Miw2ICszMjIsOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgorI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWYwNGVi
OWFmY2I2NGZmNDk4ODQxYTQ2YTQ3MTcxNDk3MmVjNjlhZC4uNTFjMmY1ZTUzYjM0MGMyMjA1Zjc4
OWI0YjM3M2EyZTUwN2JiNmViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtMTc0LDYgKzE3NCwxMCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjcy5oIgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnkuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1f
c2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2RlZmluZSBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nlc3Npb25JRD0lIiBQUkl1NjQg
Il0gV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQsICMjX19W
QV9BUkdTX18pCiAKQEAgLTI0MCw2ICsyNDQsMTAgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vzcygp
CiAgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAg
ICBhZGRTdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCk7CisjZW5kaWYKKwogICAgIEdpZ2Fj
YWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>